A skill package is a flat ZIP file containing aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/XxYouDeaDPunKxX/ChatGPT-SKILL-SYSTEM/llms.txt
Use this file to discover all available pages before exploring further.
MANIFEST.json at the root and one or more declared skill files. The manifest identifies the skill, declares the entry point, and maps every file into one of four functional categories. The loader reads MANIFEST.json first and uses it to drive all subsequent unpack and mount behavior.
Two package modes
The presence or absence ofprimary_file and load_sequence in the manifest controls which loading mode the runtime uses.
Fallback mode
When the manifest omits bothprimary_file and load_sequence, the loader applies fallback defaults:
SKILL.md is the only entry point and no extra mounted files are needed. It is the simplest possible shape.
Fallback manifest:
Root
SKILL.md is required in fallback mode. If you use explicit manifest
mode, SKILL.md at the root is not required — your primary_file may be any
safe relative UTF-8 textual file.Explicit manifest mode
When the manifest declares bothprimary_file and load_sequence, the loader uses those values directly. Use explicit mode when the entry point is nested, when extra mounted files are needed, or when you want unambiguous declaration of what gets loaded.
Explicit manifest:
ZIP structure rules
The ZIP must be flat at root:MANIFEST.json must appear directly inside the ZIP with no surrounding wrapper directory. Internal subfolders are permitted as long as their paths are safe.
Valid structure:
- All ZIP entry paths must use POSIX
/separators — backslashes (\) in any entry name are a hard fail. - Nested ZIP files inside a skill package are not allowed.
- Every declared file path must be a file target, not a directory.
File categories
Every file in a skill package falls into one of four functional categories, each with distinct mount and availability semantics.load_sequence
Files in load_sequence are semantically mounted into the active skill context during SKILL <name> LOAD. They are the only files that become active context automatically.
- Must include
primary_file. - All entries must be AI-only UTF-8 textual files (
.md,.txt, and similar text formats). - Must not include scripts, executables, or binary assets.
- May include nested files with safe relative paths (for example,
docs/intro.md). - Every entry must exist in the ZIP and must be a file target, not a directory.
support_files
Support files are supplemental reference files. They are physically available after unpack but are not mounted into the active context automatically — they are consulted only when needed.
- Every entry must be a safe relative path and must exist after unpack.
- Must not overlap with
load_sequence(overlap is a hard fail). - Use
support_filesfor reference material that should be reachable but should not pollute the automatic context.
tool_files
Tool files are Python scripts physically available to the Python environment after unpack. They are never mounted and never run automatically.
- Every entry must exist, be a file target, and be readable as UTF-8.
- Tool files may use only Python standard library or packages already available in the current GPT Python environment.
pip installand network installs are prohibited. If a dependency is missing, the tool must degrade or fail with a clear warning.- The skill should provide a non-script fallback where possible.
asset_files
Asset files are data, template, media, or other physical files that the task environment can use directly. They are never mounted automatically.
- Every entry must be a safe relative path and must exist after unpack.
- May be non-textual when the environment can consume them as files (for example, CSV templates, images).
Name identity rule
The skill name must be consistent across all four locations. A mismatch at any point is a hard fail.| Location | Must equal |
|---|---|
| Command slug | skill_name |
| ZIP filename | <skill_name>.zip |
| Installed folder | /mnt/data/GPT.SKILLS/SKILLS/<skill_name>/ |
skill_name in MANIFEST.json | the slug |
skill_name must also match the pattern ^[a-z0-9_-]+$. Spaces, uppercase letters, dots, slashes, and .. are all invalid slugs.
Full manifest example
The following is the complete manifest for thecsv-profiler skill demonstrating all four file categories and optional metadata fields: