Skip to content

composite-pack-manifest schema

The newer composite-pack / Country-or-Industry-Pack / Code-Plugin-style manifest contract (contractVersion/publisher/distribution/12 extension-point contributions) — a genuinely different artifact type from an ordinary .spk plugin.json (use 'plugin-manifest' for that).

Pull the full JSON Schema: erp schema pull composite-pack-manifest  ·  MCP: erp_get_schema {"name":"composite-pack-manifest"}

Top-level properties

PropertyTypeRequiredNotes
contractVersionyes
id#/$defs/identifieryes
version#/$defs/semveryes
publisherstringyes
displayNameKeystringyes
descriptionKeystringyes
distributionenumyesone of: locked, editable
dependenciesarray
contributions#/$defs/contributionsyes
hasUpgradeMigrationboolean
hasDataErasureHookboolean
frontendBundleobject2026-09-03, closes the dynamic-frontend-plugin-loading gap (ai/domains/ai-native-developer-platform-gap-analysis.md): a compiled @erp/* frontend bundle a runtime loader fetches from the real, generic engine-file content endpoint (GET /api/v1/files/{fileId}/content) and dynamically import()s, instead of the code shipping inside a host application's own build. Optional and additive - absent on every manifest that predates this field (every real plugin in the fleet today except this pass's own proof plugin), which a frontend loader must treat as a cheap, silent no-op.

Named sub-definitions

identifier, semver, versionRange, dependency, argKind, actionTypeContribution, functionContribution, idDescription, networkScopedContribution, scheduledJobContribution, themeContribution, menuItemContribution, localeBundleContribution, contributions