agentleFS
tdiminotdimino/claude-code-minoan/skills/design-media/image-well/SKILL.md

image-well

Skill41 starsChanged 7 months agoMITView on GitHub

Search and download images from 15 APIs in parallel (Openverse, Pexels, Pixabay, Met Museum, Cleveland Museum, Art Institute of Chicago, Getty Museum, NASA, Rijksmuseum, Wikimedia Commons, Unsplash, Smithsonian, Europeana, Iconify, Pollinations AI). Supports license filtering, presets (military, museum, stock), cached results, and bulk download with metadata sidecars. Triggers on find images, stock photos, public domain artwork, museum images, CC-licensed, NASA photos, icons.

  • Reads credentials

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Search and download images from 15 sources through a single CLI.

    line 8
  2. Very specific:

    Add Tier 2 keys to ~/.config/env/secrets.env for expanded coverage.

    line 52

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Image Well

Search and download images from 15 sources through a single CLI. Seven sources work with zero API keys (Openverse, Wikimedia, Met Museum, Cleveland Museum, Art Institute of Chicago, Getty Museum, NASA). Additional sources activate when keys are set.

Quick Start

# Search across all no-key sources
uv run ~/.claude/skills/image-well/scripts/well.py search "ancient Minoan fresco"

# Use a preset for domain-specific searches
uv run ~/.claude/skills/image-well/scripts/well.py search "F-35 fighter jet" --preset military

# Download results with metadata sidecars
uv run ~/.claude/skills/image-well/scripts/well.py search "sunset" --format download --output ./images/

# Check which sources are available
uv run ~/.claude/skills/image-well/scripts/well.py sources

# Visual HTML preview — opens in browser, no context pollution
uv run ~/.claude/skills/image-well/scripts/well.py search "bronze statue" --format html

# Output as JSON for piping
uv run ~/.claude/skills/image-well/scripts/well.py search "cat" --format json

Sources

TierSourceKey RequiredLicense
1Openverse (800M+)NoCC variants
1Wikimedia CommonsNoCC variants
1Met Museum (375k)NoCC0
1Cleveland Museum (37k)NoCC0
1Art Inst. Chicago (60k+)NoPublic Domain
1Getty Museum (Open Content)NoCC0
1NASA (140k)NoPublic Domain
2PexelsPEXELS_API_KEYPexels License
2PixabayPIXABAY_API_KEYPixabay License
2Rijksmuseum (700k)RIJKSMUSEUM_API_KEYCC0
2UnsplashUNSPLASH_ACCESS_KEYUnsplash License
3SmithsonianNoCC0
3Europeana (50M+)EUROPEANA_API_KEYMixed
3Iconify (275k icons)NoVarious
3Pollinations AINoFree Use (AI gen)

Add Tier 2 keys to ~/.config/env/secrets.env for expanded coverage.

Source notes:

  • Cleveland downloads the ~3400px print JPEG; the ~900px web derivative is the thumbnail. The archival TIFFs are never fetched.
  • Art Institute of Chicago images are public domain (PD), not formally CC0 — --license cc0 accepts them. Downloads use AIC's preferred 843px IIIF size and are serialized (1/s) per their API etiquette.
  • Getty rides the collection website's undocumented JSON search API (open_content=true filter) — the only keyword-search surface Getty exposes. Every emitted row is gated on the CC0 URI in its IIIF manifest license; downloads at 1200px IIIF. Superb Greek/Roman/Etruscan; thin on Egypt/Near East.

Museum Collections on Wikimedia Commons

Some museums have no usable API but mass-uploaded their images to Wikimedia Commons. Search them through the existing wikimedia source with a category-scoped query:

MuseumCommons FilesExample
Walters Art Museum~18,600incategory:"Media contributed by the Walters Art Museum" scarab

The Walters v1 API closed in 2023 and the whole thewalters.org domain (including its image CDN) sits behind Cloudflare bot protection — Commons is the only programmatic path. Note the 2012 Walters upload was recorded as CC BY-SA 3.0 (many files also carry a Public Domain Mark); keep the per-file license Commons reports rather than assuming CC0.

Presets

PresetSourcesUse Case
militarynasa, wikimedia, smithsonianDefense/military imagery
museummet, cleveland, artic, getty, rijksmuseum, smithsonianArt, antiquities, historical
texturewikimedia, pollinationsGame dev, 3D materials
stockpexels, pixabay, unsplashEditorial photography
all-freeopenverse, wikimedia, met, cleveland, artic, getty, nasa, smithsonianAll no-key sources

Options

--sources NAME [...]    Specific sources to search
--preset NAME           Use a preset group
--limit N               Max results per source (default: 10)
--license LICENSE       Filter: cc0, cc-by, cc-by-sa, any
--format FORMAT         table, json, download, urls, html, tunnel
--output DIR            Download directory (default: ./well-images/)
--no-cache              Skip result cache
--timeout N             Per-source timeout in seconds (default: 15)
--quiet                 Suppress progress output

Workflows

Source images for a project

# Search, review in table, then download the good ones
uv run well.py search "Mediterranean landscape" --preset stock --format json > results.json
# Review results.json, then download specific URLs

Build an image corpus

# Download CC0 images for a research project
uv run well.py search "Bronze Age pottery" --preset museum --license cc0 --format download --output ./corpus/

Pipe to image-forge for processing

# Search, download, then resize with image-forge
uv run well.py search "sunset" --format download --output ./raw/
# Then use image-forge skill to process downloaded images

Cache

Results are cached for 24 hours at ~/.cache/image-well/.

uv run well.py cache stats    # Show cache size
uv run well.py cache clear    # Clear all cached results

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.