Package format
Use the current local .ipwt archive structure and manifest contract.
An .ipwt file is a ZIP archive. manifest.json must be directly at the archive root. Do not put every file under an extra parent folder.
Package structure, manifest compatibility, and session materialization must all succeed.
- 01Root layout
Place `manifest.json`, the declared entry, and all relative assets directly in the archive tree.
- 02Validate
The importer checks identity, file safety, size limits, and category/surface/entry compatibility.
- 03Install
The validated archive joins the personal Template Market library as a reusable source.
- 04Materialize
Using it creates a separate session-owned copy rather than editing the library package.
acme-growth-brief.ipwt
├── manifest.json
├── cover.svg
├── entry.html
├── design-tokens.css
└── assets/
└── chart.png
For a video template, replace entry.html with index.html.
Manifest
Every package uses a versioned manifest. Keep kind as "design" for v1 packages. The surface selects which editor opens the package.
{
"schemaVersion": 1,
"id": "acme.growth-brief",
"version": "1.0.0",
"kind": "design",
"category": "report",
"style": "editorial",
"tags": ["growth", "weekly"],
"surface": "design",
"title": "Growth Brief",
"description": "A concise weekly operating report for product and growth teams.",
"cover": "cover.svg",
"entry": "entry.html",
"source": {
"name": "Acme Design",
"repository": "https://github.com/acme/design-templates",
"license": "MIT"
},
"designSystem": {
"tokenVersion": 1,
"tokens": "design-tokens.css",
"editableGroups": ["theme", "background", "typography", "components"],
"variables": [
{ "id": "--ipw-color-primary", "label": "Primary", "type": "color", "group": "theme" }
]
},
"minimumAppVersion": "0.17.20"
}
Validation rules
idis lowercase and includes at least one.or-.- Local packages cannot use the reserved
ipollowork.*namespace. - Versions use semantic versioning, such as
1.2.0. - A video package must use
category: "video",surface: "video", andindex.html. - Use only relative file paths. The importer rejects symbolic links, executable files, absolute paths, traversal paths, and duplicate paths.
- The current importer accepts HTML, CSS, JavaScript, JSON, image, font, text, Markdown,
LICENSE, andNOTICEfiles.
The current limits are 50 MB for the archive, 200 MB after extraction, 1,000 files, and 25 MB per individual file.
Preserve the editing contract
For a Design template, designSystem.tokens should point to the stylesheet that contains the declared --ipw-* variables. editableGroups and variables should describe only values that the author has actually made safe to change. A variable ID must exist in the token stylesheet; avoid claiming an editable value that is hard-coded somewhere else in the page.
For a Video template, keep the HyperFrames composition in root index.html and define a non-empty data-composition-variables array. The video variables are the editing contract for Video Studio; ordinary Design packages should not add a video runtime just to share a color token.
Treat validation failures as design feedback
| Failure | Usually means | Correct response |
|---|---|---|
| Missing root manifest | The archive was zipped from the wrong parent directory. | Rebuild the archive with package files at its root. |
| Invalid category, surface, or entry | A Design and Video contract was mixed. | Choose the intended editor and match its required entry. |
| Rejected path or file | The package contains a nonportable or unsafe artifact. | Remove executable, link, traversal, duplicate, or absolute path content. |
| Variable is not usable | Manifest metadata does not match the editable source. | Add the declared token/binding or remove it from the contract. |
Read Authoring contracts before making the archive; it explains what each editor expects after import.
Package the archive
Run the following command from the folder that contains manifest.json:
zip -r acme-growth-brief.ipwt manifest.json cover.svg entry.html design-tokens.css assets
Keep the package source in version control. The .ipwt file is a distribution artifact, not the only copy of the template.