i think @_documentationCategory(_:) is a great idea (though i would name it @documentation to follow the precedent of similar attributes like @available). but why not just have it be a free-form string that downstream tooling can interpret according to its own definitions?
@_documentation(DocC.forceHidden)
@_documentation(DocC.forceVisible)
@_documentation(myTool.myCustomCategory)
maybe (and hear me out) it could actually a good thing to combine documentation for “contributors” and “users”? after all, they need not be mutually exclusive, as a package author i would hope some of my users would eventually become contributors as well. and when i am consuming packages written by others, i often end up browsing through source code on GitHub anyway. pages for things that are “for contributors” could be made visually distinct, maybe with a different background color or styling.