Skip to content
Back to skills

Concept Art

ASecurity

Explore art direction with 3-4 rough concept variants of a character, environment or prop.

  • 77 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 16, 2026
ai-agentsgoshellreact

Works with

  • claude code
  • cursor
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 16, 2026

npx -y skills add SummerEngine/summer --skill concept-art --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Concept Art?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Concept Art
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/summerengine-concept-art-summer/badge)](https://www.skillsdirectory.com/skills/summerengine-concept-art-summer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: concept-art
description: "Explore art direction with 3-4 rough concept variants of a character, environment or prop."
license: MIT
compatibility: [Cursor, Claude Code, Windsurf, Codex]
category: 2d-assets
user-invocable: true
allowed-tools: Read Grep Glob Write Edit summer_assets_generate_image summer_assets_search summer_import_from_url summer_call
paths: ["assets/**", "art/**", "concepts/**"]
---

# concept-art — Batch-of-Variants for Art Direction

This skill produces **3-4 rough concept images** of the same subject under different stylistic interpretations. The goal is not the final asset — the goal is to give the user something visual to react to so they can lock a direction. Variants are deliberately divergent (different palette, mood, framing, era) so the user has real choices, not four near-identical takes.

If the user wants ONE polished image (a dialogue portrait, a hero card), this is the wrong skill — route to `character-portrait`. The `asset-strategy` meta-router uses the disambiguation phrase **"Quick check — exploring the look (3-4 variants for art direction) or generating a final character portrait for dialogue UI?"** to send users to one of the two. If you arrived here without that question being asked, ask it before generating.

## When to use

- "I'm not sure what this character should look like — give me some options."
- "Show me 3-4 directions for the witch."
- "I want a mood board for the swamp level."
- Early-project art direction, before the GameSoul.md visual style is locked.
- The user describes a vibe ("dark fantasy", "Ghibli-esque", "Mobius") and wants to see it rendered.

## When NOT to use

- The user wants a single locked portrait for a dialogue UI → `character-portrait`.
- The user wants pixel art specifically → `pixel-art`.
- The user wants a UI icon or HUD element → `ui-graphics`.
- The user wants a tileable wall/floor texture → `tileable-texture`.
- The user wants an image-to-3D reference → `asset-strategy` (the 3D pipeline has its own prompt suffix).

## Steps

### 1. Confirm exploration vs final

Before generating, ask once:

> Quick check — exploring the look (3-4 variants for art direction) or generating a final character portrait for dialogue UI?

If "final" → hand off to `character-portrait`. If "explore" → continue.

### 2. Search for prior concepts

```
assets.search({ query: "<subject> concept", assetType: "2d_image", scope: "all" })
```

If something already exists, ask if the user wants to riff on it (img2img via `referenceImageUrl`) or start fresh.

### 3. Pick a variant axis

Variants must differ on **one explicit axis**, not noise. Pick one:

| Axis | Use when |
|---|---|
| Palette / mood | "Should this feel grim or hopeful?" |
| Era / setting | "Medieval, sci-fi, modern, post-apoc?" |
| Stylization | "Painterly, anime, photoreal, Mobius line-art?" |
| Silhouette / proportions | Character design — slim/bulky/childlike/monstrous |
| Time of day / lighting | Environment — dawn/noon/dusk/night |

State the axis to the user before generating: "I'll vary on **stylization** — painterly, anime, line-art, photoreal. OK?"

### 4. Generate the batch

Issue 3-4 calls in parallel, one per variant. Use the same subject phrasing across all four; only the style-modifier changes.

```
assets.generate_image({
  prompt: "<subject>. <axis variant 1>. concept art, evocative, rough painterly, atmospheric lighting, wide cinematic framing",
  model: "nano-banana-2",
  style: "none"
})
```

`style: "none"` is intentional: only `cartoon` and `anime` append anything to the prompt, `realistic` and `none` append nothing, and any other value is coerced to `none`. So the preset cannot override the prompt's stylistic direction — it just contributes nothing, which is what concept art wants. All four variants' divergence has to come from the prompt.

For a shape other than square, pass `aspectRatio` (`"16:9"`, `"9:16"`, ...) or `width` + `height`; the result reports the real width and height and the model that ran. Exploration images are thrown away, so square is usually fine. Background removal is the `removeBackground` argument (there is no `options` object). Four variants are four charges: `dryRun: true` on one call shows its credits.

### 5. Present the batch

After all 4 return, show the user the thumbnails (link `thumbnailUrl` for each) and ask:

> Which direction lands? I can generate variants on the chosen one, or hand off to `character-portrait` for a final.

Do NOT import any of these as `res://` assets yet. Concept art is reference, not shipped art. Only import once the user picks a winner — then either it goes to `character-portrait` for a polished version or directly to `summer_import_from_url` if they want to use it as-is as a reference.

## Prompt patterns

The structure: **subject + axis variant + "concept art" + lighting/atmosphere**. Keep prompts under 30 words.

| Goal | Prompt that works | Why |
|---|---|---|
| Character — palette axis | `young witch with raven familiar. <warm autumn palette / cold blue moonlit palette / sickly green swamp palette / monochrome ash palette>. concept art, painterly, atmospheric` | Locked subject + four explicit palettes |
| Character — silhouette axis | `goblin warrior. <slim wiry / hulking brute / childlike imp / multi-limbed mutant>. concept art, full body, rough painterly` | Forces real shape variation |
| Environment — mood axis | `swamp village at dusk. <hopeful warm lanterns / oppressive fog / abandoned ruins / overgrown nature reclaim>. concept art, wide shot, atmospheric` | Mood drives composition |
| Environment — stylization axis | `mountain temple. <Studio Ghibli soft painterly / Mobius clean line-art / dark Berserk ink / Hayao detailed wash>. concept art, wide establishing shot` | Names real reference styles the model recognizes |
| Prop — era axis | `royal sword. <bronze age / medieval / ornate baroque / sci-fi energy>. concept art, three-quarter view, neutral background` | Era as the only varying dimension |
| Creature — physiology axis | `forest spirit. <deer-like elegant / fungal grotesque / jellyfish floating / branch-and-moss elemental>. concept art, atmospheric, painterly` | Forces real morphological divergence |

### Bad prompts (and why)

| Bad | Failure mode |
|---|---|
| `cool fantasy character` | No subject, no axis. All 4 variants will look interchangeable. |
| `make 4 different witches` | Model doesn't render "4 of"; you must call 4 times. |
| `epic concept art masterpiece trending on artstation` | Adjective soup. Trending-on-artstation is a 2022 cliche; modern models render it as bland slop. |
| `same character but different` | "Different" is undefined. Pick an axis and name it. |

## Anti-patterns

- **Generating 4 near-identical variants** because you didn't pick a real axis. The user can't choose between four images that all look like the same painting.
- **Importing concept art as final assets.** These are exploration. The polished version comes from `character-portrait` after a direction is picked.
- **Treating `style` as the variant axis.** The presets are `realistic | cartoon | anime | none`, and only two of them append anything. Four "stylization" variants have to differ in their prompt text, not in the `style` argument.
- **Skipping the disambiguation question.** If you don't ask, you may generate four rough variants when the user wanted one polished bust.
- **Generating before the GameSoul.md is written.** If `.summer/GameSoul.md` exists, read it first — its visual-style section narrows the axis.

## Edge cases

- **User says "just one" after you propose 4.** That's a `character-portrait` job. Hand off.
- **User wants 8+ variants.** Generate 4 first; if the user wants more on the same axis, generate 4 more. Don't dump 8 at once — overload paralyzes choice.
- **Subject is a fully described scene, not an asset.** You're producing key art, not asset reference. Pass `aspectRatio: "16:9"` (or `width: 1920, height: 1080` for store key art) and bias toward atmospheric.
- **User wants the final to be 3D.** After they pick a direction, route to `asset-strategy` — concept-art images are not 3D-ready references (they have backgrounds, scene context, dramatic lighting baked in). The 3D pipeline needs its own clean white-background reference.

## Without Summer Engine

In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), every step works. Pass `out` with the person's folder so the batch lands there (the `summer-assets` skill says how), and skip `summer_import_from_url`.

## Fallback (no MCP)

Print the 4 prompts and the call for each:

```
assets.generate_image({ prompt: "<variant 1>", model: "nano-banana-2", style: "none" })
assets.generate_image({ prompt: "<variant 2>", ... })
...
```

Tell the user to run via the Summer dashboard, then come back and `summer_import_from_url` the winning variant.

## Handoff

Once the user picks a direction:

- **Character / NPC final** → `character-portrait` (use the picked variant as `referenceImageUrl`).
- **3D model from this concept** → `asset-strategy` (regenerate a 3D-ready reference; concept art is not 3D-ready as-is).
- **Tileable texture from this mood** → `tileable-texture`.
- **Pixel-art version** → `pixel-art`.
- **Lock the visual direction** → write the choice into `.summer/GameSoul.md` under `## Visual style` so future asset skills inherit it.

## See also

- `asset-strategy` — meta-router that delegates here vs other 2d-assets skills.
- `character-portrait` — the polished single-image counterpart.
- `summer_docs_read` id `reference/mcp-tools-reference` — how to call `assets.generate_image`.

<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
## From a shell

No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@4.3.0` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.

| In this skill | Command |
|---|---|
| `assets.generate_image`, `summer_assets_generate_image` | `summer assets generate-image` |
| `summer_assets_search` | `summer assets search` |
| `summer_docs_read` | `summer docs read` |
| `summer_import_from_url` | `summer engine import-from-url` |
<!-- /shell-commands -->

Files in this skill

  • SKILL.md10.3 KB
  • resource.yaml852 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.