Happy-claude-skills happy-dreamina
ByteDance Jimeng (Dreamina) image and video generation via the official `dreamina` CLI. Use this skill whenever the user mentions 即梦, Dreamina, Jimeng, or asks to generate images or videos specifically through ByteDance's Jimeng service. Covers text2image, image2image, text2video, image2video, plus async task query and task-history browsing via list_task. Trigger this skill instead of happy-image-gen or happy-video-gen whenever the user explicitly names 即梦 or dreamina — it uses browser-based login (`dreamina login`) rather than API keys and has access to Jimeng-exclusive models. Common phrases include "用即梦画张...", "Jimeng generate a video of...", "Dreamina 文生视频", "用 dreamina CLI 做图", "查下我即梦的历史任务".
git clone https://github.com/iamzhihuix/happy-claude-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/iamzhihuix/happy-claude-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/happy-dreamina" ~/.claude/skills/iamzhihuix-happy-claude-skills-happy-dreamina && rm -rf "$T"
skills/happy-dreamina/SKILL.mdhappy-dreamina
Generate images and videos through ByteDance's official
dreamina CLI. This skill is a thin instruction layer — it does not wrap any SDK. Every action maps to a dreamina subcommand the user's shell already has.
When to invoke this skill
Use this skill whenever any of these hold:
- The user says 即梦, Jimeng, or Dreamina (any language).
- The user explicitly names the
CLI or its subcommands.dreamina - The user asks about their Jimeng task history, account credit, or login status.
If the user just says "generate an image" or "画张图" without naming Jimeng, prefer
happy-image-gen / happy-video-gen instead and do NOT trigger this skill. The reason is that Jimeng uses browser login and is one specific provider — other skills let the user pick from many providers via EXTEND.md defaults.
Step 0: Preflight (BLOCKING — run both checks before anything else)
Run these in parallel:
— is the binary installed?command -v dreamina
— is the login alive? A healthy response is JSON containing credit info.dreamina user_credit
If dreamina
is not installed
dreaminaTell the user the
dreamina CLI is missing and offer to install it. The official installer is:
curl -fsSL https://jimeng.jianying.com/cli | bash
This is a shell install that writes to the user's machine — do not run it silently. Confirm, then run it, then re-check
command -v dreamina. See references/install-and-login.md for platform notes (macOS, Linux x86_64/arm64). For any other platform (e.g. Windows) or when the installer changes, point the user at the official install page: https://jimeng.jianying.com/ai-tool/install.
If user_credit
fails (exit non-zero, or JSON missing credit)
user_creditThe user is not logged in, or the token expired. Ask them to run:
dreamina login
This opens the default browser for Jimeng authorization. Credentials land in
~/.dreamina_cli/credential.json automatically — the user never handles the file. If the browser does not open or the flow hangs, escalate to dreamina login --debug (see references/troubleshooting.md).
Do not proceed to generation until
succeeds.dreamina user_credit
Step 1: Pick the right subcommand
Map the user's intent to exactly one subcommand:
| User wants to… | Command |
|---|---|
| Generate an image from text | |
| Transform or restyle an existing image | |
| Generate a video from text | |
| Animate a still image (i2v) | |
| Fetch an earlier async result | |
| Browse past jobs | |
Step 2: Fill in parameters from the user's intent
Use
references/ratio-resolution-map.md to convert natural language ("竖屏 / 1080P / 高清 / 方图 / 横屏") to flags. Pay attention to what the user did not say — fill in safe defaults, do not ask the user to restate obvious things.
Image generation — text2image
/ image2image
text2imageimage2image
— always double-quote so shell metacharacters (Chinese quotes, commas) do not break.--prompt="..."
—--ratio
. Default1:1 / 16:9 / 9:16 / 3:4 / 4:3
.1:1
—--resolution_type
. Default1k / 2k / 4k
; use2k
for fast draft,1k
only when the user asks for ultra or print-ready.4k- For
only:image2image
(plural — accepts a reference bundle, multiple paths space-separated).--images <path> - Always include
.--poll=30
Video generation — text2video
/ image2video
text2videoimage2video
— same quoting rule.--prompt="..."
— integer seconds. Default--duration
.5
— default--ratio
for landscape intent,16:9
for vertical,9:16
for square.1:1
—--video_resolution
. Default480P / 720P / 1080P
.720P- For
only:image2video
(singular — a single keyframe).--image <path> - Always include
(videos take longer than images).--poll=60
⚠ Easy to confuse:
usesimage2image(plural, reference bundle).--imagesusesimage2video(singular, one keyframe). Mixing them up gives "unknown flag" errors.--image
Step 3: Submit and read the result
Run the command via Bash. On success the CLI prints JSON to stdout — the result URL(s) or local file path(s) if
--download_dir was passed. Echo the path/URL back to the user.
Example — text to image:
dreamina text2image \ --prompt="一只戴墨镜的橘猫,背光,电影感" \ --ratio=1:1 \ --resolution_type=2k \ --poll=30
Example — image to video:
dreamina image2video \ --image=./keyframe.png \ --prompt="镜头缓缓推近,橘猫眼神闪动" \ --duration=5 \ --ratio=16:9 \ --video_resolution=720P \ --poll=60
If the user wants the result downloaded locally rather than a URL, add
--download_dir=./out (create the directory first).
Step 4: Handle async timeout
If
--poll times out, the CLI returns JSON with status querying and a submit_id. Tell the user you will retry, then:
dreamina query_result --submit_id=<submit_id> --download_dir=./out
If the job is still in progress, wait and retry. If it failed, pull the error message from the
query_result response and relay it verbatim — do not guess.
Advanced: history and sessions
— list completed jobs.dreamina list_task --gen_status=success
— fetch one specific job.dreamina list_task --submit_id=<id>- Sessions (v1.3.5+) let the user keep separate workspaces for different projects. Only touch them if the user explicitly asks to "switch session", "work in session X", or "list sessions". Otherwise the default session is fine.
References
Load these on demand — do not read all up front:
— full flag table for everyreferences/cli-commands.md
subcommand.dreamina
— installer details, browser login, credential file location, version upgrade.references/install-and-login.md
— user phrasing ↔references/ratio-resolution-map.md
/--ratio
/--resolution_type
mapping.--video_resolution
— login expired, queue timeout, submit_id recovery, account switching.references/troubleshooting.md