i will try to write some proper documentation for the xml descriptor and shortcut format but it's pretty straightforward. here's the eshop shortcut example :
Code:
<shortcut>
<executable>/3ds/hans/hans.3dsx</executable>
<icon>/3ds/eshop.smdh</icon>
<arg>-f/3ds/hans/titles/eshop.txt</arg>
</shortcut>
<targets selectable="false">
<title mediatype="0">0004001000020900</title>
<title mediatype="0">0004001000021900</title>
<title mediatype="0">0004001000022900</title>
<title mediatype="0">0004001000027900</title>
<title mediatype="0">0004001000028900</title>
</targets>
basically the executable field points to the 3DSX you want the shortcut to run (in this case HANS), the icon points to the SMDH and arg is the argument that will be fed to the 3DSX. in this case, HANS interprets the argument as "load configuration file /3ds/hans/titles/eshop.txt instead of the default one for this target application". this also makes HANS try to load /hans/eshop.romfs and /hans/eshop.code if those options are enabled, instead of /hans/00021900.romfs, which can be helpful if you want to have multiple romhacks for the same game. (for example you could have rutile.romfs and smea.romfs for rutile ruby and ORAS smea edition)
the second section is the list of titles HANS should run under. essentially, it's just an identifier for the game you want a shortcut to. you can find the identifier for your game on the HANS configuration screen. the mediatype should be set to 0 for a NAND title, 1 for an SD title and 2 for a gamecard. you can have multiple titles in the list so that you can handle different regions, or allow HANS to run under either the SD or gamecard version of your title. there's a priority order : HANS will launch the first title in the list it can, so the titles at the beginning of the list essentially have higher priority than the ones below.
hope this helps.