Thank you for your interest in sharing your custom runner! This repository distributes custom runner resources for RunCat Neo, browsable at https://runcat-dev.github.io/RunnerGallery/.
Use a lowercase, hyphen-separated name (e.g., welsh-corgi). This name is used for the directory and file names.
Place the following three files in runners/<runner-name>/:
runners/
└── <runner-name>/
├── <runner-name>-frames.zip
├── metadata.json
└── preview.png
A zip archive of a <runner-name>-frames/ directory containing the animation frames:
<runner-name>-frames/
├── <runner-name>-frame-0.png
├── <runner-name>-frame-1.png
└── ...
Frame requirements:
- Format: PNG, not interlaced
- File name:
<runner-name>-frame-<N>.png, numbered consecutively from0 - Height: exactly 36px
- Width: between 10px and 100px
- All frames must have the same size
- A transparent background is recommended
- The zip must contain nothing but the frames — no Finder-generated files such as
.DS_Store,__MACOSX/, or._*
Tip for macOS users — creating the zip from the command line avoids Finder-generated junk:
zip -r <runner-name>-frames.zip <runner-name>-frames -x "*.DS_Store" "__MACOSX/*"{
"author": "Your Name (YourGitHubID)",
"displayName": "Display Name",
"type": "monochrome",
"tags": ["animal"]
}type must be one of:
monochrome— grayscale or single-color runnerscolor— runners that use more than one hue
tags is a list of tags, chosen from this closed set:
| tag | meaning |
|---|---|
animal |
Any living creature, including fictional ones (excludes human-shaped characters) |
dog |
Dogs. Requires animal as well |
object |
Inanimate objects, tools, geometric shapes |
mechanism |
Moving mechanical devices. Requires object as well |
fitness |
Exercise or workout-themed runners |
Guidelines:
- Human-shaped characters do not receive
animal. If nothing fits, use an empty array[]. - Prefer fewer tags when unsure. Extra tags can always be added later.
- Adding a new tag needs to be proposed in a separate PR that updates both this document and
KNOWN_TAGSin.github/scripts/validate_runners.py.
An animated PNG (APNG) used for the gallery preview:
- Format: APNG, not interlaced (a static PNG will not animate in the gallery)
- Height: 36px
- Width: at most 100px
Add your runner name to runners/manifest.json. Keep the list sorted alphabetically. CI enforces this.
{
"runners": [
"beagle",
"your-runner-name"
]
}Every Pull Request is automatically checked: the frame archive must contain nothing but your frames, and every image must be a genuine, fully decodable PNG. You can run exactly the same checks yourself before pushing, so that you do not have to wait for CI:
pip install -r .github/scripts/requirements.txt
python3 .github/scripts/validate_runners.py --allAnything it reports tells you which file is at fault and what to change.
- Fork this repository and create a branch.
- Commit your runner files and the manifest change.
- Open a Pull Request and fill in the template, including the checklist.
- By submitting a runner, you agree that it will be distributed under this repository's Apache-2.0 license.
- The runner must be your original work, or you must hold the rights to it.
- Runners containing third-party intellectual property (e.g., Pokémon, Mario, or other copyrighted/trademarked characters) cannot be accepted, even as fan art.
The gallery page loads runners/manifest.json with fetch(), which does not work over file://. Run a local server from the repository root instead:
python3 -m http.server 8000Then open http://localhost:8000/ in your browser.