I have a build system defined in my project, and it shows up in the Tools | Build System menu, but it does not show up when pressing Ctrl+shift+P. If I select it as the active one then it shows up there. When/how does Sublime determine when to use/make available the build systems within a project vs. the globally defined ones?

The effect I'm looking for is being able to define a project build system to spawn external tools in addition to the globally selected build system, but if it's not published to the menu there's no easy way for me to access it.

Given these settings, Ctrl + B would run the date command, Crtl + Shift + B would run the Python interpreter and the remaining variants would appear in the Command Palette whenever the build system was active.

Variants apply only to a single build system. What I'm asking is for is to be able to have a default build system selected with variants A, B, and C, and also have a build system defined within my project with variants X, Y, and Z, and thus be able to choose to build A/B/C/X/Y/Z from the build menu. This is so I can work around the apparent limitation that any external tool that generates parsed output must be defined as a build system.

I see. I believe the commands listed in the command palette are those offered by the build system. variants As you can't have multiple build systems specified per project (I think), I don't think it's possible to use the native build system to achieve what you want. That being said, I believe the build system are just a series of arguments passed to the "exec" command in Default/exec.py. So you can probably write your own plugin, perhaps wrapping the exec command, and add your own entries to a Default.sublime-commands file, which will then be added to the command palette. Actually, if you are just modifying the arguments to the exec call, you need a plugin, just specify the appropriate values as args in the Default.sublime-commands file.