Moodboard Generator logo

Moodboard Generator

Community
Stanestane
moodboard-generator

Build a themed visual moodboard — sources candidate images from the web, curates them for color harmony, composition, and mood fit, and composes a properly designed board (not a plain photo grid) as an HTML artifact and a flattened PNG. Use this any time the user asks for a moodboard, mood board, visual reference board, inspiration board, style board, or aesthetic/color-palette collage for a theme, brand, room, character, game, event, or creative project — even if they just describe a vibe or aesthetic ("something coastal and mid-century", "cyberpunk night market energy") without using the word "moodboard" explicitly. Also use when asked to research visual references for a look, pull a color palette from a theme, or build a reference sheet for design/art direction.

Overview

PublisherStanestane
Repositorygame-design-skills-bundle
Skill namemoodboard-generator
Stars
87
Forks
18
Bundled files
3
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 3 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Stanestane on GitHub. Read the source before you install it.

Installation

Install the Moodboard Generator AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Stanestane/game-design-skills-bundle/tree/master/moodboard-generator
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Stanestane/game-design-skills-bundle.git /tmp/game-design-skills-bundle
mkdir -p .claude/skills
cp -r /tmp/game-design-skills-bundle/moodboard-generator .claude/skills/moodboard-generator
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Moodboard Generator in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Moodboard Generator on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Moodboard Generator is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Moodboard Generator

A moodboard is a composition, not a photo dump. The difference between a board that looks curated and one that looks like a Pinterest search result is entirely in the steps below: interpreting the brief into a real color/shot-type plan, curating hard, and laying the board out with deliberate visual hierarchy.

Read references/composition-principles.md before curating — it covers hero-image selection, shot-type variety, color harmony types, and layout balance. Refer back to it during curation, not just once at the start.

Copyright review of sourced images is handled by a separate skill/process — don't self-censor source selection on copyright grounds here; just source and curate for visual fit.

Workflow

1. Interpret the brief

Turn whatever the user gave you — a phrase, a mood, a character, a brand, a room — into a concrete plan before searching:

  • Mood adjectives (3-5 words): what should someone feel looking at this?
  • Color harmony (see reference doc): monochrome / analogous / complementary / triadic / neutral+accent — name it explicitly.
  • Subject/shot list: what specific things, textures, and scenes would embody this theme? Aim for the shot-type variety in the reference doc (hero/establishing, environment, detail/object, texture/material, human if relevant).
  • Typography style: serif / sans / script / condensed, matched to mood.

If the brief is vague ("something cozy"), make a confident interpretive choice and state it rather than asking the user to fill in a spec — moodboards are inherently about proposing a direction, not executing an exact one.

2. Source candidate images — with real, embeddable URLs

This is the step most likely to go wrong, so be deliberate about it: the board needs actual https://... image URLs that will load in a browser, not just images you've looked at.

The image-search tool is good for a quick visual gut-check but does not hand you a usable URL — don't try to embed anything from it directly into the board.

Instead, source from stock-photo sites via web_fetch, which returns their real images.pexels.com / images.unsplash.com CDN URLs paired with descriptive captions, right in the fetched content:

web_fetch("https://www.pexels.com/search/<query>/")
web_fetch("https://unsplash.com/s/photos/<query>")

(URL-encode multi-word queries, e.g. sun%20bleached%20concrete. If web_fetch rejects a guessed URL as unseen, run a quick web_search for <query> pexels or <query> unsplash first, then fetch the result link — the tool requires a URL to have appeared in a prior search/fetch.)

Each result gives you a caption ("Detailed close-up of beige wool texture...") next to its direct CDN image URL — that caption is your composition/color signal; you don't need to separately view the pixel to judge fit for most images. Pexels URLs also support size params (?auto=compress&cs=tinysrgb&w=1200) and Unsplash ones support ?w=1200&h=1600&fit=crop&auto=format — use these to request roughly the aspect ratio your layout slot needs.

Run several distinct, targeted queries per board — not one broad query. Five to eight queries covering different shot types from your plan will surface far better variety than one query repeated. Examples for a "coastal modernism" brief:

  • "sun bleached concrete architecture"
  • "mid century modern coastal house"
  • "linen textile texture natural light"
  • "driftwood weathered wood texture"
  • "minimalist window ocean view"

Aim to gather roughly 20-40 candidates across all queries before curating — you need a large enough pool to be selective in the next step.

3. Curate

This is the step that actually makes the board good — don't skip to layout, and don't curate from captions alone. Caption text tells you what a photo is of, not whether it's actually a strong, specific, on-mood shot — generic-sounding captions ("rainy street with neon reflections") often turn out to be generic images. Before committing to a set, spend a few image-search calls actually looking at the strongest candidates, especially hero contenders, and prefer iconic/specific subject matter over generic keyword matches (for a Tokyo brief, "Shibuya crossing at night" and "Shinjuku izakaya alley" beat five interchangeable "wet street neon" shots). Watch for AI-generated stock (sites like StockCake label it explicitly, e.g. "stock AI image") and avoid it in favor of real photography — a moodboard is a material/color/light reference, and AI-generated images are a weaker reference for that than real photos.

For each candidate, weigh it against the plan from Step 1:

  • Does its color story fit the named harmony? (on-palette vs. off-palette)
  • What shot type is it (hero/environment/detail/texture)? Do you already have enough of that type?
  • Composition quality on its own terms — is it a strong, clear image, or cluttered/ ambiguous?
  • Does it actually feel like the mood adjectives, or just technically match the keywords?
  • Is it specific and iconic to the theme, or a generic stand-in that could belong to any similar brief?

Default to 8-16 images that together cover the shot-type checklist and hold a coherent palette, with one clear standout for the hero slot. If the user asks for a denser or "maxed out" board, push toward 16-18 and make the mood/detail split explicit: several wide/tall shots that carry the overall scene, plus a real cluster of small tiles doing pure macro/texture/detail work — not just more of the same shot type. Cutting a mediocre or generic image is almost always better than keeping it for volume.

While curating, note 4-6 palette colors (as hex codes) that represent the board's color story, inferred from the captions and your own knowledge of the theme. Precision isn't critical, coherence is.

4. Assign layout roles

For each curated image, assign:

  • size: "hero" (at most one — optional, see the reference doc; skip it entirely if no image is a clear standout), "wide" or "tall" (matches the image's own orientation — don't stretch a portrait shot into a wide slot), "normal", or "small" for minor supporting/texture shots.
  • alt: a short description.

Don't add source links or credit labels on the tiles — keep the board visually clean.

Balance sizes so the board has real hierarchy — don't make everything "normal". A typical 10-image board might be: 1 hero, 2 wide, 2 tall, 3 normal, 2 small.

5. Build the board

Write a JSON file matching the schema documented at the top of scripts/build_html_moodboard.py, then run:

bash
python3 scripts/build_html_moodboard.py board.json board.html

This produces a self-contained HTML file with a deterministic JS masonry layout (not CSS Grid or CSS columns — both have real gap/content-loss failure modes in browsers; see the comment at the top of the script for why). The hero, if present, spans two columns as a large focal tile alongside other images — never the full board width, which crowds out everything else. A palette swatch strip and mood-matched Google Fonts typography for the title round it out. Open/view it and sanity-check against the Step 6 checklist in the reference doc before moving on — this is cheap to fix now (swap a JSON entry, rerun) and expensive to fix after PNG export.

Present the HTML as an artifact so the user can review it inline.

6. Export PNG

bash
python3 scripts/render_png.py board.html board.png

This tries a headless browser render. If it fails (exit code 2) — most commonly because the current environment can't reach the internet to install a browser or load the image/font URLs — tell the user plainly: PNG export isn't available in this environment, the HTML file is the deliverable, and they can open it in a browser and use the browser's own screenshot/print-to-image if they need a flat file. Don't present this as the skill having failed; the HTML board is fully valid and reviewable on its own.

If it succeeds, present both the HTML and PNG files to the user.

Iterating

If the user wants changes (swap an image, shift the palette, try a different harmony), edit the JSON and rerun build_html_moodboard.py rather than hand-editing the HTML — keeps the source of truth consistent if they ask for another round after that.


Part of the Game Design Skills Bundle by Stanislav Stankovic. Licensed under PolyForm Noncommercial 1.0.0 — free for personal, academic and nonprofit use. Commercial use requires a licence, sold as skill packs. See https://github.com/Stanestane/game-design-skills-bundle for terms.

Required Notice: Copyright Stanislav Stankovic (https://www.stane-island.net/)

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Moodboard Generator AI skill do?

Build a themed visual moodboard — sources candidate images from the web, curates them for color harmony, composition, and mood fit, and composes a properly designed board (not a plain photo grid) as an HTML artifact and a flattened PNG. Use this any time the user asks for a moodboard, mood board, visual reference board, inspiration board, style board, or aesthetic/color-palette collage for a theme, brand, room, character, game, event, or creative project — even if they just describe a vibe or aesthetic ("something coastal and mid-century", "cyberpunk night market energy") without using the...

Why use Moodboard Generator on TypingMind?

Because you install it once and use it with any model. Moodboard Generator is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Moodboard Generator in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Stanestane/game-design-skills-bundle/tree/master/moodboard-generator. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Moodboard Generator?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Moodboard Generator?

As many as you like. As long as a model supports skills, you can use Moodboard Generator with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Moodboard Generator AI skill free?

It is published on GitHub by Stanestane. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇