skills/style-creator/SKILL.md
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.
npx skillsauth add b-open-io/gemskills style-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Add new art styles to the gemskills style library with properly crafted prompts, reference tiles, and registry entries.
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:
sips -s format png -s formatOptions best <tile-path> --out <tile-path>
Follow these steps in order. Do not skip steps.
Gather from the user:
miami-aesthetic)miam)traditional, digital, illustration, photography, design, retro, technique, decorative, creative, culturalIf the user provides only a name or concept, derive the ID and short name automatically. Choose the category that best fits.
The promptHints field is a comma-separated string of descriptors prepended to user prompts when the style is used. Focus on:
Keep to 8-12 descriptors. These guide the model when generating user images, not the tile itself.
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:
Full-bleed [style] filling the entire canvasextreme close-up macro texture, seamless pattern, abstract compositioncracked canvas, halftone dots, VHS static, watercolor bleedchiaroscuro, pastel gradients, neon rim light, sepia tonesEdge to edge, no frame, no border, no [style-specific items]Category tips:
dense montage or extreme macro of brushworkAnti-container items to add based on style:
no canvas, no easel, no gallery, no museum, no wallno hoop, no frame, no desk, no tableno letterbox, no black bars, no monitor, no screenno cloth edge, no fabric edge, no bed, no furnitureAdd the new style entry to the styles array in:
${CLAUDE_PLUGIN_ROOT}/skills/browsing-styles/assets/styles.json
Entry format:
{
"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.
Generate the reference tile using the tile generation script:
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:
bun run ${CLAUDE_PLUGIN_ROOT}/optimize -- --file=skills/browsing-styles/assets/tiles/<style-id>.png
If sharp is unavailable, use sips:
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:
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
Do not read the generated tile back into context. Ask the user to visually inspect it. Common issues:
If it fails, update the tilePrompt and regenerate.
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:
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');
"
Bump the patch version in ${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json and commit all changes.
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.
development
This skill should be used when the user asks to "plan a workflow", "diagram an agent system", "visualize an architecture", "map out a pipeline", "create a flow diagram", "draw agent connections", "design a multi-agent system", "show how agents interact", "make a system diagram", "visualize a data pipeline", "map out a process", "diagram my workflow", "create an architecture diagram", "plan agent orchestration", "brainstorm a system design", "show the flow between components", "interactive workflow diagram", "workflow canvas", "visual-planner", "open in tldraw", or "plan this project visually". Produces tldraw .tldr diagrams natively — the standard infinite canvas format. Includes a thin playground wrapper with planning-specific UI (phase controls, agent assignment, KPI bar, agent callback bridge) and an "Open in tldraw" button for standalone editing.
data-ai
This skill should be used when the user asks to "upscale an image", "increase image resolution", "make image bigger", "enlarge image", or "enhance image resolution". Requires Vertex AI credentials.
data-ai
This skill should be used when the user asks to "create team photo", "generate group portrait", "make team banner", "team image in any style", "group shot with multiple people", or needs a composite image featuring multiple team members arranged together in any art style.
data-ai
This skill should be used when the user asks to "segment an image", "identify objects", "extract objects", "generate masks", "find objects in image", or needs AI-powered image segmentation.