mcpField
D
draw-thing

draw-thing

github.com/wyattowalshCreative & media541 installsUpdated 8w ago
Repository

About draw-thing

draw-thing is a skill for local image and short-media generation and editing through `draw-things-cli`. It is for Draw Things users managing models and creating media, and covers inventory, imports, generation, and editing while following the current CLI surface.

Key features

  1. 01Generate images locally from text
  2. 02Edit images from input files
  3. 03Generate short video or audiovisual media
  4. 04Inventory, prepare, and import models
  5. 05Create batches with multiple seeds
  6. 06Guide advanced config-file workflows

Use cases

  1. 01Generate an image from a text prompt
  2. 02Modify an existing image and save a new file
  3. 03Create short video or motion media
  4. 04Check whether recommended models are installed
  5. 05Generate image variations with multiple seeds

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/wyattowalsh/agents --skill draw-thing

After installing, type/draw-thingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

evals/
evals.json
references/
cli-reference.md
controlnet-guide.md
model-catalog.md
prompt-patterns.md
workflow-recipes.md
scripts/
check-cli.sh
check.py
model_inventory.py
scripts/asset_toolkit/
__init__.py
_shared.py
common.py
package.py
validate_evals.py
validate_hooks.py
validate_skill.py

Details

From the project README

Draw Thing

Local AI image and media generation through draw-things-cli. Use the current Draw Things command surface: generate, models list, models ensure, models import, and train lora.

Scope: Local Draw Things image generation, image editing, model setup, model inventory, imports, and short local media generation. NOT for UI implementation (design), ad creative strategy (ad-creative), cloud image APIs, or general AI-model market research.


Canonical Vocabulary

TermMeaningNOT
txt2imgText-to-image generation: prompt in, image file outimg2img
img2imgImage-to-image generation: input image plus prompttxt2img
mediaVideo or audio-video generation with --frames and video outputUI animation
model idDraw Things model filename or model reference accepted by --modeldisplay name guess
recommended packCurrent rig-aware model set approved for this Macevery installed model
legacy modelOlder model kept for compatibility, not recommended by defaultdeletion target
cfgCurrent CLI guidance flag: --cfgold --guidance-scale
strengthImg2img change amount: lower preserves, higher redrawsoutput scale
seedReproducibility value for identical prompts/settingsmodel selection
config fileJSON file passed with --config-file for advanced app settingsdirect CLI flag

Dispatch

$ARGUMENTSModeAction
generate <prompt> / create <prompt>Generatetxt2img with best current image defaults
Natural language image descriptionAuto: GenerateDetect prompt intent and choose a model
edit <path> <prompt> / transform <path>Editimg2img with --image and --strength
Path to image + modification intentAuto: EditPreserve original, write a new output file
video <prompt> / media <prompt> / animate <prompt>MediaGenerate short local media with --frames
setup / download models / best modelsSetupInventory rig and ensure recommended pack
inventory / models / model statusInventoryRun model inventory helper and summarize gaps
import <path-or-url>ImportUse draw-things-cli models import
model <name>Model infoShow current role, settings, and status
batch <prompt> / variations <prompt>BatchUse a shell loop with multiple seeds and outputs
refine / iterateRefineRe-run with a locked seed and one changed parameter
upscale <path> / controlnet ... / lora ...AdvancedVerify config-file workflow before running
(empty)HelpVerify CLI, show modes and examples
Auto-Detection Heuristic
  1. Prompt asks to install, download, configure, or choose best models -> Setup.
  2. Prompt asks for model list, current downloads, or missing models -> Inventory.
  3. Prompt asks for video, motion, mp4, mov, frames, or animation -> Media.
  4. Existing file path plus edit/restyle/change/transform -> Edit.
  5. Existing file path plus upscale/control/lora/inpaint -> Advanced, then verify current CLI/config support before running.
  6. Descriptive text with no file path -> Generate.
  7. Ambiguous -> ask which mode and state the tradeoff.

Prerequisite Protocol

Run before any generation or model mutation:

  1. Check CLI: command -v draw-things-cli.
  2. If missing, show install command and stop:
    brew install drawthingsai/draw-things/draw-things-cli
    
  3. Verify installed command surface: draw-things-cli generate --help.
  4. For setup/inventory, prefer:
    uv run python skills/draw-thing/scripts/model_inventory.py --format json
    
  5. Always pass --output; without it, the current CLI may only preview in supported terminals instead of writing a file.

Current Best Model Policy

As of 2026-05-15, this Mac is Apple M1 Pro, arm64, macOS 26.5, 32 GiB unified memory. Use current Draw Things optimized checkpoints and do not recommend legacy SDXL/SD1.5/FLUX.1 families unless the user explicitly asks for compatibility.

RoleModel idStatusDefault use
Fast image defaultz_image_turbo_1.0_q8p.ckptrecommendedFast drafts, 8 steps, --cfg 0
Best text/layout/realismqwen_image_2512_q8p.ckptrecommendedPosters, typography, polished images
Creative basez_image_1.0_q8p.ckptrecommendedGeneral creative exploration
High-end FLUX/reference/editflux_2_dev_q6p.ckptrecommendedFLUX.2 workflows on 32 GiB
Instruction image editqwen_image_edit_2511_q8p.ckptrecommendedImg2img/edit prompts
Art/prompt-following alternativehidream_i1_full_q5p.ckptrecommended downloadHighest-quality art alternative
Fast local medialtx_2.3_22b_distilled_q6p.ckptrecommended downloadShort text/video generation
Rig-fit Wan mediawan_v2.2_5b_ti2v_q8p.ckptrecommended downloadCurrent Wan video on 32 GiB

Legacy/redundant downloaded models are not deletion targets without approval: flux_1_schnell_q8p.ckpt, flux_1_fill_dev_q8p.ckpt, and flux_2_klein_4b_q6p.ckpt.

Auxiliary text/VLM files and incomplete partials are not recommended generation models. For example, llama_3.1_8b_instruct_q8p.ckpt.part is an incomplete stale auxiliary artifact, not a mid-May 2026 best-pack model.

Qwen Layered remains a current optional workflow target, but not a guaranteed best-pack install on this rig: qwen_image_layered_1.0_bf16_q6p.ckpt failed verification with a checksum mismatch, and qwen_image_layered_1.0_bf16_q8p.ckpt repeatedly stalled during CLI download. Use qwen_image_edit_2511_q8p.ckpt for reliable local editing unless the user explicitly asks to keep retrying Layered.

For exact install commands, current/legacy distinctions, and quantization rules, load references/model-catalog.md.


Core Generation Protocols

Every mode follows this pattern:

  1. Validate: CLI exists, input files exist, model is downloaded or --download-missing is intentional.
  2. Select defaults: choose a current model by role unless the user provided --model.
  3. Build command: use only flags shown by draw-things-cli generate --help, or use --config-file for advanced app settings.
  4. Show command: display the full command before running.
  5. Execute: run through Bash and capture output.
  6. Report: output path, seed, model id, dimensions, steps, and cfg.
Mode: Generate

Fast draft default:

draw-things-cli generate \
  --model z_image_turbo_1.0_q8p.ckpt \
  --prompt "<prompt>" \
  --steps 8 \
  --cfg 0 \
  --width 1024 \
  --height 1024 \
  --seed <seed> \
  --output <output.png>

Quality/text default:

draw-things-cli generate \
  --model qwen_image_2512_q8p.ckpt \
  --prompt "<prompt>" \
  --steps 40 \
  --cfg 4 \
  --width 1328 \
  --height 1328 \
  --seed <seed> \
  --output <output.png>
Mode: Edit
draw-things-cli generate \
  --model qwen_image_edit_2511_q8p.ckpt \
  --image <input.png> \
  --prompt "<edit instruction>" \
  --strength 0.55 \
  --steps 30 \
  --cfg 4 \
  --seed <seed> \
  --output <output.png>

Use --strength 0.25-0.4 for subtle edits, 0.5-0.65 for visible edits, and 0.75+ for heavy redraws.

Mode: Media
draw-things-cli generate \
  --model ltx_2.3_22b_distilled_q6p.ckpt \
  --prompt "<motion prompt>" \
  --frames 49 \
  --width 768 \
  --height 512 \
  --seed <seed> \
  --output <output.mov>

Use LTX distilled first for this rig. Keep width/height divisible by 32 and frames divisible by 8 plus 1.

Mode: Setup

Run inventory first:

uv run python skills/draw-thing/scripts/model_inventory.py --recommended-pack all --format json

Then run missing ensure_command entries after showing them to the user. Do not delete legacy models unless the user separately approves a prune operation.

Mode: Inventory
uv run python skills/draw-thing/scripts/model_inventory.py --format json

Summarize installed, missing recommended models, and redundant legacy downloads. Report incomplete_downloads and auxiliary_or_dependency_files separately so helper files or stale .part files are not mistaken for current best models.

Mode: Batch

The current CLI does not expose --batch-count. Use a shell loop and explicit output names:

for seed in 1201 1202 1203 1204; do
  draw-things-cli generate \
    --model z_image_turbo_1.0_q8p.ckpt \
    --prompt "<prompt>" \
    --steps 8 \
    --cfg 0 \
    --width 1024 \
    --height 1024 \
    --seed "$seed" \
    --output "$HOME/Pictures/draw-thing/run-$seed.png"
done
Mode: Advanced

The current generate --help does not expose old direct flags such as --controls, --loras, --mask, --upscaler, --batch-count, --sampler, or --guidance-scale. For ControlNet, LoRA, inpaint, upscale, tiling, and other app-level settings:

  1. Re-check draw-things-cli generate --help.
  2. Use Draw Things app-managed settings or --config-json / --config-file only when the schema is verified.
  3. Never invent direct flags from older examples.

Prompt Quick-Reference

Model familyStyleNegative prompt
Z Image Turbo/BaseDirect natural-language instructions; concise composition detailsSupported when useful, keep short
Qwen Image 2512Explicit layout, typography, exact text, editorial languageSupported, keep targeted
Qwen Edit/LayeredImperative edit instructions and preservation constraintsUse only for what to avoid changing
FLUX.2Natural language, reference/edit details, precise scene intentVerify per model; do not assume FLUX.1 rules
HiDream I1 FullRich art direction, style, medium, lighting, compositionShort targeted negatives if used
LTX/Wan mediaDescribe motion over time, camera movement, temporal continuityAvoid still-image-only tag lists

For templates and troubleshooting, load references/prompt-patterns.md.


Scaling Strategy

Request sizeStrategy
Single imageUse z_image_turbo_1.0_q8p.ckpt unless quality/text needs Qwen 2512
Text/layout criticalUse qwen_image_2512_q8p.ckpt and explicit text/layout prompt
Edit existing imageUse qwen_image_edit_2511_q8p.ckpt with conservative strength first
Layer/editability workflowUse Qwen Layered only if already installed; otherwise explain prior install failures and ask before retrying
Heavy art qualityTry hidream_i1_full_q5p.ckpt; fall back if memory pressure appears
Short videoUse LTX distilled q6p first; keep dimensions moderate
Many variationsUse shell loops, fixed output paths, and modest seed batches

Output Handling

  • Default skill output directory: ~/Pictures/draw-thing/.
  • Create it before generation: mkdir -p "$HOME/Pictures/draw-thing".
  • Always pass --output <file>; do not rely on implicit output behavior.
  • Never overwrite source images; use descriptive new filenames.
  • Always report output file, seed, model, steps, cfg, dimensions, and whether the model was downloaded during the run.

Error Recovery

ErrorLikely causeAction
unknown flagOld guidance or CLI mismatchRun draw-things-cli generate --help; remove stale direct flag
model not foundWrong id or not downloadedRun draw-things-cli models list; use models ensure --model <id>
no output fileMissing --output or preview-only terminal modeRe-run with explicit file path
killed/OOMModel too large or dimensions too highLower dimensions, use q6p/q5p, or switch to faster model
poor textWrong model/prompt for typographyUse Qwen Image 2512 with exact quoted text
video failsModel missing or memory pressureEnsure LTX q6p, reduce dimensions/frames

Reference Files

Load ONE reference at a time.

FileContentLoad When
references/cli-reference.mdCurrent command surface, flags, models subcommands, config caveatsBuilding non-trivial commands
references/model-catalog.md2026-05-15 current best model pack, exact ensure commands, legacy notesChoosing/downloading models
references/prompt-patterns.mdPrompt patterns for Qwen, Z Image, FLUX.2, HiDream, LTX/WanComplex prompts or quality issues
references/controlnet-guide.mdAdvanced controls/import/config guidance with stale-flag warningsControlNet, LoRA, inpaint, upscale
references/workflow-recipes.mdCurrent recipes using exposed flags and shell loopsMulti-step creative workflows

Validation Contract

Run from this skill directory before declaring changes complete:

python scripts/check.py
python scripts/model_inventory.py --format json

Completion criteria:

  1. scripts/check.py exits 0.
  2. Model inventory identifies recommended-pack status.
  3. No command examples use stale direct flags unsupported by current generate --help.
  4. No portable-CLI violations remain under this skill directory.

Critical Rules

  1. Always check command -v draw-things-cli before generation or model mutation.
  2. Always use draw-things-cli generate --help as the source of truth for direct flags.
  3. Always pass --output; preview-only output is not enough for agent workflows.
  4. Use --cfg, not stale --guidance-scale.
  5. Do not use stale direct flags: --sampler, --batch-count, --upscaler, --mask, --controls, or --loras unless current help/config schema proves support.
  6. Prefer the recommended 2026 rig pack over legacy SDXL, SD1.5, SD2.x, SVD, FLUX.1, Qwen 1.0, Qwen Edit 2509, Wan 2.1, or old community checkpoints.
  7. Never delete or prune models without separate explicit user approval.
  8. Show the full command before running it.
  9. Preserve source images; write new output files.
  10. Report seed, model id, output path, dimensions, steps, and cfg.
  11. For video, keep dimensions moderate and frame count divisible by 8 plus 1.
  12. For advanced ControlNet/LoRA/inpaint/upscale workflows, verify --config-json or --config-file schema before execution.
  13. Do not treat auxiliary text/VLM files, sidecars, or incomplete .part downloads as recommended generation/media models.

Comments

Markdown supported