From jack-tar-cloud
Generate a vector icon (SVG) via a cloud API and report the file path with cost.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jack-tar-cloud:recraft-iconThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate a vector icon (SVG) via a cloud API and report the file path with cost.
Generate a vector icon (SVG) via a cloud API and report the file path with cost.
This skill wraps src/generate_cloud_icon.py. Recraft V4 is the ONLY model that produces native SVG output -- this is why icons always route to cloud even in draft mode.
PLUGIN_ROOT=$(python3 -c "
from pathlib import Path
import sys, os
if os.environ.get('JACK_TAR_CLOUD_ROOT'):
print(os.environ['JACK_TAR_CLOUD_ROOT']); sys.exit()
home = Path.home()
for base in [home / '.claude' / 'plugins' / 'cache']:
for p in base.rglob('jack-tar-cloud/.claude-plugin/plugin.json'):
print(str(p.parent.parent)); sys.exit()
dev = Path.cwd() / 'plugins' / 'jack-tar-cloud'
if dev.exists():
print(str(dev)); sys.exit()
print('NOT_FOUND')
" 2>/dev/null)
if [ -z "$PLUGIN_ROOT" ] || [ "$PLUGIN_ROOT" = "NOT_FOUND" ]; then
echo "ERROR: jack-tar-cloud plugin not found."
exit 1
fi
Parse $ARGUMENTS for:
recraft, fal). Default: recraftoutput/icon-YYYYMMDD-HHMMSS.svg)003366,FFCC00,F5F5F5)svg default, png). SVG strongly preferred for icons.standard, pro). Default: standardIf no description is provided, stop and tell the user what they need to provide.
If --colors is provided, convert hex values to RGB dicts for the API:
colors_hex = "$COLORS".split(",")
colors_rgb = [
{"r": int(h[0:2], 16), "g": int(h[2:4], 16), "b": int(h[4:6], 16)}
for h in colors_hex
]
Before generating, verify the provider is configured:
PYTHONPATH="$PLUGIN_ROOT" python3 -c "
from src.provider_discovery import discover_providers
providers = discover_providers()
provider = '$PROVIDER'
if provider == 'recraft':
p = providers.get('recraft', {})
env_var = 'RECRAFT_API'
else:
p = providers.get('fal', {})
env_var = 'FAL_KEY'
print('available' if p.get('available') else f'not_configured: set {env_var}')
"
If not configured, tell the user which environment variable to set:
recraft needs RECRAFT_API (see research/04-cloud-api-setup-licensing.md section D)fal needs FAL_KEY (see research/04-cloud-api-setup-licensing.md section C)PYTHONPATH="$PLUGIN_ROOT" python3 -c "
import json
from src.generate_cloud_icon import generate_cloud_icon
result = generate_cloud_icon(
prompt='''$PROMPT''',
provider='$PROVIDER',
output_path='$OUTPUT',
colors=$COLORS_RGB,
output_format='$FORMAT',
tier='$TIER',
)
print(json.dumps(result, indent=2))
"
Report to the user:
For best results with Recraft V4:
--colors parameter for brand consistencyvector_illustration style for flat icons, icon style for app icons| Provider | Tier | Format | Cost |
|---|---|---|---|
| Recraft Direct | standard | SVG | $0.08 |
| Recraft Direct | pro | SVG | $0.30 |
| FAL.ai Recraft | standard | SVG | $0.08 |
| FAL.ai Recraft | pro | SVG | $0.30 |
| Recraft Direct | standard | PNG | $0.04 |
| Recraft Direct | pro | PNG | $0.25 |
Currently neither Recraft nor FAL.ai is configured. Both provider functions are stubbed with clear error messages pointing to setup documentation.
npx claudepluginhub stevegjones/jack-tar-deckhand --plugin jack-tar-cloudCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.