I've managed to add a tab to "My Contact Dashboard". The way I did this was by adding my extension using civix and then a hook_civicrm_tabset hook to my extension.
Now, the URL that my tab button is pointing to is civicrm/contact/view/someaction?qstr. The Contact dashboard is making an AJAX request when I click on a tab button, and the server then returns the HTML code for that tab. But since I haven't added any code for that URL/action yet I'd expect either an error response or some default page. (It seems CiviCRM takes the default page action, civicrm/contact/view/someaction?qstr seems to return the same as civicrm/contact/view?qstr)
Can anyone tell me how to make my extension return the HTML for my newly created tab? Should I implement a hook for this somewhere? Or something else? Or perhaps register a route for civicrm/contact/view/someaction? I found https://wiki.civicrm.org/confluence/display/CRMDOC/How+to+Create+Your+Own+Action ("How To Create Your Own Action") which seems to be pretty close. But it says CiviRules module is required, and an optional module for this(adding my own action)..well, it seems sort of far fetched.