CommunityImagegithub.com

jp-skill-image

Génère une image à partir d'une description textuelle en utilisant Cloudflare Workers AI (modèle flux-1-schnell). À utiliser chaque fois que l'utilisateur souhaite créer, générer, fabriquer ou dessiner une image / photo / logo / icône / vignette / fond d'écran / bannière / couverture à partir d'une idée textuelle.

Qu'est-ce que jp-skill-image ?

Cette skill transforme une requête en langage naturel en une image générée par le modèle **Flux-1-schnell** de Cloudflare Workers AI. L'utilisateur exprime son idée (par exemple « crée un logo de café »), Claude enrichit et optimise le prompt, puis un script Python local (sans dépendances externes) appelle l'API Cloudflare et sauvegarde le résultat en JPG. Elle est conçue pour fonctionner avec Claude Code (ou tout agent capable d'exécuter des scripts Python), et nécessite que les variables d'environnement `CF_ACCOUNT_ID` et `CF_API_TOKEN` soient définies (dans un fichier `.env` local ou global). Le vrai point fort de cette skill réside dans la capacité de Claude à rédiger un prompt anglais de haute qualité pour Flux, en détaillant le sujet, le style, la composition, l'éclairage et le niveau de détail. Par défaut, l'image est générée avec 8 étapes de diffusion pour une qualité optimale, mais l'utilisateur peut demander plus de rapidité (4 étapes). La skill s'active automatiquement sur des phrases comme « génère une image de », « crée un logo », « fais-moi une vignette », etc.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/josephprada/jp-skill-image/tree/HEAD

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait jp-skill-image ?

Convertit une requête en langage naturel en une image générée avec Cloudflare Workers AI (@cf/black-forest-labs/flux-1-schnell). Voici le flux complet : l'utilisateur décrit ce qu'il veut, Claude fait l'ingénierie du prompt, le script appelle l'API Cloudflare, et l'image est sauvegardée localement en JPG.

Quand l'utiliser

L'utilisateur veut une image générée à partir d'une description — "génère un logo pour un café", "fais-moi une vignette pour ma vidéo sur l'IA", "une photo d'un chat cyberpunk". Claude est responsable de transformer une demande vague en un bon prompt avant de générer.

Ne s'applique pas à : l'édition d'une image existante, l'art vectoriel/SVG ou la vidéo.

Étape 0 — VÉRIFIER TOUJOURS le .env d'abord

Avant d'exécuter le script, vérifie que les identifiants sont résolus. Le script les cherche dans cet ordre : variables d'environnement réelles → .env du répertoire actuel ou d'un parent → ~/.claude/skills/jp-skill-image/.env (solution de secours globale).

python3 -c "import sys; sys.path.insert(0, '$HOME/.claude/skills/jp-skill-image'); from generate import load_credentials; print('OK' if all(load_credentials()) else 'MISSING')"

Si une variable est manquante (nouvel utilisateur / projet fraîchement cloné), n'essaie PAS de générer l'image — indique d'abord à l'utilisateur, en 3 étapes courtes, comment les obtenir :

  1. CF_ACCOUNT_ID : Tableau de bord Cloudflare → n'importe quel domaine/projet → Workers & Pages → Overview (apparaît à droite), ou directement dans https://dash.cloudflare.com/profile/account-id... s'il n'y apparaît pas, utiliser l'ID visible dans l'URL du tableau de bord ou dans la section Manage Account du menu latéral gauche (pas "My Profile").
  2. CF_API_TOKEN : https://dash.cloudflare.com/profile/api-tokens → Create Token → Custom Token → permission Account.Workers AI Scripts: Edit → Account Resources : ton compte → Create.
  3. Crée le fichier .env — à la racine du projet, ou dans ~/.claude/skills/jp-skill-image/.env pour qu'il fonctionne depuis n'importe quel dossier — avec :
    CF_ACCOUNT_ID=xxxxx
    CF_API_TOKEN=xxxxx
    

Si le projet utilise un proxy d'entreprise pour accéder à Internet (vérifie si HTTPS_PROXY existe dans .npmrc ou si les requêtes vers des API externes échouent par timeout), ajoute aussi :

HTTPS_PROXY=<proxy-entreprise>

Une fois confirmé que les variables existent, continue normalement.

Comment l'exécuter

Depuis n'importe quel répertoire (l'image est sauvegardée par rapport au répertoire courant) :

python3 ~/.claude/skills/jp-skill-image/generate.py "<prompt optimisé>" -o <nom-fichier>.jpg --steps <N>
  • "<prompt optimisé>" — le prompt que tu écris (voir ci-dessous), pas les mots bruts de l'utilisateur.
  • -o / --output — où sauvegarder (par défaut out.jpg). Utilise un nom court et descriptif, ex. coffee-logo.jpg.
  • --steps — étapes de diffusion (par défaut 4). flux-schnell est affiné pour peu d'étapes, mais pour la MEILLEURE qualité utilise 8 sauf si l'utilisateur demande de la rapidité. N'utilise jamais moins de 4.

Le script affiche Saved <fichier> ... en cas de succès, ou une erreur lisible en cas d'échec (inclut le cas de réponse JSON avec image en base64, déjà géré en interne).

Le vrai travail de Claude : écrire un prompt de qualité maximale

La valeur de cette skill réside dans le fait que Claude enrichit l'intention de l'utilisateur en un prompt vivant, spécifique et techniquement correct avant d'appeler le script. Ne passe jamais la demande de l'utilisateur telle quelle — travaille-la d'abord.

Un prompt de haute qualité pour Flux doit nommer, dans cet ordre :

  1. Sujet principal — ce qui se trouve dans la scène, de manière concrète et sans ambiguïté.
  2. Style/médium — photo réaliste, rendu 3D, vectoriel plat, aquarelle, isométrique, pixel art, etc.
  3. Composition et cadrage — gros plan, plan large, centré, règle des tiers, angle de caméra.
  4. Éclairage et ambiance — heure dorée, néon, lumière de studio douce, ombres dramatiques, contre-jour.
  5. Couleur et niveau de détail — palette spécifique, arrière-plan, textures, niveau de détail ("highly detailed", "clean minimal").
  6. Qualité technique (pour photos/rendus réalistes) — des termes comme "cinematic", "8k", "sharp focus", "professional photography" aident Flux à se rapprocher de résultats premium.

Exemple de transformation :

  • Utilisateur : "un logo pour un café"
  • Prompt que tu passes : "minimalist logo of a steaming coffee cup, flat vector illustration, warm brown and cream palette, centered on a clean off-white background, simple bold shapes, modern branding, professional design"

Règles strictes :

  • Prompt en anglais toujours (Flux répond mieux).
  • 1-2 phrases, denses en informations, sans remplissage.
  • Ne demande jamais de texte/mots lisibles dans l'image — Flux ne les rend pas bien.
  • Si l'utilisateur ne donne pas assez de détails, comble toi-même les lacunes avec les meilleures décisions créatives (ne demande que si le sujet est vraiment ambigu).
  • Utilise --steps 8 par défaut pour maximiser la qualité ; ne passe à 4 que si l'utilisateur demande explicitement de la rapidité.

Après la génération

  1. Confirme que le fichier a été sauvegardé (le script affiche le chemin).
  2. Dis à l'utilisateur le nom du fichier et le prompt exact que tu as utilisé, afin qu'il puisse l'ajuster et ré-exécuter.
  3. S'il veut des variations, exécute à nouveau avec un prompt modifié et un nouveau -o.

Prérequis techniques

  • CF_ACCOUNT_ID et CF_API_TOKEN résolus par l'une des trois sources de l'Étape 0.
  • Python 3.8+. Aucune dépendance externe — le script utilise uniquement la bibliothèque standard (urllib), donc pas besoin de pip install ni d'environnement virtuel.
  • Le script décode la réponse base64 de l'API Cloudflare et la sauvegarde en binaire JPG — la réponse n'est pas directement l'image.

Skills associés