Bild-Hintergrund
Der Desktop zeichnet den Hintergrund eines Mods nur als scene, die der Mod selbst rendert, und zeichnet kein Rasterbild darin.
Daher wird das Bild in Vektorpfade nachgezeichnet, unter harte, stille Größenbeschränkungen gepackt und von einem kleinen Mod gezeichnet.
Lies references/limits.md, bevor du etwas daran änderst, wie der Mod zeichnet; dort ist aufgeführt,
was gemessen wurde und was stillschweigend fehlschlägt.
Ablauf
- Die Bilder besorgen. Ein Bild oder ein helles (Tag) und ein dunkles (Nacht) Bild. Querformat um 1600x1000 funktioniert;
die App beschneidet mit
xMidYMid slice, daher das Motiv nicht zu nah am oberen und unteren Rand platzieren. Malerische, weiche Kunst lässt sich viel besser pro Zeichen nachzeichnen als Cel-Art mit Kanten; Fotos funktionieren auch. Wenn der Benutzer die Kunst generiert, sag dies vorher. - Die Werkzeuge in temporären Ordnern installieren (nicht im Mod):
python -m pip install --target "$TMP/pb-vtracer" vtracer mkdir -p "$TMP/pb-svgo" && cd "$TMP/pb-svgo" && npm init -y >/dev/null && npm install svgo@4 - Den Mod-Ordner erstellen unter
~/.claude/skills/<id>/(wird in jeder Sitzung geladen): assets/mod-template/ kopieren, dannmake-colors.jsundmake-colors.d.tsaus dem Plugin-Erstellungs-Skill in seinhooks/kopieren, unverändert. Jedes__PLATZHALTER__ausfüllen (__ID__ist der Ordnername, klein mit Bindestrichen). Für ein einzelnes Bild den anderen Import, dessen Szene und Look entfernen undautoauf das eine Bild zeigen lassen. - Das Bild ansehen und seine Bereiche auflisten (zuschneiden und anzeigen): das Motiv, das Gesicht, Hautpartien, jede Seite.
Eine Konfiguration pro Bild neben dem Mod schreiben (nicht in
hooks/), unter Verwendung von references/tracing.md für Bereichsauswahl und Einstellungen, und assets/example-night.json (ein Mädchen, rechts von einem Eingang sitzend) als Vorbild. Für ein Paar jeder Konfiguration"scheme"und beide Budgets geben:{"FULL": 259500, "HALF": 129500}; für ein einzelnes Bild nurFULLund keinscheme. - Nachzeichnen, im Hintergrund (ein Durchlauf dauert ein paar Minuten):
Es zeichnet jeden Bereich bei jeder Option einmal nach, passt jedes Budget an (zuerst alle Bereiche, dann Details nach Priorität), und schreibtpython -I scripts/trace_scene.py night.json --vtracer "$TMP/pb-vtracer" --svgo "$TMP/pb-svgo" --preview "$TMP/pb-preview/night.html"scene-<name>.ts. Zeige mit demoutder Konfiguration auf dashooks/des Mods. - Vorschau der HTML im Browser-Bereich (diene seinen Ordner mit
python -m http.server). Überprüfe das Motiv bei 2-fachem Zuschnitt, da die App das Bild vergrößert. Korrigiere, was mit der Tabelle in tracing.md falsch aussieht, und zeichne erneut. - Farben. Die Oberflächenfarben aus den Bildern mustern (der dominante Wand- oder Himmelsfarbton; der dunkle Modus bleibt dunkel)
und
makeColorsausführen; seine Problemliste darf keinen Eintrag "Desktop wird nicht malen" enthalten. - Validieren und übergeben:
claude plugin validate <mod-verzeichnis>. Sage dem Benutzer, das Fenster neu zu laden oder eine neue Sitzung zu starten, eine beliebige Nachricht zu tippen (das Thema wird bei der ersten Eingabe gesetzt) und/backdrop day|night|autoauszuprobieren. Bitte ihn, sich bestimmte Bereiche anzusehen; sein Screenshot ist der echte Test. Lösche danach die temporären Werkzeugordner.
Regeln, die zubeißen
- Nur einfache Anführungszeichen in SVG, kein
",\oder Backtick in einem SVG: Escaping zählt gegen die Gesamtzahl. - Die Svgs einer Szene zusammen ≤ ~259500 Zeichen; jedes SVG ≤ ~98000. Bei Überschreitung zeigt der Desktop nichts und sagt nichts; die Vorlage protokolliert zu große Szenen beim Sitzungsstart.
glasseingeschaltet lassen;tintaus einem Look herauslassen, der für beide Modi gedacht ist.- Keine
image-,color-,gradient- odervector-Hintergründe,<image>oderoverrideColorSchemeverwenden: keines davon zeichnet oder wirkt. - Das Thema bei
prompt.submitsetzen, nicht beisession.start. - Wenn ein Bereich verbessert wird, behalten, was der Benutzer als gefällig bezeichnet hat: diesen Bereich einen eigenen Bereich oder eine eigene Priorität geben, anstatt alles neu abzustimmen. Jede Änderung mit dem betroffenen Bereich melden.