User Commands got introduced decades ago into what is now APL+Win. In 2009, they became available in Dyalog as well.
The idea is that code which supports the development process but is not part of an application should be ...
- kept separate from the workspace
- available all day, even in a clear workspace
A typical example is the Display function available in all nested-array-capable APLs.
APL+Win used a opening square bracket to tell the interpreter to process what comes next as a User Command. Fortunately, Dyalog has choosen the same syntax.
Both, APL+Win as well as Dyalog (12.1 or better) are coming with several pre-defined ones, but of course the idea is to allow the ordinary user to add it's own User Commands. Naturally this is done in different ways, so User Commands written for one of them are not compatible with the other.