.skf format reference ​

This reference is generated from the engine's exported project types, version constants, and archive limits. It describes the serialized contract; see the project format guide for behavior and safety semantics.

For automated project export from a server-backed project, see POST /exports in the REST API guide.

Package identity ​

PropertyValue
Schemacom.sketchforge.project
Current writer format2
Minimum reader format2
Created-with version1.30.0
Media typeapplication/vnd.sketchforge.project+zip

A packaged file is a ZIP with a root project.json and binary or JSON payloads below assets/. The archive is validated before restoration. ZIP64 and encrypted entries are not supported.

Serialized document fields ​

SkfProjectDocumentV1 ​

FieldSerialized type
schematypeof SKF_SCHEMA_ID
formatVersion`1
minimumReaderVersionnumber
createdWithVersionstring
metadata{ projectId?: string; projectName: string; units: string; createdAt: string; modifiedAt: string; }
assetsSkfAssetRecordV1[]
sceneStateIdstring
statesSkfStateV1[]
history{ entries: Array<{ stateId: string; selectedObjectIds: string[] }>; index: number; }
sketchesArray<{ id: string; nodeId: string; objectId: string; sourceNodeId?: string; sourceObjectId?: string; operation?: SketchOperation; extrusionDepth: number; revolve?: SketchRevolveSettings }>
featuresSkfFeatureV1[]
groupsArray<{ id: string; nodeId: string; objectId: string; memberNodeIds: string[]; operation: string }>
workplanes`Array<{ id: string; kind: "base"
exactCadArray<{ nodeId: string; objectId: string; brepAssetId?: string; importedStepAssetId?: string }>
editor{ workspace: WorkplaneWorkspaceSettings; snapGrid: GridSize; selectedWorkplaneId: string; placementElevation: number; placementWorkplane?: PlacementWorkplane; sketchPlacementWorkplane?: PlacementWorkplane; }

SkfAssetRecordV1 ​

FieldSerialized type
idstring
kindSkfAssetKind
pathstring
mediaTypestring
byteLengthnumber
sha256string
fileName?string
sourceFormat?ProjectAssetSourceFormat

SkfShapeNodeV1 ​

FieldSerialized type
nodeIdstring
objectIdstring
objectType`"native"
workplaneIdstring
definitionRecord<string, unknown>
importedMesh?SkfImportedMeshReferenceV1
groupedShapeNodeIds?string[]
edgeTreatmentHistory?Array<{ id: string; createdAt: number; feature: Record<string, unknown>; appliedFrame?: Record<string, unknown>; beforeNodeId: string; }>
cadBrepAssetId?string
cadDisplayEdgesAssetId?string

SkfFeatureV1 ​

FieldSerialized type
idstring
typestring
outputObjectIdstring
inputObjectIdsstring[]
dependsOnFeatureIdsstring[]
parameters?Record<string, unknown>

Reader compatibility ​

  • V2 is the current writer format and requires a reader at least version 2.
  • V1 packaged projects are accepted and migrate inline display edges into shared assets on import; the next save writes V2.
  • V0 legacy JSON projects are accepted by the explicit migration path, which preserves valid object IDs and history.
  • Unsupported future versions are rejected before restoration. The original input bytes are not modified.

Reader safety limits ​

LimitValue
archiveBytes512 * 1024 * 1024
expandedBytes1024 * 1024 * 1024
projectJsonBytes64 * 1024 * 1024
assetBytes256 * 1024 * 1024
entries4096
states5001
objectsPerState100_000
features300_000
meshNumbers30_000_000

These are engine validation limits, not suggested project sizes. The expanded archive limit applies across entries; assetBytes limits one asset, and projectJsonBytes limits project.json.


Documentation version: 1.30.0 · Repository revision: 1cb9fee8dff4d394684c229dd67a21da539d167f · View source