The repository includesDocumentation 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.
scripts/build_packages.py, a Python build script that creates and validates the core package and all skill packages in a single run. It enforces ZIP structure rules, POSIX path separator requirements, path safety, and manifest correctness before writing any output to dist/. If any validation step fails, the script exits immediately with a descriptive error — no partial output is written.
Running the build
From the repository root, run:What the build script does
The script processes the core and all skills in a fixed sequence:Build the core package
Reads the
GPT.SKILLS/ source directory and packages it as dist/GPT.SKILLS.zip. The ZIP must have SYSTEM_CORE/ and SKILLS/ at its root — there must be no GPT.SKILLS/ wrapper folder inside the archive. The script validates the core manifest, required file presence, UTF-8 readability, load sequence, and POSIX path separators.Build each skill package
For each subdirectory under
skill_sources/ that contains a MANIFEST.json, the script reads and validates the manifest, then packages the skill as dist/skills/<skill_name>.zip. The source folder name must match skill_name in the manifest.Write with POSIX path separators
All ZIP entries are written using POSIX
/ path separators. Backslashes (\) in any entry name are a hard fail. The script calls .as_posix() on every path before writing it to the archive.Validate each ZIP after writing
After writing each ZIP, the script reopens it and validates the archive again — checking entry names, manifest fields, wrapper directory detection, and nested ZIP detection. This post-write check catches any discrepancy between source validation and the written archive.
What is validated
The build script performs the following checks for every package it builds. Any failure is a hard stop.Package shape
The ZIP root contents match the expected layout —
SYSTEM_CORE/ and SKILLS/ for the core; MANIFEST.json at root for skills.ZIP path separators
Every ZIP entry uses POSIX
/ separators. Any entry containing \ causes an immediate failure.Manifest fields
Required fields are present and have the correct types.
system_name and version are validated against exact expected values for the core.Load files
All files in
load_sequence exist, are readable as UTF-8, and are not scripts or binary assets.Support files
All declared
support_files exist and have safe relative paths.Tool files
All declared
tool_files exist and are readable as UTF-8.Asset files
All declared
asset_files exist and have safe relative paths.Wrapper directory detection
The ZIP is checked for a single wrapper directory surrounding the package contents. Wrapper directories are a hard fail.
Unsafe path detection
Absolute paths,
.. segments, drive letters, backslash paths, and empty path segments are all rejected.Nested ZIP detection
No
.zip file may appear inside a built package.Repository layout
dist/ directory is the build output directory. It is created automatically on the first build run. The GPT.SKILLS/ and skill_sources/ directories are the source inputs — never edit files in dist/ directly.
Adding your own skills
To include a new skill in the build:-
Create a folder under
skill_sources/<skill-name>/. The folder name must match theskill_nameyou intend to use. -
Add
MANIFEST.jsonwith at minimumskill_nameandversion. -
Add your skill files — at minimum
SKILL.mdfor fallback mode, or the file declared asprimary_filefor explicit mode. -
Run the build:
dist/skills/<skill-name>.zip. If validation fails, the script prints the specific error and exits before writing any output for that skill.
Core ZIP structure
SKILL CORE UNPACK extracts GPT.SKILLS.zip into /mnt/data/GPT.SKILLS/. For the extracted tree to be valid, the ZIP must contain SYSTEM_CORE/ and SKILLS/ directly at its root — not wrapped in a parent folder.
Valid core ZIP root:
"core ZIP contains GPT.SKILLS wrapper" if the wrapper is detected. The same no-wrapper rule applies to all skill ZIPs: MANIFEST.json must appear at the skill ZIP root, never inside a subfolder named after the skill.