Baoyu-skills baoyu-cover-image
Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to "generate cover image", "create article cover", or "make cover".
git clone https://github.com/JimLiu/baoyu-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/JimLiu/baoyu-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/baoyu-cover-image" ~/.claude/skills/jimliu-baoyu-skills-baoyu-cover-image && rm -rf "$T"
skills/baoyu-cover-image/SKILL.mdCover Image Generator
Generate elegant cover images for articles with 5-dimensional customization.
User Input Tools
When this skill prompts the user, follow this tool-selection rule (priority order):
- Prefer built-in user-input tools exposed by the current agent runtime — e.g.,
,AskUserQuestion
,request_user_input
,clarify
, or any equivalent.ask_user - Fallback: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.
- Batching: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.
Concrete
AskUserQuestion references below are examples — substitute the local equivalent in other runtimes.
Image Generation Tools
When this skill needs to render an image:
- Use whatever image-generation tool or skill is available in the current runtime — e.g., Codex
, Hermesimagegen
,image_generate
, or any equivalent the user has installed.baoyu-imagine - If multiple are available, ask the user once at the start which to use (batch with any other initial questions).
- If none are available, tell the user and ask how to proceed.
Prompt file requirement (hard): write each image's full, final prompt to a standalone file under
prompts/ (naming: NN-{type}-[slug].md) BEFORE invoking any backend. The backend receives the prompt file (or its content); the file is the reproducibility record and lets you switch backends without regenerating prompts.
Concrete tool names (
imagegen, image_generate, baoyu-imagine) above are examples — substitute the local equivalents under the same rule.
Options
| Option | Description |
|---|---|
| hero, conceptual, typography, metaphor, scene, minimal |
| warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron |
| flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print |
| Preset shorthand (see Style Presets) |
| none, title-only, title-subtitle, text-rich |
| subtle, balanced, bold |
| clean, handwritten, serif, display |
| 16:9 (default), 2.35:1, 4:3, 3:2, 1:1, 3:4 |
| Title language (en, zh, ja, etc.) |
| Alias for |
| Skip confirmation, use auto-selection |
| Reference images for style/composition guidance |
Five Dimensions
| Dimension | Values | Default |
|---|---|---|
| Type | hero, conceptual, typography, metaphor, scene, minimal | auto |
| Palette | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron | auto |
| Rendering | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print | auto |
| Text | none, title-only, title-subtitle, text-rich | title-only |
| Mood | subtle, balanced, bold | balanced |
| Font | clean, handwritten, serif, display | clean |
Auto-selection rules: references/auto-selection.md
Galleries
Types: hero, conceptual, typography, metaphor, scene, minimal → Details: references/types.md
Palettes: warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron → Details: references/palettes/
Renderings: flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print → Details: references/renderings/
Text Levels: none (pure visual) | title-only (default) | title-subtitle | text-rich (with tags) → Details: references/dimensions/text.md
Mood Levels: subtle (low contrast) | balanced (default) | bold (high contrast) → Details: references/dimensions/mood.md
Fonts: clean (sans-serif) | handwritten | serif | display (bold decorative) → Details: references/dimensions/font.md
File Structure
Output directory per
default_output_dir preference:
:same-dir{article-dir}/
:imgs-subdir{article-dir}/imgs/
(default):independentcover-image/{topic-slug}/
<output-dir>/ ├── source-{slug}.{ext} # Source files ├── refs/ # Reference images (if provided) │ ├── ref-01-{slug}.{ext} │ └── ref-01-{slug}.md # Description file ├── prompts/cover.md # Generation prompt └── cover.png # Output image
Slug: 2-4 words, kebab-case. Conflict: append
-YYYYMMDD-HHMMSS
Workflow
Progress Checklist
Cover Image Progress: - [ ] Step 0: Check preferences (EXTEND.md) ⛔ BLOCKING - [ ] Step 1: Analyze content + save refs + determine output dir - [ ] Step 2: Confirm options (6 dimensions) ⚠️ unless --quick - [ ] Step 3: Create prompt - [ ] Step 4: Generate image - [ ] Step 5: Completion report
Flow
Input → [Step 0: Preferences] ─┬─ Found → Continue └─ Not found → First-Time Setup ⛔ BLOCKING → Save EXTEND.md → Continue ↓ Analyze + Save Refs → [Output Dir] → [Confirm: 6 Dimensions] → Prompt → Generate → Complete ↓ (skip if --quick or all specified)
Step 0: Load Preferences ⛔ BLOCKING
Check EXTEND.md in priority order — the first one found wins:
| Priority | Path | Scope |
|---|---|---|
| 1 | | Project |
| 2 | | XDG |
| 3 | | User home |
| Result | Action |
|---|---|
| Found | Load, display summary → Continue |
| Not found | ⛔ Run first-time setup (references/config/first-time-setup.md) → Save → Continue |
CRITICAL: If not found, complete setup BEFORE any other steps or questions.
Step 1: Analyze Content
- Save reference images (if provided) → references/workflow/reference-images.md
- Save source content (if pasted, save to
)source.md - Analyze content: topic, tone, keywords, visual metaphors
- Deep analyze references ⚠️: Extract specific, concrete elements (see reference-images.md)
- Detect language: Compare source, user input, EXTEND.md preference
- Determine output directory: Per File Structure rules
⚠️ People in Reference Images:
If reference images contain people who should appear in the cover:
- Model supports
(default): Copy image to--ref
, pass viarefs/
at generation. No description file needed — the model sees the face directly.--ref - Model does NOT support
(Jimeng, Seedream 3.0): Create--ref
with per-character description (hair, glasses, skin tone, clothing). Embed as MUST/REQUIRED instructions in prompt text.refs/ref-NN-{slug}.md
See reference-images.md for full decision table.
Step 2: Confirm Options ⚠️
MUST use
tool to present options as interactive selection — NOT plain text tables. Present up to 4 questions in a single AskUserQuestion
AskUserQuestion call (Type, Palette, Rendering, Font + Settings). Each question shows the recommended option first with reason, followed by alternatives.
Full confirmation flow and question format: references/workflow/confirm-options.md
| Condition | Skipped | Still Asked |
|---|---|---|
or | 6 dimensions | Aspect ratio (unless ) |
All 6 + specified | All | None |
Step 3: Create Prompt
Save to
prompts/cover.md. Template: references/workflow/prompt-template.md
CRITICAL - References in Frontmatter:
- Files saved to
→ Add to frontmatterrefs/
listreferences - Style extracted verbally (no file) → Omit
, describe in bodyreferences - Before writing → Verify:
test -f refs/ref-NN-{slug}.{ext}
Reference elements in body MUST be detailed, prefixed with "MUST"/"REQUIRED", with integration approach.
Step 4: Generate Image
- Backup existing
if regeneratingcover.png - Select backend via the
rule at the top: use whatever is available; if multiple, ask the user once. Do this once per session before any generation.## Image Generation Tools - Write the full final prompt to
(hard requirement) BEFORE invoking the backend.prompts/01-cover-[slug].md - Process references from prompt frontmatter:
usage → pass viadirect
(use ref-capable backend)--ref
/style
→ extract traits, append to promptpalette
- Generate: Call the chosen backend with the prompt file, output path, aspect ratio
- On failure: auto-retry once
Step 5: Completion Report
Cover Generated! Topic: [topic] Type: [type] | Palette: [palette] | Rendering: [rendering] Text: [text] | Mood: [mood] | Font: [font] | Aspect: [ratio] Title: [title or "visual only"] Language: [lang] | Watermark: [enabled/disabled] References: [N images or "extracted style" or "none"] Location: [directory path] Files: ✓ source-{slug}.{ext} ✓ prompts/cover.md ✓ cover.png
Image Modification
| Action | Steps |
|---|---|
| Regenerate | Backup → Update prompt file FIRST → Regenerate |
| Change dimension | Backup → Confirm new value → Update prompt → Regenerate |
Composition Principles
- Whitespace: 40-60% breathing room
- Visual anchor: Main element centered or offset left
- Characters: Simplified silhouettes; NO realistic humans
- Title: Use exact title from user/source; never invent
Extension Support
Custom configurations via EXTEND.md. See Step 0 for paths.
Supports: Watermark | Preferred dimensions | Default aspect/output | Quick mode | Custom palettes | Language
Schema: references/config/preferences-schema.md
References
Dimensions: text.md | mood.md | font.md Palettes: references/palettes/ Renderings: references/renderings/ Types: references/types.md Auto-Selection: references/auto-selection.md Style Presets: references/style-presets.md Compatibility: references/compatibility.md Visual Elements: references/visual-elements.md Workflow: confirm-options.md | prompt-template.md | reference-images.md Config: preferences-schema.md | first-time-setup.md | watermark-guide.md