iPolloWork Docs

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.

Archive contractA template package passes three checks before it becomes a new project

Package structure, manifest compatibility, and session materialization must all succeed.

  1. 01Root layout

    Place `manifest.json`, the declared entry, and all relative assets directly in the archive tree.

  2. 02Validate

    The importer checks identity, file safety, size limits, and category/surface/entry compatibility.

  3. 03Install

    The validated archive joins the personal Template Market library as a reusable source.

  4. 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

  • id is 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", and index.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, and NOTICE files.

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

FailureUsually meansCorrect response
Missing root manifestThe archive was zipped from the wrong parent directory.Rebuild the archive with package files at its root.
Invalid category, surface, or entryA Design and Video contract was mixed.Choose the intended editor and match its required entry.
Rejected path or fileThe package contains a nonportable or unsafe artifact.Remove executable, link, traversal, duplicate, or absolute path content.
Variable is not usableManifest 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.