b-open-io/gemskills/style-creator

Claude Code and agent skill by b-open-io/gemskills

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

This skill should be used when the user asks to "add a new style", "create a style", "add an art style", "new aesthetic", "custom style", "make a style for", or needs to add a new art style to the gemskills style library. Guides the complete workflow from defining the style to generating and optimizing the reference tile.

Install

npx vskill@latest install b-open-io/gemskills/style-creator

SKILL.md

Style Creator

Add new art styles to the gemskills style library with properly crafted prompts, reference tiles, and registry entries.

When to Use

  • Adding a new art style to the library
  • Creating a regional or cultural aesthetic style
  • Defining a custom visual style with a reference tile
  • Batch-adding multiple related styles

Important: Working Directory

All file edits and commands operate relative to ${CLAUDE_PLUGIN_ROOT} (the plugin root).

Sharp may fail in the plugin cache. If bun run optimize fails, the tile generation script auto-optimizes. If both fail, use sips as a fallback:

bash
sips -s format png -s formatOptions best <tile-path> --out <tile-path>

Workflow

Follow these steps in order. Do not skip steps.

Step 1: Define the Style

Gather from the user:

  • Name: Human-readable name (e.g. "Miami Aesthetic")
  • ID: Lowercase with hyphens (e.g. miami-aesthetic)
  • Short name: 3-4 character abbreviation (e.g. miam)
  • Category: One of: traditional, digital, illustration, photography, design, retro, technique, decorative, creative, cultural

If the user provides only a name or concept, derive the ID and short name automatically. Choose the category that best fits.

Step 2: Write promptHints

The promptHints field is a comma-separated string of descriptors prepended to user prompts when the style is used. Focus on:

  • Color palette keywords
  • Texture and material descriptors
  • Technique and medium references
  • Mood and atmosphere terms
  • Compositional patterns

Keep to 8-12 descriptors. These guide the model when generating user images, not the tile itself.

Step 3: Write the tilePrompt

Apply these principles — do NOT read external reference files, the rules are right here:

Core principle: Texture vs Object. The tile must transfer materiality/medium/technique, NOT a scene. A tile showing "a cyberpunk city" will bleed city elements into every user prompt. A tile showing "neon refractions on chrome with film grain" transfers only the visual physics.

6-part prompt structure:

  1. Full-bleed anchor: Full-bleed [style] filling the entire canvas
  2. Macro/texture anchor: extreme close-up macro texture, seamless pattern, abstract composition
  3. Style descriptors: Specific movements, artists, time periods
  4. Materiality/medium: What the art is "made of" — cracked canvas, halftone dots, VHS static, watercolor bleed
  5. Palette and lighting: chiaroscuro, pastel gradients, neon rim light, sepia tones
  6. Anti-container enforcers: Edge to edge, no frame, no border, no [style-specific items]

Category tips:

  • Abstract styles: Focus on geometry and brushwork, avoid naming objects
  • Figurative styles (anime, comic): Generate the ink and paper, not a character. Use dense montage or extreme macro of brushwork
  • Photography: Focus on camera artifacts — grain, light leaks, vignette, bokeh
  • Design movements: Focus on repeating motifs and materials
  • Regional aesthetics: Color palette and textures, NOT photos of places. No buildings, streets, or landmarks.

Anti-container items to add based on style:

  • Paintings: no canvas, no easel, no gallery, no museum, no wall
  • Crafts: no hoop, no frame, no desk, no table
  • Photos: no letterbox, no black bars, no monitor, no screen
  • Textiles: no cloth edge, no fabric edge, no bed, no furniture
Step 4: Add to styles.json

Add the new style entry to the styles array in:

${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/assets/styles.json

Entry format:

json
{
"id": "style-id",
"shortName": "shrt",
"name": "Style Name",
"category": "category",
"promptHints": "descriptor1, descriptor2, descriptor3",
"tilePrompt": "Full-bleed ... Edge to edge, no frame, no border."
}

Verify the ID and short name are unique across all existing styles before adding.

Step 5: Generate the Tile

Generate the reference tile using the tile generation script:

bash
bun run --cwd ${CLAUDE_PLUGIN_ROOT} ${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/scripts/generate_tiles.ts --style <style-id>

This generates a 512x512 PNG tile at assets/tiles/<style-id>.png and auto-optimizes it.

If auto-optimization fails, try manually from the plugin root:

bash
bun run ${CLAUDE_PLUGIN_ROOT}/optimize -- --file=skills/browsing-styles/assets/tiles/<style-id>.png

If sharp is unavailable, use sips:

bash
sips -s format png -s formatOptions best ${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/assets/tiles/<style-id>.png --out ${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/assets/tiles/<style-id>.png

If the style benefits from a reference image (e.g. a regional aesthetic), use the generate-image script with --input:

bash
bun run --cwd ${CLAUDE_PLUGIN_ROOT} ${CLAUDE_PLUGIN_ROOT}/skills/generate-image/scripts/generate.ts \
"<tilePrompt text>" \
--input /path/to/reference.jpg \
--aspect 1:1 --size 1K \
--output ${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/assets/tiles/<style-id>.png
Step 6: Visual Verification

Do not read the generated tile back into context. Ask the user to visually inspect it. Common issues:

  • Not full-bleed? (frames, borders, containers, canvas edges)
  • Shows a scene instead of the aesthetic?
  • Wrong color palette?
  • Text, logos, or trademarked content?

If it fails, update the tilePrompt and regenerate.

Step 7: Update Counts

After adding styles, update the style count in these files:

  • ${CLAUDE_PLUGIN_ROOT}/README.md (style count mentions)
  • ${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json (description text and version bump)
  • ${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/SKILL.md (count)
  • ${CLAUDE_PLUGIN_ROOT}/skills/team-group-photo/SKILL.md (count)

Regenerate STYLES.md from the plugin root:

bash
bun -e "
const root = process.env.CLAUDE_PLUGIN_ROOT;
const data = JSON.parse(require('fs').readFileSync(root + '/skills/browsing-styles/assets/styles.json', 'utf8'));
const styles = data.styles;
const cats = data.categories;
const grouped = {};
for (const s of styles) { if (!grouped[s.category]) grouped[s.category] = []; grouped[s.category].push(s); }
let md = '# Art Styles Reference\n\n' + styles.length + ' styles across ' + Object.keys(grouped).length + ' categories. Use \\\`--style <id>\\\` or \\\`--style <short>\\\` with any image generation skill.\n\n## Categories\n\n| Category | Count | Description |\n|----------|-------|-------------|\n';
for (const [cat, desc] of Object.entries(cats)) { md += '| ' + cat + ' | ' + (grouped[cat]?.length || 0) + ' | ' + desc + ' |\n'; }
md += '\n';
for (const [cat, desc] of Object.entries(cats)) { const items = grouped[cat] || []; if (!items.length) continue; md += '## ' + cat.charAt(0).toUpperCase() + cat.slice(1) + '\n\n| Tile | ID | Short | Name |\n|------|-----|-------|------|\n'; for (const s of items) { md += '| <img src=\"skills/browsing-styles/assets/tiles/' + s.id + '.png\" width=\"80\" /> | ' + s.id + ' | ' + s.shortName + ' | ' + s.name + ' |\n'; } md += '\n'; }
require('fs').writeFileSync(root + '/STYLES.md', md);
console.log('STYLES.md written with ' + styles.length + ' styles');
"
Step 8: Bump Version and Commit

Bump the patch version in ${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json and commit all changes.

Context Discipline

Do not read generated tile images back into context. The scripts output file paths only. Ask the user to visually inspect tiles and provide feedback for iteration.

Provider support

Tile generation (browsing-styles/scripts/generate_tiles.ts) calls Gemini directly because tiles are the Gemini style-reference format, so this skill needs GEMINI_API_KEY. The optional reference-image path through generate-image --input also works on OpenAI (--provider openai), but the tile is only consumed as a style reference by Gemini.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
2
7-day trend score
5

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 17 Mar 2026, 7 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/b-open-io/gemskills/style-creator/badge)](https://verified-skill.com/skills/b-open-io/gemskills/style-creator)

Something wrong with this skill or its page? Tell us.