CommunityBildgithub.com

2016judea/image-riff

Wandeln Sie ein oder mehrere Referenzbilder in originelle Kunstwerke um, die die visuelle Sprache der Referenz verwenden, und passen Sie sie an die gewünschte Oberfläche an.

Was ist image-riff?

Dieses Skill ermöglicht es, aus Referenzbildern völlig neue, originelle Kunstwerke zu generieren, indem die visuelle Sprache des Originals übernommen, aber ein neues Motiv geschaffen wird. Es ist das methodische Gegenstück zum `make-art`-Tool-Skill, das die eigentliche Bildgenerierung übernimmt. Nach der Generierung werden die Ergebnisse in einer strukturierten Ordnerstruktur abgelegt, die eine README-Datei mit Begründung der Rangfolge, die finalen Bilder nummeriert nach Rang, sowie die Verliererrunden und Prompts umfasst. Der Benutzer wird angeleitet, vor dem Start zwei Fragen zu klären: den Verwendungszweck (bestimmt Seitenverhältnis und Platz für Text) und den Abstraktionsgrad von der Vorlage. Der Prompt wird in drei Teile aufgeteilt: einen statischen STEM-Teil (der die Rendering-Sprache des Referenzbildes analysiert), einen variablen SUBJECT-Teil (der den neuen Bildinhalt definiert) und einen statischen TAIL-Teil (Geometrie und negative Anweisungen). Die eigentliche kreative Arbeit liegt in der Wahl von vier unterschiedlichen Bildperspektiven (VANTAGES) wie Spire (Blick nach oben) oder Wreck (Blick über eine Ebene), die sich deutlich in der Kameraposition unterscheiden müssen. Das Skill ist besonders leistungsfähig für stilisierte Vorlagen (Comics, Illustrationen) und erfordert bei fotografischen Vorlagen zusätzliche Sorgfalt, indem die spezifischen Kamera- und Lichtparameter analysiert werden müssen. Es unterstützt Claude Code und andere KI-Agenten-Plattformen, die das `make-art`-Tool integrieren.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/2016judea/brick-mortar-skills/tree/HEAD/skills/image-riff

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

image-riff – Originalkunst in einer entliehenen Bildsprache

Die Engine, ihr API-Schlüssel, ihre Flags und ihre Fallstricke sind in der make-art-Fertigkeit beschrieben. Lies zuerst diese. Diese Fertigkeit ist die Methode: wie man ein Referenzbild in eine Reihe von realen Optionen verwandelt und wie man sie auf der eigentlichen Zieloberfläche platziert.

Fertig sind nicht vier hübsche Bilder. Fertig heißt: N Varianten generiert, jedes Bild betrachtet, mit ehrlicher Kritik bewertet, die Zielcrops zugeschnitten und die Arbeit im Quellordner unten abgelegt. Ein Durchlauf, der bei „hier sind vier Bilder“ aufhört, übergibt dem Benutzer die letzten beiden Aufgaben.

Wo die Arbeit landet

art/<Quell-Slug>/
  README.md                   datierter Titel, das Briefing, eine Rangfolge->Varianten-Tabelle und WARUM die Auswahl gewonnen hat
  1-<Slug>.jpg ...            die Finalisten, Master in voller Auflösung, nummeriert NACH RANG
  upload-1024/                die tatsächlich skalierten Liefergegenstände, wenn die Oberfläche eine bestimmte Größe benötigt
  small-size-test.png         der Nachweis, wenn die Lesbarkeit in der Größe entscheidend war
  prompts/                    die exakten Prompts der Finalisten
  candidates/<Runde>/         die Runden, die verloren haben, jede mit eigenem prompts/

<Quell-Slug> ist der Themenkomplex, nicht das Datum. Falls bereits Geschwisterordner existieren, übernimm deren Konvention.

  • Das README ist nicht optional. Der Ordner wird kalt, Wochen später, begutachtet. Ohne es kann ein Ordner nummerierter JPEGs nicht sagen, welches ausgeliefert, welches abgelehnt wurde oder warum.
  • Behalte die verlorenen Runden. candidates/ ist der Ort, an dem das wiederverwendbare Wissen liegt.
  • Behalte die Prompts wortwörtlich. Sie sind die Reproduktionsanleitung und die Herkunftsangabe.
  • Nummeriere die Finalisten nach Rang, nicht nach Generierungsreihenfolge. Der Dateiname ist der Ort, an dem die Rangfolge überdauert, nachdem das Gespräch verschwunden ist.
  • Halte generierte Kunst aus einer persönlichen Fotobibliothek heraus, es sei denn, es wird darum gebeten; es vermischt sich mit echten Fotografien.

Stelle zwei Fragen, dann gib aus

Bei etwa 0,24 $ pro 4K-Bild kostet ein Vierfach-Spread etwa 1 $: günstig genug, dass zwei Fragen das gesamte Tor sind, teuer genug, dass null Fragen eine Verschwendung sind. Beide Antworten ändern sich mit jeder Variante, daher kann keine abgeleitet werden:

  1. Wofür ist es? Bestimmt das Seitenverhältnis und ob negativer Raum für Schrift gelassen werden soll.
  2. Wie weit vom Basisbild entfernt? Originalgetreue Reproduktion <-> wilde Neuinterpretation.

Frage auf der subjektiven Achse; entscheide die technische selbst.

Der Prompt besteht aus drei Teilen, und nur einer variiert

Baue ihn im Code auf, eine Datei pro Motiv:

STAMM    (für jede Variante identisch)  – die Render-Sprache, abgelesen vom Bild
SUBJEKT  (die einzige Variable)          – ein Absatz, eine Komposition
SCHWANZ  (für jede Variante identisch)  – Geometrie + die Negativanweisungen

Ein STAMM-Vorlage, als Bewegungen statt Worten:

Verwende das beigefügte Bild strikt als Stil- und Farbanker. Reproduziere seine genaue Render-Sprache: <Zeitraum + Medium>, , , <Textur / Schattierungstechnik>, <benannte Pigmente, max. 2–3, plus der kleine Akzent>, . Kopiere NICHT das Motiv des beigefügten Bildes. Gestalte etwas Neues.

SUBJEKT:

Und der SCHWANZ:

<Seitenverhältnis> Komposition, randlos von Kante zu Kante. Kein Rand, kein Rahmen, keine Papierstruktur, kein weißer Rand. Kein Text, keine Beschriftung, kein Signatur, kein Logo.

Eine fotografische Basis ist der schwierigere Fall: teste mit 2K, bevor du für einen Spread ausgibst. „Reproduziere die Render-Sprache, ändere das Motiv“ liefert zuverlässig Kunst von einer stilisierten Basis (ein Comic-Panel, ein Druck). Von einem Foto kann es perfekt ausführen und dennoch enttäuschen. Stelle eine dritte Frage, wenn die Basis ein Foto ist – soll das Ergebnis wie ein Foto aussehen, oder wie etwas anderes? – und gib ein oder zwei 2K-Varianten aus, bevor du vier 4K-Varianten erstellst.

Wenn die Basis ein Foto ist, wechseln die Slots im STAMM, aber ihre Aufgabe nicht. Tausche die Markierungsslots gegen die sechs Dinge, die eine Kamera entscheidet: <Film + Format>, , <Qualität und Winkel des Lichts>, <Palette, 3–4 benannte Farben plus den einen Akzent>, <Korn / Halation / Vignette>, . Der letzte Slot ist am wichtigsten, weil die Vorgabe der Engine für jeden fotografischen Prompt zeitgenössisch digital ist: sage kein HDR, keine angehobenen Schatten, keine digitale Klarheit, keine filmische Teal-und-Orange-Gradierung. Eine Klausel wie „tief zugesetzte Schwarze, die überhaupt keine Schattendetails halten“ kann die tragendste Linie im Prompt sein.

Lies aus der Basis auch ihr impliziertes Motiv ab, nicht nur ihre Renderweise (z. B. ein privater Ort, von oben gesehen, mit niemandem darin). Benenne es in einem Satz, bevor du ein SUBJEKT schreibst; setze Invarianten wie keine Personen, die irgendwo im Bild sichtbar sind in den SCHWANZ.

Warum es so aufgebaut ist:

  • Das Bild trägt den Stil; der STAMM benennt nur, was sichtbar da ist. Beschreibe die Markierungsweise, die du sehen kannst – harte schwarze Konturlinien variabler Stärke, sichtbare ben-day Rasterpunkt-Schattierung, nur luftgebürstete mechanische Überblendungen, kein fotografisches Licht. Das Benennen der Technik verhindert, dass das Modell sie modernisiert.
  • „Kopiere NICHT das Motiv... gestalte etwas Neues“ ist tragend. Ohne sie erhältst du eine Variation der Basis. Mit ihr erhältst du originale Kompositionen in der Sprache der Basis, und die besten von ihnen zitieren die Basis, anstatt sie zu wiederholen.
  • Benenne Pigmente und begrenze den Akzent. Sage „klein“ speziell über den Akzent, sonst übernimmt er das Bild.
  • Die Negativanweisungen sind kein Platzhalter. Die Engine fügt von sich aus einen Papier-/Riso-Rand hinzu; vier Negativanweisungen im SCHWANZ kosten nichts.
  • Identischer STAMM + SCHWANZ macht die Serie vergleichbar. Jeder Unterschied zwischen den Varianten ist einer, den du gewünscht hast.

Die Subjekte müssen STANDPUNKTE sein, keine Dekorationen

Die mit Abstand wichtigste kreative Entscheidung. Vier Subjekte, die sich unterscheiden, wo die Kamera ist:

VarianteStandpunktBeispiel
spireBlick gerade nach oben an einer vertikalen Achseein Turm, der aus einem Wolkenmeer aufsteigt, sich in der Perspektive verjüngend
wreckBlick über eine leere Ebeneein halb vergrabenes Wrack, eine winzige Figur, die darauf zugeht
descentBlick steil nach unten durch Wolkenein Meer von Platten bis zu einem gekrümmten Horizont, eine Figur, die weg fällt
mandalaBlick auf reines Muster, kein Horizonteine symmetrische Rosette, von Ecke zu Ecke

Varianten werden für ihren Standpunkt geliefert: Eine vertikale Säule überlebt einen letterbox-Banner-Crop; eine einzelne Silhouette gegen den Himmel überlebt einen quadratischen Avatar-Crop. Vier Varianten, die sich nur im Inventar unterscheiden, croppen alle gleich – eine Option in vier Kostümen. Eine Idee pro Variante.

Bewerte nach dem Briefing – dann sage, welche jede OBERFLÄCHE möchte

Zwei separate Ordnungen. Bewerte ehrlich nach der Basis und benenne die Variante, die abgewichen ist; dann füge eine Zeile pro Zieloberfläche hinzu, die sagt, welche Variante diese Oberfläche möchte und warum der Crop sie so macht. Die Variante, die du in der Wiedergabetreue zuletzt bewertest, kann der richtige Banner sein. Ein niedriger Rang ist kein Veto; es ist eine Achse.

Schneide die Crops. Jede Oberfläche hat eine Geometrie.

Liefere Dateien in der Größe des Ziels, nicht der Quellvarianten.

YouTube-Kanalbanner – ein 16:9-Upload; YouTube serviert je nach Gerät einen anderen Ausschnitt.

  • Gespeichert / TV: 2560x1441.
  • Desktop-Leiste: 2560x424, der vertikale mittlere ~29,4 % (oben 35,3 % -> unten 64,7 %). Alles, was gesehen werden muss, lebt in diesem Band.
  • Eine hohe 9:16-Variante hat etwa die dreifache Höhe, die ein 16:9-Crop benötigt: wähle das Band, akzeptiere nicht standardmäßig die Mitte.

Kanal-Avatar – quadratisch, geliefert von 900x900 bis hinunter zu 88x88. Bewerte bei 88px.

Um zurückzulesen, was ein Kanal tatsächlich ausliefert:

UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126 Safari/537.36"
curl -sL -A "$UA" "https://www.youtube.com/@<Kanal>" | grep -o '"banner".\{0,400\}'
# der fcrop64-Hex-Wert besteht aus vier 16-Bit-Anteilen von 0xffff: links, oben, rechts, unten
python3 -c "h='00005a57ffffa5a8'; print([round(int(h[i:i+4],16)/0xffff,4) for i in range(0,16,4)])"

Messe für andere Oberflächen das tatsächlich ausgelieferte Asset, bevor du zuschneidest; vertraue nicht auf ein erinnertes Spezifikationsblatt.

Mechanik

  • Ein eingefügtes Basisbild ist nicht auf der Festplatte. Extrahiere es aus dem Base64 des Sitzungsprotokolls (make-art hat das Snippet), dann betrachte es, bevor du eine 4K-Generierung auf dem falschen Bild verschwendest.
  • Generiere den Spread parallel, ein Shell-Aufruf pro Variante. Vier 4K-Varianten landen in etwa 2 Minuten.
  • --out foo.png kann ein JPEG schreiben. Überprüfe den ausgegebenen MIME-Typ und benenne um.
  • Betrachte jedes Bild selbst, bevor der Benutzer es tut, und suche nach dem Papierrand, anstatt ihn zu überfliegen: asymmetrische, fast weiße Randverläufe sind Himmel oder Wolke, die den Beschnitt berühren, kein Rahmen.

Wenn es kein Basisbild gibt

Der gleiche dreiteilige Prompt funktioniert ohne Anker: Der STAMM wird zu einem Hausstil, den du definierst. Gib ihm einen thematischen Anker aus dem eigenen Material des Benutzers (eine Zitatsammlung, ein Moodboard), damit er nicht generisch ist.

Symbole und Avatare: Der Kleinformat-Test ist der einzige Test

Die Rangfolge kann zwischen voller Größe und echter Größe kippen. Erstelle das Kontaktblatt, bevor du eine Meinung hast: downscalen auf die wahre Darstellungsgröße, Kreis-Crop wie die App, dann nächste-Nachbarn-Upscaling, um zu sehen, was überlebt.

from PIL import Image, ImageDraw
for s in (110, 44, 32):                         # IG: Profil / DM-Zeile / Feed+Story-Ring
    small = Image.open(f"{n}.jpg").convert("RGB").resize((s, s), Image.LANCZOS)
    mask = Image.new("L", (s*4, s*4), 0)
    ImageDraw.Draw(mask).ellipse((0, 0, s*4-1, s*4-1), fill=255)
    out = Image.new("RGB", (s, s), (245, 245, 247))
    out.paste(small, (0, 0), mask.resize((s, s), Image.LANCZOS))
    out.resize((s*5, s*5), Image.NEAREST).save(f"{n}_{s}.png")    # NEAREST = sieh die Pixel

Ein wunderschönes Bild bei 110px kann bei 44px ein unlesbarer Klecks sein. Instagram-Geometrie: quadratisch hochladen (1024x1024 funktioniert), dargestellt als Kreis, ~110px auf dem Profil, 44px in einer DM-Zeile, 32px in einem Feed- oder Story-Ring. Bewerte bei 32.

Vier Einschränkungen, die den Unterschied ausmachen, alle in voller Größe unsichtbar:

  1. Drei flache Farben, und nicht mehr. Jede zusätzliche Farbe ist ein Mittelton, und Mitteltöne verschmelzen.
  2. Nichts dünner als 1/40 des Bildes. Sage es im Prompt als Zahl.
  3. Das Emblem muss >=85 % der Breite füllen. Gib es in GROSSBUCHSTABEN an; sonst zentriert die Engine ein bescheidenes Zeichen auf viel leerem Grund.
  4. Die heiße Farbe gehört zum GRUND, nicht zu einem Glanzlicht. Ein spiegelnder Glanz ist bei 32px nichts wert; ein volles flaches Feld einer heißen Farbe stoppt einen Daumen. Metallic-Schimmer-Anweisungen lesen sich beim Verkleinern wie Matsch.

Zwei Dinge, die die Engine von sich aus hinzufügt

  • Erwähne den Kreis-Crop niemals im Prompt. Sie wird den Kreis zeichnen. Sage stattdessen: „Flacher, ununterbrochener Grund reicht bis zu allen vier Kanten des Quadrats; das Emblem befindet sich gut innerhalb der mittleren drei Viertel“, und setze kein Kreis, kein Ring, keine Rondelle, keine umschließende Form in den SCHWANZ.
  • Sie fügt eine radiale Vignette hinzu, wenn nicht verboten. Fordere „Jede Füllung absolut flach – kein Verlauf, keine Vignette, keine radiale Verdunkelung an den Ecken oder Kanten.“

Gib niemals dem Basisbild eine Urheberschaft aus einer Stilbeschreibung

Ein von dir geschriebener Stilbegriff („in der Moebius-Tradition“) ist keine Zuschreibung; lass ihn nicht flussabwärts zu einer Quellenangabe werden. Wenn eine Quellenangabe an die Öffentlichkeit geht, frage nach dem wahren Künstler. Eine falsche Quellenangabe für einen echten Künstler ist schlimmer als eine leere.

Mehr als ein Basisbild

--image ist wiederholbar, daher sind mehrere Anker möglich, aber weniger getestet. Sage im Prompt, welches Bild was liefert („Bild 1 ist die Farb- und Liniensprache; Bild 2 ist die Struktur“) und behandle den ersten Spread als Test.

Siehe auch

brand-direction-plates (der umgekehrte Spread: mehrere SPRACHEN bei einem Motiv) · make-art (die Engine, die Flags, die Paste-Extraktion, der Rand-Test).

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

2016judea/ascii-charts

Build charts as plain Unicode-block text — bar, range, bullet, gap-bracket, star-histogram, heatmap, line, Venn, pie, donut and scatter — with a dependency-free Python script, for anywhere only monospace text survives (newsletter code blocks, Markdown, terminals, plain-text email, chat). Use when a chart has to embed as literal text instead of an image or a third-party chart service, or when you want a hand-made terminal look with no branding footer.

2016judea/buffett-checklist

Apply Warren Buffett's investment framework as a discipline lens when weighing a buy, hold, or sell decision — circle of competence, economic moat, owner earnings & intrinsic value, margin of safety, management/capital-allocation quality, and market psychology (Mr. Market, fear vs greed, temperament). Use when asked to "run this through Buffett", "what would Buffett say", "does this pass the moat test", "is this cheap enough", or for a second, more skeptical read on a name being evaluated or already held. This is a discipline overlay, not a replacement for a strategy — it applies the Buffett lens to how someone actually invests, rather than issuing generic advice.

2016judea/leonardo

Draw the way Leonardo da Vinci drew — a study sheet, a notebook folio, a red-chalk or silverpoint study, a machine cutaway, a storm of vortices — in his real materials and page-logic, generated with the make-art engine and anchored on fifteen of his actual (public-domain) sheets. Use when you say "Leonardo", "da Vinci", "like his notebooks", "a codex page of X", "draw this as one of his study sheets", "sanguine", "silverpoint", or wants a design, diagram, or illustration in that hand. Also a reading guide to his notebooks (Richter's 1883 public-domain translation) for "what did Leonardo say about shadow / trees / water". This is a TASK skill; the engine is `make-art`.

2016judea/mcp-stack

Which free MCP server or framework to reach for, and its traps — finance/gov data (SEC EDGAR, Yahoo, SAM.gov, USAspending), web research (Exa, Firecrawl, Crawl4AI, Jina reader), design/art/brand (Canva, Inkscape, Penpot, Figma, Orshot, Hugging Face image gen, vectorizing, charts), data/spatial (DuckDB spatial, live ArcGIS layers, OpenStreetMap/Overpass, Census, MapLibre), and ops (PostHog, iMessage, context7 docs). Use when making a social post, OG card, poster, logo/vector, chart, map, or brand asset; when querying parquet/geojson/duckdb or a city's open-data layer; when an MCP "needs authentication" or fails; or when asked "what tools do we have", "is there an MCP for X", "should we add X".

2016judea/records-request

Get a specific record out of a US government office by public-records request — "request the assessor's model", "file a data practices request", "FOIA this", "open records request", "can we just ask the county for it", "who do I write to at <county>", "chase that request", "did they ever answer". Covers checking the website first, finding the right office and statute, the carve-out paragraph that makes a request answerable instead of refused, web-form traps (hidden character caps, WAFs that reject apostrophes), chasing (there is usually no deadline), whether what comes back may be republished, and parsing multi-year tables without silent errors.

2016judea/sms-native-product

Build a product whose interface is text messages rather than an app or a website — "no app, no website", "they just text a number", "chat with our agent natively in Text Messages", "can we do this over text", "an SMS bot", "a Telegram bot", "make it a group chat", "minimum viable friction". Fires equally when it has already gone wrong — "my campaign got rejected", "our number is blocked", "the texts aren't arriving", "why do I need to register". Covers the gate that decides whether such a product can send at all (US A2P 10DLC registration, SHAFT content rules, permanent rejection codes), group MMS from code, what each channel can't do, an architecture that survives losing the channel, and guarding model-rewritten user content.

2016judea/vertical-market-agent

Build a chat agent that knows one industry in one metro better than any general model because it carries a precomputed digest of real public records (or a mined review corpus) and can pull live records mid-conversation — finding the moat, building a byte-stable substrate, enumerating what the records can't, the data traps that produce plausible wrong numbers, deterministic math in tools, measured prompt cost and cache TTL, shipping as an ad destination, an off-sector ending, and a precomputed spatial "what is this next to" layer. Use when building a vertical AI agent grounded in records rather than general knowledge.

Verwandte Skills