game-cover-downloader-skill

agent
Guvenlik Denetimi
Uyari
Health Uyari
  • No license — Repository has no license file
  • Description — Repository has a description
  • Active repo — Last push 36 days ago
  • Low visibility — Only 5 GitHub stars
Code Gecti
  • Code scan — Scanned 6 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Retro game cover downloader as an AI Agent Skill. Batch download covers/logos from Libretro for Pegasus, ES-DE, RetroArch frontends. Compatible with Claude Code, Codex CLI, OpenClaw & CodeBuddy.

README.md

Game Cover Downloader

中文文档

A CLI tool for batch downloading game covers, logos, title screens, and screenshots from the Libretro Thumbnail Library. Features fuzzy ROM filename matching, multi-threaded downloads, frontend layout presets (Pegasus / ES-DE / RetroArch), and custom save rules.

When used as an AI coding assistant Skill, you can drive downloads with natural language — no need to memorize CLI arguments.

📺 Retro Gamer's Blessing: AI Skill for One-Click Classic Game Cover Downloads

Features

  • 🎮 Download covers by game name, single ROM file, or ROM folder
  • 🔍 Fuzzy match ROM filenames against the Libretro game database
  • 🖼️ Four media types: Boxarts, Logos, Titles, Snaps
  • 📁 Built-in presets for Pegasus / ES-DE / RetroArch / Simple layouts
  • ✏️ Custom save rules (JSON format), with save-as-preset for reuse
  • 🚀 Default 4-thread downloads, configurable to higher thread counts
  • 🔄 Two-stage recovery for unmatched ROMs (web search for No-Intro names)
  • 📊 JSON output with progress events and download reports

Requirements

Installation

1. Install Python dependencies

pip install -r requirements.txt

2. Download game database

The libretro_data/ directory (~400 MB) contains the game name database and is not included in the Git repository. Download it with the included script:

python fetch_data.py

This will automatically download and extract libretro_data.zip from the repository.

Manual download

If fetch_data.py doesn't work, you can manually download libretro_data.zip from the repository and extract it to the project root.

Make sure the final structure looks like this (avoid nested libretro_data/libretro_data/):

game-cover-downloader-skill/
  libretro_data/         ← this folder must be directly under the project root
    mediadata/
    metadata/
    merged_games.json
    platform-aliases.json

Wrong ❌:

game-cover-downloader-skill/
  libretro_data/
    libretro_data/       ← nested! drag the inner folder up one level
      mediadata/

Quick Start

As an AI Skill (Natural Language)

When installed as a Skill, just describe what you want in your AI coding assistant's chat:

You say What happens
"Download covers for all GBC games in F:\Roms\gbc to F:\Roms\gbc\download" download-folder --path "F:\Roms\gbc" --output "F:\Roms\gbc\download"
"Download F:\Roms\gbc covers in ES-DE format" --preset es-de applied automatically
"Download N64 covers and logos in Pegasus layout" --type boxarts,logos --preset pegasus
"What download presets are available?" Runs list-presets and shows details
"Save this rule as my-n64" Writes to user_rules.json via save-preset
"Download with 16 threads" --download-workers 16

CLI Usage

# Download a single game's cover
python -m scripts.cover_cli download-game --name "Super Mario Bros." --system "Nintendo - Nintendo Entertainment System" --output "./covers"

# Download a single ROM file's cover
python -m scripts.cover_cli download-file --path "F:\Roms\gbc\Zelda.zip" --output "./covers"

# Download all GBC game covers from a ROM folder
python -m scripts.cover_cli download-folder --path "F:\Roms\gbc" --system "Nintendo - Game Boy Color" --output "F:\Roms\gbc\download"

# Same as above, with ES-DE layout and cover+logo
python -m scripts.cover_cli download-folder --path "F:\Roms\gbc" --system "Nintendo - Game Boy Color" --output "F:\Roms\gbc\download" --type boxarts,logos --preset es-de

Using Preset Layouts

# Pegasus: each game gets its own folder with boxFront.png, logo.png, etc.
python -m scripts.cover_cli download-folder --path "F:\Roms\fc" --system "Nintendo - Nintendo Entertainment System" --output "F:\Roms\fc\media" --type boxarts,logos --preset pegasus

# ES-DE: covers/, marquees/, titlescreens/, screenshots/ subdirectories
python -m scripts.cover_cli download-folder --path "F:\Roms\gbc" --system "Nintendo - Game Boy Color" --output "F:\Roms\gbc\download" --type boxarts,logos --preset es-de

# RetroArch: Named_Boxarts/, Named_Logos/, etc. with matched game names
python -m scripts.cover_cli download-folder --path "F:\Roms\n64" --system "Nintendo - Nintendo 64" --output "F:\Roms\n64\thumbnails" --type all --preset retroarch

# Simple: all covers directly in the output folder
python -m scripts.cover_cli download-folder --path "F:\Roms\snes" --system "Nintendo - Super Nintendo Entertainment System" --output "F:\Roms\snes\covers" --preset simple

List Available Presets

python -m scripts.cover_cli list-presets

Save a Custom Preset

python -m scripts.cover_cli save-preset --name "my-n64" --rule '{"Named_Boxarts":{"dir":"{output}/{rom}","name":"boxfront"},"Named_Logos":{"dir":"{output}/{rom}","name":"logo"}}' --filename rom --desc "N64: ROM-name folders with type-alias filenames"

Installing as an AI Coding Assistant Skill

This tool follows the Agent Skills standard. The SKILL.md is compatible with all AI coding clients that support this standard. Simply place the project folder into the corresponding client's skills directory — no extra configuration needed.

Client Installation Paths

Client User-level Path (Recommended) Project-level Path
Claude Code ~/.claude/skills/game-cover-downloader-skill/ .claude/skills/game-cover-downloader-skill/
Codex CLI ~/.codex/skills/game-cover-downloader-skill/ .codex/skills/game-cover-downloader-skill/
OpenClaw ~/.openclaw/skills/game-cover-downloader-skill/ <workspace>/skills/game-cover-downloader-skill/
CodeBuddy ~/.codebuddy/skills/game-cover-downloader-skill/ .codebuddy/skills/game-cover-downloader-skill/

Windows users: ~ corresponds to %USERPROFILE%, e.g. C:\Users\YourName\.claude\skills\game-cover-downloader-skill\

Installation Steps

Option 1: Git Clone (Recommended)

# Example for Claude Code — replace the path for other clients
git clone https://github.com/wang1025475397/game-cover-downloader-skill.git ~/.claude/skills/game-cover-downloader-skill

Option 2: Manual Copy

  1. Download and extract the project ZIP
  2. Copy the entire game-cover-downloader-skill folder to the client's skills directory from the table above
  3. Ensure the directory structure is <skills-path>/game-cover-downloader-skill/SKILL.md

Option 3: Project-level Install (Team Sharing)

Place the game-cover-downloader-skill folder in the project root's corresponding location (e.g. .claude/skills/) and share it via Git.

Verify Installation

Restart your AI coding assistant after installation. Mention downloading game covers in a conversation to trigger the Skill. For example:

  • "Download covers for N64 games"
  • "Download NES covers and logos in Pegasus format"
  • "What download presets are available?"

Project Structure

game-cover-downloader-skill/
  SKILL.md                       # AI Skill definition
  requirements.txt               # Python dependencies
  fetch_data.py                  # Data download script
  README.md                      # This file
  scripts/
    __init__.py
    cover_cli.py                 # CLI entry point
    thumbnail_matcher.py         # Core matching engine
    presets.json                 # Built-in preset rules
    user_rules.json              # User custom rules (generated by save-preset)
  libretro_data/                 # (not in repo — downloaded via fetch_data.py)
    mediadata/                   # Per-system thumbnail index JSON
    metadata/                    # Per-system ROM metadata JSON
    merged_games.json            # Merged game name database
    platform-aliases.json        # Platform name alias mapping

Common Options

Option Description Default
--system Libretro platform name Auto-inferred
--output Output directory Required
--type Media types: boxarts/titles/snaps/logos, comma-separated or all boxarts
--preset Preset rule: pegasus/es-de/retroarch/simple or user custom None
--save-rule Custom save rule JSON Default rules
--filename Filename source: game/rom/match game
--download-workers Download thread count 4
--min-score Minimum fuzzy match score 80
--existing Existing file handling: ask/skip/overwrite ask
--dry-run Preview matches without downloading false

License

MIT

Yorumlar (0)

Sonuc bulunamadi