This does not answer your question about adding to the palettes menu automatically through placement in a directory structure, but perhaps it can be of use. The following code adds items to the top of the Palette Menu programmatically (it is somthing I figured out some years ago for a project of mine).
ClearAll[AddToPalettesMenu];
AddToPalettesMenu[paletteData : {{_String, _String} ..}] :=
Module[{itemList, dummyFunction, tempFunction, temp},
SetAttributes[ FrontEnd`AddMenuCommands, HoldRest];
MathLink`CallFrontEnd[FrontEnd`ResetMenusPacket[{Automatic}]];
itemList =
Item[First[#],
FrontEnd`KernelExecute[{
EvaluatePacket[dummyFunction@ Last[#]]}],
FrontEnd`MenuEvaluator -> Automatic] & /@ paletteData;
temp =
Function[x,
tempFunction[{
FrontEnd`AddMenuCommands["MenuListPalettesMenu",
x]}
]][itemList] /. dummyFunction -> ToExpression;
temp /. tempFunction -> FrontEndExecute
];
To use this function, you supply a list of pairs of strings. In each pair, the first item is the title of the menu item that will appear. The second item is a function that will be executed when that menu item is chosen. When the function is executed it clears out any other previously added items and adds the new list of ones fresh. Restarting Mathematica removes the items. Or you can just execute
MathLink`CallFrontEnd[FrontEnd`ResetMenusPacket[{Automatic}]];
Here is an example of its use.
AddToPalettesMenu[{{"Square Root",
"CreatePalette[{Button[\"List files\",CreateDocument[{Column[FileNames[]]}]]}]"}}]
But, in your case you could use a NotebookOpen with a path pointing to your specific palette. Or you could define functions in your package which create a given palette programatically.