A local task in Drupal is a callback displayed as a tab. A local task must have a parent item in order for the tab to be rendered.
A well-known example that is part of Drupal core are the local taks for comments with the menu titles "Published comments" and "Unapproved comments". To demonstrate I am going to add an extra local task to those of comments. Let's say I made a new view that will display spam comments and in the advanced settings I have given that view the machine name "page_comment_spam".
The first step would be to create the routing to that view. In the routing the machine name of the view is given to the defaults _view parameter.
# mycomment.routing.yml mycomment.admin_comment_spam: path: /admin/content/comment/spam defaults: _title: 'Comment spam' _view: page_comment_spam requirements: _permission: 'administer comments'
This routing defines the callback I will need to define the local task. Instead of a view, I could also have define a controller function (with a defaults _controller parameter) or a form (with a defaults _form parameter), which is used more often. For this example it does not really make a difference.
The definition for the local task is as follows.
# mycomment.links.tasks.yml mycomment.admin_comment_spam: title: 'Spam comments' route_name: mycomment.admin_comment_spam class: Drupal\mycomment\Plugin\Menu\LocalTask\SpamComments parent_id: comment.admin weight: 10
I hope that the fact that I named the routing name and the task name the same, does not confuse you in thinking that it needs to be the same name. It does not need to be.
Special in the above is that a class is being defined. This class definition is optional. I included it here to demonstrate how you can dynamically change the title of the tab with the help of a local task plugin.
What is important is that I defined the parent_id the same as the existing local tasks for comments, and that I defined the route_name to be used for the callback of the tab. I added some weight to the definition to make sure the tab is displayed to the right of the existing local tasks.
The plugin definition I adapted from the one being used in the (core) comments module. It adds a count to the tab link equal to the number of comments that will be displayed in the view.