iris-plugin-dev: _klone/Arbeitsordner verwirrt, Plan nicht änderbar, Systemprompt fehlt im grill-me (Erfahrungen aus #167) #171
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#171
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?
Anlass
Beim Bau des Plugins
iris-claude-sessions(#167) mit dem Pluginiris-plugin-dev("Plugins entwickeln") sind mehrere Stellen aufgefallen, an denen das Werkzeug verwirrt oder zu spät etwas fordert. Das Verwirrendste: der_klone-Ordner. Dieses Issue sammelt den Befund, die Erfahrungen aus dem Lauf und Verbesserungsvorschläge. Der Lauf selbst hat die Stufen sauber durchlaufen (grill-me → Plan → Gerüst → Repo → Umsetzung →pruefen), und die Sperren haben funktioniert: Das Veröffentlichen blieb bis zum Praxistest zu.1. Befund:
_kloneund der Arbeitsordner (Hauptproblem)neulegt das Vorhaben unter./plugin-devrelativ zum aktuellen Verzeichnis an. Der Aufruf kam aus dem Repo der Iris-App (frontend/macos-iris) und legte dort einen untracked Ordnerplugin-dev/an; ein späteresship -ahätte ihn mitgenommen. Erst--homeoder$PLUGIN_DEV_HOMEändert das, die Doku nennt es aber nur nebenbei.repo anlegenverschiebt das Vorhaben in einen Klon<home>/_klone/iris-plugins/<id>und lässt im alten Ordner nur.dev/umzug.jsonals Marker liegen. Danach existieren zwei Orte mit demselben Namen, einer davon fast leer. Wer in den alten Ordner schaut, sieht kein Plugin, keinePLAN.md, keinen Code.--homeder Checkout des Plugin-Repos selbst (~/Documents/2ndbrain/plugins, so wie bei allen anderen Plugins üblich), liegt_klone/mitten im Repo als untracked Ordner, und das Plugin steht nicht unterplugins/<id>/neben den anderen. Der Modul-Kommentar sagt "Arbeitet nur gegen Forgejo ... nie gegen ein lokales Checkout"; für diesen Fall ist das genau der Widerspruch zur Konvention "jedes Plugin lebt inplugins/<id>/".PLAN.mdnicht (sie lag im Klon, der Branch war nicht gemergt) und hielt den Ordner für ein Versehen. Ich habe_klone/lokal in.git/info/excludeeingetragen und den leeren Alt-Ordner von Hand gelöscht.165-iris-solidcraft), den man nicht umschalten darf. Ein Klon ist dafür richtig, eingit worktreewäre es auch.Vorschläge
~/Library/Application Support/Iris/plugin-devbzw.~/.local/share/iris-plugin-dev), nie in einem Git-Repo.neubricht ab, wenn das Ziel innerhalb eines anderen Git-Repos läge, und sagt es.<home>/klone/<repo>/<id>), nicht unterplugins/.statusund die Ausgabe vonrepo anlegennennen den vollständigen Pfad in einer Zeile, außerdem ein Befehlpfad(nur den Pfad ausgeben, für Skripte)..dev/umzug.jsonnicht als Geisterordner stehen lassen: den alten Ordner nach dem Umzug entfernen, wenn er nichts außer dem Marker enthält, und der Marker liegt im festen Arbeitsordner (vorhaben/<id>.json).--im-checkout <pfad>): legt pergit worktreeeinen BranchNN-<id>im vorhandenen Checkout an, sodass das Plugin unterplugins/<id>/liegt, ohne den ausgecheckten Branch zu berühren.2. Befund: Plan nach der Freigabe nicht mehr änderbar
plan setzengesperrt, und die Freigabe ist an den Fingerabdruck von.dev/plan.jsongebunden. Im Betrieb hat sich der Plan aber geändert: ein Systemprompt kam dazu (Abschnitt 3), das Canvas wurde umgebaut, der Terminal-Start bekam eine App-Route. Eine Änderung inplan.jsonhätte die Freigabe verworfen und das Vorhaben auf Stufe 3 zurückgeworfen.PLAN.mdträgt den Hinweis "Änderungen in plan.json machen", was nach der Freigabe nicht geht. Ich habe stattdessen einen Abschnitt "Stand und Abweichungen" an diePLAN.mdangehängt (Fingerabdruck blieb stabil). Das ist ein Ausweg, kein Verfahren.systemprompt(Standardfalse), aberPLAN.mdzeigt es nicht, der Verwendungssatz fehlte, und die Konsistenzprüfung verglich es nicht mit dem Manifest (so korrigiert nach dem Lesen des Codes, siehe Kommentar zu Etappe 2).Vorschläge
plan aendern --grund "…"nach der Freigabe: erlaubt eine Änderung anplan.json, hängt einen Eintrag in ein Änderungsprotokoll (.dev/aenderungen.json, erscheint inPLAN.md) und verlangt nur für die geänderten Felder erneut "Plan passt".systemprompt(und Name/Verwendung) inplan.jsonaufnehmen und inPLAN.mdrendern.PLAN.mdje nach Stufe: vor der Freigabe "Änderungen in plan.json", danach "Änderungen siehe Änderungsprotokoll".3. Befund: grill-me fragt nicht nach dem Iris-Systemprompt (größte inhaltliche Lücke)
Das Plugin hatte laut Plan
systemprompt: false. Folge im Praxistest: Der Auto-Modus der App wählte nur "Canvas System" (die Anfrage enthielt "im Canvas"), Hermes lud den Skill nie, las einen 37-KB-Canvas-Skill und schrieb ein Eigenbau-Skript (zufällig mit demselben Namenclaude_sessions.py). Erst ein eigener Systemprompt mitusage("Claude Code Chats verwalten …") löste das. Das hat vier Testrunden gekostet.Vorschläge
usage-Formulierung (sie entscheidet über die Auto-Auswahl) und nach Nachbar-Prompts, gegen die es sich abgrenzen muss ("Canvas System",iris-gui,claude-code).system_prompt.mdund die Manifest-Felder (system_prompt,system_prompt_name,system_prompt_usage), wenn das Thema "ja" ergibt, mit einem Baustein für die Aufrufe, die das Modell wörtlich übernehmen soll.pruefenprüft die Konsistenz: Manifest-Felder undsystem_prompt.mdmüssen zusammenpassen, der Skill-Name muss im Prompt vorkommen, dieusagedarf nicht leer sein.4. Befund: Praxistest ist nur über die Registry vorgesehen, Testverteilung fehlt
veroeffentlichenist erst nach "Praxistest bestanden" erlaubt, der Test setzt aber ein installiertes Plugin voraus. Mein Weg:build-irisplugin.shmitOUTPUT_DIR, dannscpauf den zweiten Rechner und dort per GUI importieren. Der Skill kennt diesen Weg nicht,pruefenbaut das Paket nur zur Probe und wirft es weg.versioninplugin.jsonvon Hand hochzählen (0.1.0 bis 0.1.8), damit der Import ersetzt.Vorschläge
paket: baut<id>-<version>.irisplugin(Standard~/Desktop) und zählt auf Wunsch (--patch) die Version hoch.paket --nach <host>: kopiert das Paket perscpauf einen in der Konfiguration genannten Testrechner.bauen): "Test auf einem zweiten Rechner" mit genau diesem Ablauf, einschließlich der Prüfung, ob die laufende App neuer ist als die Route/Funktion, die das Plugin braucht (hier: HTTP 401, weil die App vom Vortag stammte). Ein Befehlpruefen --appkönnte die gebaute App nach den erwarteten Routen durchsuchen.5. Befund: Panel "Verbindung testen" liefert 403 trotz richtigem Token
Der Test fragt
GET /api/v1/userab (braucht den Scoperead:user), die Anleitung im Panel empfiehlt aber nur Repository- und Issue-Schreibrecht. Ein so angelegtes Token bekommt 403, obwohl es für Issues, Branches und PRs reicht.Vorschläge
GET /api/v1/repos/<repo>verwenden (liefertpermissions.push),/userentfällt.message) im Detail mitzeigen statt nur "antwortet 403".read:userdoch gebraucht wird.6. Kleinere Stolpersteine
plugin_dev.py status --vorhaben <id>scheitert mit "unrecognized arguments"; richtig ist--home … --vorhaben … status. Die SKILL.md zeigt es nicht eindeutig. Vorschlag: Optionen auch nach dem Unterbefehl akzeptieren.PD="python3 -I …"aus der SKILL.md funktioniert in zsh nicht ($PDwird nicht in Wörter zerlegt, "no such file or directory"). Vorschlag: ein kleines Wrapper-Skriptplugin-devstatt einer Variablen, oder${=PD}dokumentieren.execute_codeauskommen: auf demapi_server(unattended) wird es blockiert, das Modell wich auf dasterminal-Werkzeug aus. Die Skill-Vorlage und die Doku sollten das sagen ("nurterminal, keinexecute_code").~/.hermes/sessions/request_dump_*.jsonzeigte das). Skripte sollten tolerant sein und den Aufruf im Prompt wörtlich nennen (hier gelöst). Das ist ein Hinweis für die Skill-Vorlage; eine strukturelle Lösung wäre ein App-seitiger Klick-Handler (eigenes Thema, nicht hier).repo sendenerinnert nicht an Versionsnummer undPLAN.md: Eine Prüfung "Version seit dem letzten Paket gleich geblieben?" wäre hilfreich.canvas-Befehl, einauswahl-Befehl (Rückmeldung auswerten) und die Tests dazu als Vorlage hilfreich. Diese beiden Befehle waren die Kernstücke voniris-claude-sessions.7. Was gut funktioniert hat (beibehalten)
pruefen(TODO-Marker, Tests, Manifest, Paketbau) in einem Schritt undstand-kommentarins Issue.repo anlegenlegt Issue, Branch und PR sauber an und merged nie von selbst.Vorschlag für die Reihenfolge
paketundpaket --nach(Abschnitt 4).plan aendern(Abschnitt 2) und die kleineren Punkte (Abschnitt 6).Bezug: iris/iris-plugins#167 (
iris-claude-sessions, Fundstelle), iris/iris-plugins#99 (Plan des Skills), iris/Iris#130 und iris/Iris#132 (Auslöser des Plugins).Nachtrag aus dem Lauf (Stufe Store/Veröffentlichen)
repo sendennach dem Merge: Der Befehl pusht auf den alten, schon gemergten Branch167-…und meldet nur „PR #168: gemergt“. Es entsteht kein neuer PR, und das Material kommt nicht aufmain. Auf Stufe 9 stehtrepo sendenaußerdem nicht in der Liste der erlaubten Befehle, obwohlveroeffentlichenden Befehl in seiner Fehlermeldung verlangt („repo sendenund den PR erneut mergen lassen“). Ich habe von Hand einen frischen Branch vonmainmit nur den Store-Dateien angelegt (PR #172).Vorschlag:
repo sendenerkennt einen gemergten PR und legt von selbst einen Folge-BranchNN-<id>-2vonmainsamt neuem PR an; der Zustand merkt sich den aktuellen PR.--homeinnerhalb des Klons: Wer--homeauf den Klon zeigen lässt (naheliegend, weil dort das Plugin liegt), bekommt in<home>/_klone/einen zweiten Klon, diesmal der Registry (iris-plugin-registry, für den Dry-Run). Das ist dieselbe Verwirrung wie in Abschnitt 1: Arbeitsordner und Klone gehören an einen festen Ort außerhalb jedes Repos.store pruefenmeldet den Beleg „erfüllt“, auch wenn wedercustom.mdnoch Bilder da sind;store bilder-bestaetigtwurde nie verlangt. Das ist in Ordnung, die Doku sollte es aber sagen (Bilder optional, aber „nur echte“).PR #174 gemergt: feat(plugin-dev): Arbeitsordner nie in einem Git-Repo, relative Pfade für übertragbare Chats, pfad und aufraeumen, Folge-PR nach dem Merge (#171)
#174
Commits:
Etappe 1 gemergt (PR #174): Arbeitsordner, Klone, Folge-PR
Entscheidung des Nutzers: Der Arbeitsordner bleibt im Workspace des Chats (
./plugin-dev), damit sich der Chat samt Vorhaben auf eine andere Iris übertragen oder an Kollegen weitergeben lässt. Das ersetzt meinen Vorschlag mit einem festen Ordner außerhalb. Zwei Funde im Code haben den Plan dafür geändert: Ein Chat-Export (ChatBundleBuilder) kopiert den ganzen Workspace ohne Ausnahme, und Symlinks bleiben darin Symlinks. Der Symlink-Vorschlag entfiel, und absolute Pfade hätten nach einer Übertragung ins Leere gezeigt.Geändert
neu,repo anlegen,vorhaben-holen, Registry- und Veröffentlichen-Klone), bricht ab, wenn der Ordner in einem Git-Repo liegt, mit klarer Meldung. Ein Repo direkt im Home-Verzeichnis (Dotfiles) zählt nicht. Das verhindert Vorhaben im Repo und den Klon im Klon (Abschnitt 1 und Nachtrag)..dev/umzug.jsonspeichertnachrelativ zum Vorhabenordner, der Klon ergibt sich aus dem Ort des Plugin-Verzeichnisses;repo.klonist aus dem Zustand entfernt. Ältere absolute Vermerke werden weiter gelesen. Der ganze Arbeitsordner kann verschoben werden (getestet).pfadgibt nur den Ort aus,statuszeigt ihn alsOrt:.aufraeumenentfernt die Klone (Plugin-Repo etwa 60 MB, Registry etwa 10 MB gegenüber 0,1 MB für das Vorhaben), nur wenn nichts Ungesichertes darin liegt (nicht committet oder nicht auf Forgejo); danach holtvorhaben-holen <id>das Vorhaben wieder. Die Meldung bei fehlendem Klon nennt genau diesen Befehl.repo sendennach dem Merge: fragt den PR ab; ist er gemergt, legt es<NN-id>-<k>vonmainan (Änderungen pergit stash), pusht, öffnet einen neuen PR und trägt ihn im Zustand ein (repo.vorherige).{status, save, test}erwartete, kennt jetzt auchconfig-status(seit #147 im Manifest; war aufmainrot). Version des Plugins 0.1.2.Gemessen: 152 Tests grün (117 vorhandene, 35 neue in
tests/test_arbeitsordner.py: Git-Schutz tief und nicht vorhanden, Dotfile-Repo im Home, Verschieben des Arbeitsordners, Senden nach dem Verschieben, fehlender Klon, alter absoluter Vermerk,pfad,aufraeumenmit allen Verweigerungen und dem Wiederholen pervorhaben-holen, Folge-PR inklusive Zustand, zweiter Folge-PR, nichts zu senden).Grenzen
publish-plugins.shund wartet auf dein Okay.git stash pop; bei einem Konflikt bricht er mit Meldung ab und lässt den Stash im Klon (selten, nicht getestet gegen echte Konflikte)._klonebleibt (Abschnitt 1 sagte, er verwirre; mit Git-Schutz undpfadliegt er nur noch im Workspace des Chats).Offen (nächste Etappen): 2 Systemprompt im grill-me (Pflichtthema, Gerüst, Prüfung); 3
paketundpaket --nach; 4 Panel-Anmeldeprüfung (/user→/repos/<repo>); 5plan aendernund die kleineren Punkte.PR #176 gemergt: feat(plugin-dev): Systemprompt als Pflichtthema im grill-me, Verwendungssatz im Plan, Prompt-Baustein im Gerüst, Plan und Manifest im Einklang (#171)
#176
Commits:
Etappe 2 gemergt (PR #176): Systemprompt im grill-me, Plan, Gerüst und Prüfung
Korrektur zum Issue: Ich hatte geschrieben, das Plan-Format kenne kein Feld für den Systemprompt. Das stimmt nicht:
plan.jsonhattesystemprompt(Standardfalse), das Gerüst erzeugtesystem_prompt.md, undpruefenprüfte, dass die Datei existiert. Was fehlte, ist das, was den Fehler im Praxistest wirklich ausgelöst hat: Niemand fragte danach, der Verwendungssatz (usage) war nur einTODO:-Platzhalter,PLAN.mdzeigte die Entscheidung nicht, und die Konsistenzprüfung verglichsystempromptnicht zwischen Plan und Manifest (nur Kategorie,requires, Plattformen, Skills). Deshalb fiel es beiiris-claude-sessionsnicht auf, dass das Manifest einen Systemprompt hatte, der Plan aberfalsesagte.Geändert
systemprompt(„Systemprompt und Auto-Modus“, nachskills). Der Hinweis erklärt den Grund: Der Auto-Modus wählt Prompts nur nach derusage, sonst gewinnt ein Nachbar wie „Canvas System“. Überspringbar nur mit Grund (reine Hintergrund-Plugins). Bestehende Freigaben bleiben gültig (Fingerabdruck vongrill.jsonändert sich nicht).systemprompt_usage, Pflicht beisystemprompt: true(mindestens 20 Zeichen, keinTODO); ohne Systemprompt nur eine Warnung.PLAN.mdzeigt den Abschnitt „Systemprompt“.system_prompt,system_prompt_name,system_prompt_usagemit dem Satz aus dem Plan;system_prompt.mdals Baustein (Auslöser, Skill beim Namen mitskill_view, feste Regeln aus dem Betrieb: Erfolg nur nach Skript-Ausgabe, kein eigenes Skript, keinexecute_code) und einerTODO:-Stelle für das Routing.pruefenmeldet jetzt eine Abweichung zwischen Plan und Manifest beisystem_prompt, eine zu kurze oder fehlendesystem_prompt_usage, und einensystem_prompt.md, der einen Skill des Plugins nicht nennt.docs/): Abschnitt „Wann ein Plugin einen Systemprompt braucht“ mit den Regeln aus dem Lauf (usage-Satz, wörtliche Aufrufe, Anfrage und Canvas-Rückmeldung trennen, tolerante Skripte, Request-Dump als Beleg). SKILL.md: Empfehlung „ja“ bei Chat oder Canvas. Version 0.1.3.Gemessen: 162 Tests grün (152 vorher, 10 neu in
test_grill,test_plan_geruest,test_pruefen; zwei vorhandene angepasst: Themenzahl 10, Plan mit Systemprompt brauchtusage). Gegenprobe: Ohne die neuen Prüfungen werden drei Tests rot. Ein erzeugtes Gerüst habe ich angesehen (Manifest,system_prompt.md,PLAN.md).Grenzen
iris-claude-sessionsbrauchte es dafür den wörtlichen Aufruf im Prompt).iris-claude-sessionsselbst würde jetzt „Plan weicht vom Manifest ab“ melden (Planfalse, Manifesttrue); das lässt sich erst mitplan aendern(Etappe 5) sauber auflösen.Offen: 3
paketundpaket --nach; 4 Panel-Anmeldeprüfung; 5plan aendernund die kleineren Punkte.PR #177 gemergt: fix(plugin-dev): Verbindungstest im Panel prüft Server, Repo mit Schreibrecht, Issues und Registry statt /user und zeigt Forgejos Meldung (#171)
#177
Commits:
Etappe 4 gemergt (PR #177): Verbindungstest im Panel
Ursache des 403 (bestätigt):
testeninpanel_api.pyfragte als ErstesGET /api/v1/userab. Das verlangt den Scoperead:user. Die Anleitung im Panel empfahl aber nur „Repository“ und „Issue“, ein so angelegtes Token war richtig und bekam trotzdem 403. Das Detail sagte nur „Forgejo antwortet 403“.Geändert
/version, bei „nicht erreichbar“ endet die Prüfung gleich), Repo (/repos/<repo>: Token gilt undpermissions.push; daraus auch der Hinweis auf Admin-Rechte), Issues (Lesezugriff; zeigt, ob das Recht „Issue“ überhaupt da ist), Registry (lesbar)./userwird nicht mehr abgefragt.token does not have at least one of required scope(s): [read:issue]), dazu je Fall ein Hinweis, was zu tun ist (Token ungültig oder abgelaufen; Recht „Repository“ oder „Issue“ fehlt; Repo nicht gefunden). Das Token wird in jeder Meldung geschwärzt.Gemessen: 172 Tests grün (162 vorher, 10 neu in
tests/test_panel_pruefung.pygegen eine Attrappe, die je nach Token antwortet: nur Repository und Issue, ohne Issue-Recht, nur lesend, Admin, ungültig, unbekanntes Repo, Server nicht erreichbar, fehlende Eingaben; Regressionstest: ein Token ohneread:userbesteht, und/api/v1/userwird nicht aufgerufen). Gegenprobe: Mit dem alten/user-Aufruf wird genau dieser Test rot. Außerdem gegen den echten Forgejo gelaufen (lesend, mit dem Token des Entwicklers, das nirgends im Ergebnis steht): Server, Repo mit Schreibrecht, Issues und Registry grün; der Admin-Hinweis erscheint, weil dieses Token Admin-Rechte hat.Grenzen
web/settings.html) habe ich nicht im Marktplatz-Fenster angesehen, nur den Hinweistext geändert.Offen: 3
paketundpaket --nach; 5plan aendernund die kleineren Punkte.Veröffentlicht: iris-plugin-dev 0.1.3
Registry-Commit
fea8cdff. Gegen die Registry geprüft: Index trägt 0.1.3, Paketiris-plugin-dev-0.1.3.irisplugin(78 405 Byte), Versionsverlauf 0.1.1 bis 0.1.3 (die letzten drei bleiben). Probelauf vorher sauber (1 würde veröffentlicht).Enthalten: Etappe 1 war schon in 0.1.2; neu in 0.1.3 sind Etappe 2 (Systemprompt im grill-me, Plan, Gerüst, Prüfung; PR #176) und Etappe 4 (Verbindungstest im Panel ohne
/user; PR #177). Auf den Rechnern gilt das, sobald das Plugin dort aktualisiert wird (Marktplatz → Aktualisieren).Offen bleiben Etappe 3 (
paket,paket --nach) und 5 (plan aendern, kleinere Punkte). Das Issue bleibt offen.PR #303 gemergt: fix(iris-plugin-dev): Issue-Text verträgt Grill-Einträge mit freiem Themenschlüssel (0.1.19, #171)
#303
Commits:
Stand 0.1.19 — Fehler beim Anlegen des Repos behoben
Befund: Im ersten Praxislauf (Plugin
iris-buchhaltung) brach das Anlegen von Repo und Issue mitKeyErrorab, weilissue_textinpd_forgejo.pyden Titel jedes Grill-Eintrags in der Liste der Pflichtthemen nachschlug; ein Eintrag mit freiem Themenschlüssel (ingrill.jsonvon Hand geschrieben) ist dort nicht. Der Chat hat die installierte Kopie von Hand gepatcht; Quelle und Registry hatten den Fehler weiter, ein Update hätte den Patch überschrieben.Geändert:
issue_textnimmt für unbekannte Themenschlüssel den Schlüssel selbst (titel.get(thema, thema), auch bei „nicht nötig“). Neuer Test intests/test_forgejo.py(rot mitKeyError: 'anbindung'ohne die Korrektur, grün mit). Version 0.1.19, Änderungstext,store/changelog.md, Lessons Learned inPLAN.md.Geprüft: Gesamte Testsuite des Plugins (235 Tests) grün; die Zeile der Quelle ist jetzt gleich der von Hand gepatchten installierten Kopie.
Nicht geprüft: Ein erneuter Lauf des Anlegens in der echten App.
Offen: Die Ursache des freien Schlüssels (das Modell hat
grill.jsonam Werkzeug vorbei geschrieben,hinzufuegenlehnt unbekannte Themen ab) bleibt; Idee:ladenmeldet unbekannte Schlüssel oderhinzufuegen-Fehlermeldung nennt die gültigen Themen früher.Veröffentlicht: Plugin „Plugins entwickeln“ (
iris-plugin-dev) 0.1.19packages/iris-plugin-dev/iris-plugin-dev-0.1.19.irisplugin).KeyErrorab, wenn das Grill-Protokoll einen Eintrag mit freiem Themenschlüssel enthält. Gefunden im ersten Praxislauf (Pluginiris-buchhaltung); der Chat hatte nur die installierte Kopie von Hand gepatcht.grill.jsonam Werkzeug vorbei) nicht behoben; erneuter Lauf in der App nicht geprüft.PR #304 gemergt: feat(iris-plugin-dev): Seitenpanel im Plan, Grill, Gerüst und Prüfung (0.1.20, #171)
#304
Commits:
Stand 0.1.20 — Seitenpanel im Werkzeug, Auswertung des ersten Praxislaufs (Plugin
iris-buchhaltung, Wegwerf-Test)Befund aus dem Praxislauf (26.10.): Mit „Plugins entwickeln“ entstand aus einer Websuche ein vollständiges Plugin: Grill-me (11 Themen, Antworten bündelbar), Plan, Gerüst, Repo mit Issue und PR (#301/#302, gemergt), Umsetzung, Rauchtest gegen einen vom Chat selbst aufgebauten Frappe-Stack, Anleitung, Einstellungsfenster („Verbindung steht“, 1 Treffer in der Kundentabelle) und Reiter im Seitenpanel (Rechnungen, Neue Rechnung, Kunden, Artikel, Umsatz; Zusammenfassung „1 offene Posten über 285,60 € · 3 Entwürfe“). Dabei fielen auf:
zeigeStatus(0.1.18).KeyErrorbei freiem Themenschlüssel ingrill.json(0.1.19); der Chat hatte die installierte Kopie von Hand gepatcht.status+revision, keine Auswahl und keinen Ansichtszustand. Der Systemprompt versprach „der Reiter zeigt …“; das Modell suchte 2:26 Min. nach einem Weg, den Reiter zu öffnen. Grill-me, Plan, Gerüst undpruefenkanntenside_panelnicht.Geändert (0.1.20):
seitenpanel(11 statt 10), überspringbar mit Grund.seitenpanel{zweck, auswahl, agent_steuert}, geprüft, inPLAN.mdausgegeben.side_panel,panel_apimit den Befehlen laut Plan (status;select/selection;view-set),panel_api.pyundweb/panel.htmlals Vorlage mitTODO:, Kit-Kopie im Build-Skript, Regel im Systemprompt (Agent steuert überviewbzw. „kann den Reiter weder öffnen noch bedienen“).pruefen: Plan und Manifest müssen übereinstimmen (Reiter ja/nein, Dateien, versprochene Befehle); Warnung, wenn der Prompt bei fehlender Steuerung nichts dazu sagt.docs/erste-schritte.mdund SKILL.md angepasst.Geprüft: Gesamte Testsuite des Plugins (245 Tests) grün; die neuen Prüfungen schlagen ohne die Änderung an
pd_pruefen.pyfehl.Nicht geprüft: Ein ganzer Lauf mit einem neuen Plugin in der App (Grill-me bis Reiter); die Vorlage
panel_api.pywurde nur auf Syntax geprüft, nicht gegen das echte Kit ausgeführt; der Chat-Weg voniris-buchhaltung(„leg eine Rechnung an“) ist nicht abschließend bewertet.Offen:
grill.jsonvon Hand, installierte Kopie gepatcht): Ideeladenmeldet unbekannte Themenschlüssel.max_iterations, Einstellung beim Nutzer).seitenpanelbleiben gültig; ein Plugin mitside_panelim Manifest und ohne Eintrag im Plan wird jetzt vonpruefenbeanstandet.Veröffentlicht: Plugin „Plugins entwickeln“ (
iris-plugin-dev) 0.1.20packages/iris-plugin-dev/iris-plugin-dev-0.1.20.irisplugin).pruefenmeldet, wenn Plan und Manifest auseinanderlaufen.status/zu-testen); Details und Grenzen im Stand-Kommentar oben.