Extending Tags

In our internal workspace, we have a base #todo tag which only contains Assignee, Due date and Status.
We then have #design task, #dev task and so on, which extend #todo – so they get those base fields – but add new, specific fields such as Github PR , Spec and Related feature.
It is also convenient to be able to add a new field to #todo, and know that any extension of #todo will get the same field.
Most of the time, we use the derived tags, but this setup lets us query for any #todo assigned to a certain person or with a certain status. Even if you don’t see #todo in your #design task tag, it’ll be there, and #design task is considered a #todo by the search expressions.
So when you have many tags that will share the same baseline of properties, the Extend feature comes handy. A lot like inheritance in object-oriented programming.
We use a lot of extended tags internally in the tana workspace:
#todo is extended by #dev task, #design task, #bug, etc.
#meeting is extended by #onboarding session, #followup, #investor meeting, #interview, etc.
#person is extended by #candidate, #alphauser, #investor, #employee, etc.
#user observation is extended by #wtf moment, #aha moment, etc.