modpack-formats

Parses Modrinth .mrpack and CurseForge modpack archives and imports them into launcher instances.

Updated Sep 8, 2026
One-click install
npx skills add https://github.com/Sixdd6/grid-craft-launcher --skill modpack-formats-sixdd6
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: modpack-formats
Source: https://github.com/Sixdd6/grid-craft-launcher/tree/main/.claude/skills/modpack-formats
Command: npx skills add https://github.com/Sixdd6/grid-craft-launcher --skill modpack-formats-sixdd6

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Developers working on the gcl-core modpacks module need to understand two different modpack archive formats and a multi-step import algorithm before modifying any code, and getting the format rules wrong produces unsafe paths, disallowed downloads, or broken instances. ## Core Features & Use Cases - Format Detection: Identifies Modrinth .mrpack archives via modrinth.index.json and CurseForge packs via a manifest.json with manifestType minecraftModpack, rejecting anything else as UnknownFormat. - Safe Parsing Rules: Documents sha1 requirements, loader dependency constraints, host allowlists, safe_join path checks, and the 8 MiB manifest read cap that prevent malicious archives from escaping the game directory. - Import Algorithm Reference: Describes the full import flow from instance creation through loader install, file placement, hash-based Modrinth lookups, CurseForge batch resolution, override copying, and partial-instance cleanup on failure. - Use Case: Before editing gcl-core modpacks/ to add a new loader or change file placement, read this Skill to learn exactly how PackPlan is built and which errors each malformed input produces. ## Quick Start Read this Skill before modifying the gcl-core modpacks module so the .mrpack and CurseForge parsing rules and import algorithm guide your changes.

Frequently Asked Questions about modpack-formats

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I detect whether a modpack zip is Modrinth or CurseForge format?▼

Check the archive root: a modrinth.index.json file means Modrinth .mrpack, while a manifest.json whose manifestType is minecraftModpack means CurseForge. Anything else, including a manifest nested in a subfolder, returns Error::UnknownFormat.

How does the modpack import algorithm install files into an instance?▼

Import creates the instance first, installs the loader, then places files: .mrpack files are fetched by sha1 and linked into the game directory, while CurseForge files are resolved via files_batch and placed by project class. Override folders are copied last, and failures delete the half-built instance unless keep_partial is set.

What download hosts are allowed for .mrpack files?▼

The allowlist covers cdn.modrinth.com, github.com, raw.githubusercontent.com, and gitlab.com, plus any hosts passed via extra_hosts for one call. Any other host produces Error::DisallowedHost before downloading.

Why does modpack parsing fail with Error::Parse on the dependencies section?▼

An .mrpack must name minecraft plus exactly one of fabric-loader, quilt-loader, forge, or neoforge in its dependencies. Zero loaders or two or more loader keys is rejected because the launcher does not install packs without a single defined loader.

What happens to CurseForge modpack files with no downloadUrl?▼

A file with no downloadUrl becomes a ManualDownload entry, the same as in content::add, and does not fail the import. Files whose project class is a data pack are skipped with a warning, and unrecognized file ids are dropped and logged.