Many packages don't use @api at all. Instead, anything that is not tagged as @internal is considered part of the public API (this of course excludes test code which is not shipped as part of the public package).
It would be great to have a configuration setting to change how Psalm defines the public API, to make it usable in such packages.
My current approach is that I have to identify issue handlers that I need to suppress because the rules rely on the definition of the public API, which is fragile and also suppresses those errors for internal classes.