Extensions
These are kept out of the core and added separately. An extension is a single plugin function. Pass it to plugin() where you need it.
The hyper-scope core is a template language. It handles scopes and attributes, mounts scopes inserted into the document, and tears down the ones that are removed. Nothing more. Work that only some pages use, such as form validation, and work that needs to know a specific library's element or event names live outside the core.
What is built in
$v validate
Form validation. Attach rules to a field with h-rules, and read the result in the same shape as vuelidate ($v.name.$error).
$tf turbo-frame
A handle for the nearest <turbo-frame> around the scope. It reloads the frame and moves it to another URL.
turbo-drive
Carries state across Turbo visits. data-turbo-permanent and the back-navigation cache.
Writing a plugin
Add your own tools the same way. Names, attributes, components, and values to provide.
Adding them
With a plain script tag, just load the file. It attaches whether it loads before or after the core.
As a module, pass them as plugins.
Put the scripts in head. Add extensions before start. Names created per scope ($v, $tf) do not reach scopes that are already mounted.