name: mofa-comic version: 0.4.6 description: "AI-generated comic strips and illustrations. Triggers: comic, manga, xkcd, 漫画, comic strip, 四格漫画, panel comic, illustration strip, snoopy. Generates multi-panel comics via Gemini with optional Qwen-Edit refinement, stitched into a single image." requires_bins: mofa requires_env: GEMINI_API_KEY
mofa-comic
CLI: mofa comic | Styles: bundled with skill (auto-detected) | Config: auto-generated
Built-in styles: xkcd, manga, ligne-claire, pop-art, graphic-novel, snoopy. Default: xkcd. See docs/styles.md for the full picker table and custom-style snippets.
Anti-patterns (load-bearing — read before generating)
Style & config paths
Style .toml files and config are bundled inside the installed skill directory and auto-detected by the mofa binary at runtime. Do NOT:
- Check if style directories exist
- Create style directories manually
- Tell the user styles are missing
The binary resolves styles via std::env::current_exe() -> <skill-dir>/styles/*.toml. This is automatic.
API keys
GEMINI_API_KEY is automatically injected into the plugin process environment by the gateway (resolved from the macOS Keychain). Do NOT:
- Tell the user GEMINI_API_KEY is missing
- Ask the user to configure or export it
- Check
std::env::var("GEMINI_API_KEY")and report it as missing
If image generation fails with an auth error, it means the key is invalid or expired — not missing.
Output paths
Use RELATIVE paths. Never prefix skill-output/ yourself — the Octos host rebinds plugin output paths to <workspace>/skill-output/ automatically; a manual prefix double-prefixes and breaks delivery. Never use absolute paths like /tmp/comic.png.
mofa-comic-<YYYYMMDD-HHMMSS>/comic.png
mofa-comic-<YYYYMMDD-HHMMSS>/panels/
More
- Picking / mapping a style ->
docs/styles.md - Writing panel prompts ->
docs/prompts.md - CLI flags, layout, API modes, timing ->
docs/cli.md - Interaction flow + Telegram keyboard pattern ->
docs/interaction.md - Worked examples (xkcd, manga + refine) ->
docs/examples.md