Plugin „iris-plugin-dev“: Plugins von der Idee bis zur Veröffentlichung entwickeln (State Machine) #99
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/iris-plugins#99
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Warum
Ein Plugin von der Idee bis in die Registry zu bringen ist ein langer, mechanischer Weg (Manifest, Kategorie, Build-Skript, Skills,
store/, Version, Dry-Run, Veröffentlichen, Issue und Stand je PR). Ein LLM neigt dazu, aus einer vagen Idee sofort zu bauen und zu veröffentlichen, und lässt dabei Pflichtfelder, Namenskollisionen, Datenschutz in Store-Material oder den Praxistest aus. Das Pluginiris-plugin-devführt den Autor deshalb durch feste Stufen, schaltet sie erst nach Belegen oder Freigabe frei und erledigt alles Mechanische per Skript, damit der Kontext des LLM klein bleibt.Entscheidungen (grill-me, 2026-10-16)
.irisplugin). Änderungen an bestehenden Plugins sind ein zweites Profil derselben State Machine (Version 2).Idee → Grill-me → Plan → Gerüstim Workspace des Chats (noch ohne Git); danachRepo anlegen → Umsetzung → Geprüft → Store-Material → Veröffentlicht.AUFTRAG.md,plugin_dev.py --vorhaben <id>, Zustand in.dev/state.json) und nimmt den Chat später zum Prüfen und Veröffentlichen wieder auf (vorhaben holen).iris/iris-plugins, BranchNN-slug, Plugin, Issue (Warum/Wie), PR. Nach jedem PR ein ausführlicher Stand-Kommentar im Issue (ship -rschreibt zusätzlich PR-Link und Commits). Kein Bezug zum lokalen Checkout.iris-…, keine Skill-Namenskollision), Paket baut,publish-plugins.sh --dry-runsauber, keine TODO-Marker; Tests untertests/und grün, wenn der Plan eigene Skripte nennt; dazu ein vom Nutzer bestätigter Praxistest.docs/*.md): Der Chat sagt „Die Doku liegt unter<Pfad>“, statt Regeln zu laden. Der Inhalt zieht aus README Kapitel 15, 19, 20 um; die README verweist nur noch darauf.iris-plugin-dev, Kategoriedevelopment, Mac und Linux; Skripte in Python (nur Standardbibliothek);.dev/state.jsonzieht beim Repo-Anlegen ins Repo mit; Veröffentlichen klont Plugin- und Registry-Repo frisch und nutztpublish-plugins.shvonmain(Voraussetzung: gemergter PR); Store-Material (Icon, Kurztext, Store-Seite) ist für „Veröffentlicht“ Pflicht, diecustom.mdoptional, aber vorher auf private Daten gescannt.Wie
Plan, Stufen, Befehle, Zustandsformat und Bauabschnitte:
plugins/iris-plugin-dev/PLAN.md. Die Beschreibung bleibt die Spezifikation; der Verlauf steht in den Kommentaren.Nicht Teil dieser Version
Änderungen an bestehenden Plugins, Blender-Addons und andere Projektarten.
PR #100 gemergt: docs(plugin-dev): Plan für das Plugin iris-plugin-dev (State Machine) (#99)
#100
Commits:
Stand: Plan steht (2026-10-16)
Plan eingereicht (
plugins/iris-plugin-dev/PLAN.md,e8fe101): Stufen, Befehle, Zustandsformat, Pflichtthemen, Gerüst, Repo anlegen, Veröffentlichen, Datenschutz-Scan, Bauabschnitte 1–8. Noch nichts gebaut. Offen: Lage und Lebensdauer des Chat-Workspaces; ob Hermes das Token aus den Plugin-Einstellungen zuverlässig an das Skript reicht; Praxistest bei reinen Skill-Plugins (nur Wortlaut als Beleg). Nächster Schritt: Abschnitt 1 (Kern mit Zustand und Stufentabelle).PR #101 gemergt: docs(plugin-dev): Repo ab Plan-Freigabe, Weiterarbeiten auf der Dev-Maschine (#99)
#101
Commits:
Änderung am Plan: Repo früh, Weiterarbeiten außerhalb des Chats
Auf Alfs Wunsch: „Leg für dieses Plugin ein Repo an“ geht ab der Plan-Freigabe (Gerüst entsteht dabei gleich). Das Repo ist danach die Quelle der Wahrheit; Umsetzung, Prüfung und Store-Material laufen in VS Code/Claude Code auf einer Dev-Maschine (
AUFTRAG.mdaus dem Plan,plugin_dev.py --vorhaben <id>, Belege mit Fingerabdruck in.dev/state.json), der Chat wird zum Prüfen/Stand/Veröffentlichen mitvorhaben holenwieder aufgenommen. Bauabschnitt „Forgejo“ rückt auf Platz 4 vor. Offen neu: Zusammenführen des Zustands, wenn Chat und Dev-Maschine gleichzeitig Belege schreiben (Entwurf: Fingerabdruck entscheidet).PR #102 gemergt: feat(plugin-dev): Kern — Zustand, Stufentabelle, Fingerabdrücke, neu/status/doku (#99)
#102
Commits:
PR #103 gemergt: feat(plugin-dev): grill-me — Pflichtthemen, Protokoll, Freigabe; Kern in eigenes Modul (#99)
#103
Commits:
Stand: Bauabschnitte 1 und 2 (2026-10-16)
Kern (
e79bda3) und grill-me (PR folgt oben):skills/iris-plugin-dev/mitplugin_dev.py(CLI),pd_kern.py(Zustand, Stufentabelle als Daten, Fingerabdrücke) undpd_grill.py. Die Stufe wird nie gespeichert, sondern aus Zustand und Dateien berechnet; eine Freigabe oder ein Beleg gilt nur, solange der Fingerabdruck seines Bereichs (grill, plan, paket, code, store) derselbe ist. Es gibt keinen allgemeinen Befehl „Freigabe setzen“; Freigaben entstehen nur in ihrer Stufe und nur, wenn alle früheren gelten (Praxistest zusätzlich erst nach dem Prüfbeleg).grill-me: 9 Pflichtthemen, Protokoll
.dev/grill.json,zweckundnamenicht überspringbar, „nicht nötig“ nur mit Grund,grill fertigerst ohne offenes Thema.Geprüft: 31 Tests grün (
python3 -m unittest discover -s testsiniris-plugin-dev/), CLI mitpython3 -Ivon Hand gelaufen (neu,status,doku). Grenzen: noch keinplan, kein Gerüst, kein Forgejo;statuskennzeichnet noch nicht gebaute Befehle. Als Nächstes: Abschnitt 3 (Plan und Gerüst).PR #104 gemergt: feat(plugin-dev): Plan prüfen/speichern/freigeben und baubares Gerüst aus plan.json (#99)
#104
Commits:
PR #105 gemergt: feat(plugin-dev): Forgejo — Repo anlegen (Issue, Branch, PR), Klon als Quelle der Wahrheit, senden, holen, Stand-Kommentar (#99)
#105
Commits:
Stand: Bauabschnitt 3 und 4 (2026-10-16)
Plan und Gerüst (
ad9d28a):plan vorlage,plan setzen(nur nach grill-me; prüft Pflichtfelder, unbekannte Felder, Plattformen, Skill-Namen gegen installierte Hermes-Skills, Kategorie,requiresund ID-Kollision gegen die echte Registry; ungültig = nichts geschrieben),plan freigeben(erzeugt gleich das Gerüst:plugin.json, Build-Skript,SKILL.md-Stubs, Skript- und Test-Stubs,store-page.json, Hooks;TODO:-Marker, Test-Stubs schlagen fehl; das Gerüst baut; vorhandene Dateien werden nie überschrieben).Forgejo (
b009de6):repo anlegenab Plan-Freigabe: Issue (Warum, Entscheidungen aus grill-me, Wie, Nicht Teil) → BranchNN-<id>→ Plugin samt.dev/,PLAN.md,AUFTRAG.md→ PR;mainbleibt unberührt. Danach ist der Klon die Quelle der Wahrheit (Umzugsvermerk im Workspace). Dazurepo senden,repo stand,vorhaben-holen,stand-kommentar. Das Token geht nur über Umgebungsvariablen an git und wird nie ausgegeben.Geprüft: 63 Tests grün (u. a. Fake-Forgejo mit lokalem Bare-Repo, Wiederaufnahme nach Abbruch, Token nie in Dateien oder Ausgaben). Echtlauf mit
python3 -Igegen ein Wegwerf-Repo auf dem eigenen Forgejo (Issue, Branch, PR, Kommentar, PR-Stand), danach gelöscht; auch der Plan-Check gegen die echte Registry lief. Grenzen: Einstellungen noch nur per Umgebung/Datei (Web-View folgt); noch keinpruefen,store,veroeffentlichen, Skill und Doku. Als Nächstes: Abschnitt 5 (Prüfen).PR #106 gemergt: feat(plugin-dev): pruefen — TODO-Marker, Tests, Manifest gegen Plan und Registry, Build, Praxistest (#99)
#106
Commits:
PR #107 gemergt: feat(plugin-dev): Store — Seite und Icon erzeugen, Datenschutz-Scan, Dry-Run, Bilder bestätigen (#99)
#107
Commits:
PR #108 gemergt: feat(plugin-dev): Veröffentlichen — gemergter PR, freigegebener Stand, Dry-Run, Push, Prüfung (#99)
#108
Commits:
PR #109 gemergt: test(plugin-dev): Kern-Test an die Freigabe in der Stufe Veröffentlicht angepasst (#99)
#109
Commits:
PR #110 gemergt: feat(plugin-dev): Plugin-Paket — Skill, Einstellungs-Panel, Doku aus der README, Build; Linux-Test (#99)
#110
Commits:
Stand: alle acht Bauabschnitte gebaut (2026-10-16)
Gebaut (PRs bis
1a05a95): Kern mit Stufentabelle und Fingerabdrücken, grill-me mit 9 Pflichtthemen, Plan und baubares Gerüst, Forgejo (Repo früh anlegen, Klon als Quelle der Wahrheit, senden, holen, Stand-Kommentar), Prüfen (TODO-Marker, Tests, Manifest gegen Plan und Registry, Build, Praxistest), Store (Seite und Icon erzeugen, Datenschutz-Scan, Dry-Run, Bilder bestätigen lassen), Veröffentlichen (nur gemergter PR, nur freigegebener Stand, Dry-Run, Push, Prüfung), Plugin-Paket mit Skill, Einstellungs-Panel und Doku. Die Doku (docs/) wird beim Bauen aus den README-Kapiteln erzeugt, die README bleibt die einzige Quelle.Geprüft: 107 Tests grün (
python3 -m unittest discover -s testsiniris-plugin-dev/), darunter Fake-Forgejo mit Bare-Repos, der echtepublish-plugins.sh-Dry-Run und ein echtes Veröffentlichen in eine Wegwerf-Registry. Echtlauf auf dem eigenen Forgejo gegen ein Wegwerf-Repo (Issue, Branch, PR, Kommentar, PR-Stand; danach gelöscht). Linux-Test aufiris-server(Drop-Zone): Plugin installiert, Skill läuft im Hermes-Container, das Panel läuft über/plugins/iris-plugin-dev/api/*, und die vom Panel gespeicherten Einstellungen liest der Skill im Hermes-Container (gemeinsames Verzeichnisiris-app-support; das war die offene Frage zum Token); danach vollständig entfernt.Grenzen / noch nicht getan: das Plugin selbst ist nicht veröffentlicht (
.include, Store-Seite, Version fehlen bewusst; Veröffentlichen nur auf Alfs Wort); kein Test in der echten Mac-Iris; das echte Veröffentlichen in die echte Registry wurde nie ausgeführt (nur gegen Wegwerf-Registry); der Zustand „veröffentlicht“ liegt nur lokal und geht mit dem nächstenrepo sendenins Repo. Offen aus dem Plan: Zusammenführen des Zustands, wenn Chat und Dev-Maschine gleichzeitig Belege schreiben (Fingerabdruck entscheidet, im Zweifel neu prüfen).Als Nächstes: auf dem Mac installieren und mit einem echten Mini-Plugin einmal durchspielen (bis einschließlich „Repo anlegen“ gegen
iris/iris-plugins); danachiris-plugin-devselbst store-tauglich machen und veröffentlichen.PR #111 gemergt: feat(plugin-dev): Store-Material (Seite, Icon, Langtext) und .include zum Veröffentlichen (#99)
#111
Commits:
Veröffentlicht: iris-plugin-dev 0.1.0 (2026-10-16)
Auf Alfs ausdrückliches „Veröffentliche das Plugin“. Ergänzt: Store-Seite, Icon, Langtext,
.include(dd25cfe, PR gemergt). Vorher: Datenschutz-Scan der Store-Texte und der beim Bauen aus der README erzeugten Doku (nur Beispielcode als Fehlalarm), Dry-Run sauber. Dann./publish-plugins.sh iris-plugin-devausmain: Registry-Commit51c56de; der Index auf Forgejo trägtiris-plugin-dev0.1.0 (Kategorie development, Mac und Linux, 3 Store-Dateien; die Registry hat jetzt 21 Plugins). Veröffentlicht wurde von Hand mitpublish-plugins.sh, nicht mit dem Befehlveroeffentlichendes Plugins (das Plugin selbst ist kein Vorhaben mit Zustand).Noch nicht getan: Mac-Test in der echten Iris, erster echter Einsatz mit einem Mini-Plugin. Das Issue bleibt offen.
PR #112 gemergt: docs(plugin-dev): iris-plugin-dev 0.1.0 veröffentlicht, Plan aktualisiert (#99)
#112
Commits:
Abgeschlossen
iris-plugin-dev ist veröffentlicht (0.1.0 am 2026-10-16, aktuell 0.1.12) und im Einsatz: Damit entstand iris-claude-sessions. Weitere Verbesserungen laufen in iris/iris-plugins#171, die Anleitung des Plugins ist Teil von #194.
Geschlossen auf Alfs ausdrückliches Wort (2026-10-21).