Labels are a good way to categorize the tasks. But having too many in an unorganized way results more clutter. Here is my way of labeling issues/tasks. This is the way I organize my tasks in GitHub, GitLab and in Jira.
Indicating the area to which issues belong.
|area:optimization||Fine tuning works|
Used to prioritize the issues.
|priority:high||Requires immediate attention|
|priority:medium||Requires attention soon|
|priority:low||Does not require immediate attention|
Indicating the current stage of the issue.
|stage:investigating||Someone is looking into this|
|stage:wontfix||Does not regard this as an issue or will not implement this feature|
|stage:backlog||Prioritized to be picked up in current sprint|
|stage:proposal||No work has been done of this issue|
|stage:awaiting response||Potential fix was proposed; awaiting response|
|stage:pending release||Works associated with this issue is done but not deployed|
|stage:ready for work||The issue is reproducible and in scope|
|stage:needs information||Not enough info to reproduce the issue|
|stage:needs review||Work done but needs review|
|stage:needs investigating||Someone needs to look at this|
|stage:work in progress||Someone is working on it||#68db1c|
Stage labels like in progress, backlog etc can be skipped in GitHub if you linked the issue to a project which has relevant columns matching these stages.
Used to categorize the issues.
|type:chore||Work is required w/ no deliverable to end user|
|type:duplicate||This issue already exists|
|type:feature||New feature that does not currently exist|
|type:enhancement||Requested enhancement of existing feature|
|type:breaking change||Requires a new major release version|
|type:user experience||Improvements needed for UX|
Colors will be updated later (Or you can suggest).