You already have a function that builds the model call. These six steps turn it into an assembly: the same content, expressed as typed items in named slots, with a trace. No library to install. Start with the migrator below or read the steps first.
{{ s.text }}
Paste a system prompt, or a JSON array of chat messages. The migrator proposes a slot for each chunk, assigns the slot's default authority, and reports what an assembler would still be missing. It is a heuristic, deliberately conservative: anything it cannot place is left unassigned rather than guessed. Nothing leaves your browser.
"No owner" counts tokens the migrator could not assign to a slot. Everything else still needs a source and an as_of before an assembler will admit it (R-2); that is step 3, and it is the part no tool can do for you.
Five ways in: an assembly function for your prompt code, an empty payload, an item schema as YAML and as JSON Schema, and a spec file your coding agents can follow.
{{ scaffoldBlurb }}