Big ideas - Building standalone apps, a Keyboard Maestro store

Of course you can already turn KM inside out, and distribute macros as Javascript code to systems which have KM installed.

(Each macro becomes an array of JS objects,

[{
    "MacroActionType": "SpeakText",
    "Rate": "Default",
    "IsDisclosed": true,
    "TimeOutAbortsMacro": true,
    "Text": "This is a simple example",
    "IsActive": true
}, {
    "MacroActionType": "PlaySound",
    "Volume": 74,
    "IsDisclosed": true,
    "TimeOutAbortsMacro": true,
    "IsActive": true,
    "Path": "/System/Library/Sounds/Glass.aiff",
    "DeviceID": "SOUNDEFFECTS"
}]

executed by some variant of a function like this:

// jsoDoScript :: Object (Dict | Array) -> IO ()
const jsoDoScript = jso => {
    const strPath = tempFilePath('tmp.plist');
    return (
        Application('Keyboard Maestro Engine')
        .doScript((
            $(Array.isArray(jso) ? jso : [jso])
            .writeToFileAtomically(
                $(strPath)
                .stringByStandardizingPath,
                true
            ),
            readFile(strPath)
        )),
        true
    );
};

(Enhancement Wish -- Copy KM Action as plist, JSON, XML)