The .pkg format
What's inside a built Package artifact, and the limits it must respect.
A .pkg is a zip archive written by build.
You never need to open one, but it helps to know what it holds.
| Entry | Contents |
|---|---|
elizon.yaml | Your manifest, byte for byte. |
<collection>/<name>.json | Each object's portable definition, as canonical JSON (keys sorted). A Skill's folder is packed into one entry. |
voice.json, sip.json | The voice configuration and SIP routing template, if the Package has them. |
| the evaluation suite | At the path evaluation.suite names. |
.elizon/digests.json | The digest manifest: format version, and the SHA-256 and size of every other entry. |
.elizon/signature.json | The signature over the digest manifest. Present only after sign. |
{
"formatVersion": 1,
"algorithm": "sha256",
"entries": [
{ "path": "agents/escalation.json", "bytes": 2114, "sha256": "98973866e574faf7…" },
{ "path": "agents/intake.json", "bytes": 2010, "sha256": "242c09b5b4045e69…" }
]
}Reading without extracting
Studio's Review step and the install pre-check read elizon.yaml straight from the archive's index,
without unpacking anything. An installer sees the full inventory, the compliance block and the
signature result before anything is written.
Limits
| Limit | Value |
|---|---|
| Artifact size on disk | 50 MB |
| Total uncompressed content | 50 MB |
| Any single file | 5 MB uncompressed |
| One Skill's files, in total | 10 MB |
| Entries in the archive | 5,000 |
| Objects in one Package | 100 |
| Folder depth of an entry path | 8 segments |
A Package over a limit fails at build (PKG_LIMIT_EXCEEDED, PKG_ENTRY_TOO_LARGE,
PORTABLE_SKILL_TOO_LARGE) rather than producing an artifact that could never install. If you hit
the object limit, split the Package into more than one.
Safety
The reader refuses entries with absolute paths, .. segments or symlinks (PKG_UNSAFE_ENTRY_PATH),
duplicate entries, and any file whose hash doesn't match the digest manifest (PKG_DIGEST_MISMATCH).
Your source folder may not contain .elizon/digests.json or .elizon/signature.json either; build
and sign write those.