I think the general rule of thumb I find agreeable is "the length of an identifier should be inversely correlated to the distance between its declaration and its use". Personally, I find code with shorter variable names easier to read (the code structure stands out more), as long as I know what the identifiers are - so I strive to keep them as short as possible, while still retaining clarity of what they are. That leads to above rule of thumb.
As type-parameters are always inherently local to the declaration they appear in (and even a method needs to mention them in the receiver), I think it can be argued that they have similar locality to function parameters and should follow similar rules.
Personally, that's what I intend to do. For example
* If I only use one type-parameter, it doesn't matter - `[T any]` is easy to understand and reading `T` should be clear enough
* If I have multiple type-parameters and there is enough context to distinguish them, I will use single-letter names - e.g. `[K comparable, V any]` or `[E Edge, N Node]` seem clear.
* If there is not enough context, I will name them, for documentation purposes - e.g. `[Edge, Node any]`.
Personally, I intend to use upper-case names, because I am used to consider lower-case names to be a signal that a type is not exported and would find that confusing in documentation.