A tagging system would also be fine.
Both for the stencil and the individual shapes.
A database would store these data.
When someone uploads a stencil the db needs to be triggered (somehow) and some code would then analyze the stencil. Check for specific fields in the doc's user section (eg purpose, categories, tags, author, version, ... etc.).
If the fields don't exist yet, they will created and can be edited afterwards.
The code would then iterate over the masters and repeat the checking process, but for master specific topics (name, description, color, 3D, SmartShape, DataDriven, ...).
It would then create thumbnails of the masters (may be in different sizes).
As for the naming, it could be Stencil_Name (unique), Version, Shape_Name
GitHub Pages allows the use of Javascript - We should then check if the page could interact with the db to build up a result page with images, based on a search.
I don't know if the stencils can be stored automatically in subfolders ... useful? feasable?
A big challenge remains when considering the automation of adding a stencil.
Ideally the uploader would do all the work. Setting this automation up might be very difficult.
On the other hand, asking admins to do the job is also risky since you depend on this "resource".