Good idea.  There's a few minor niggles, though:

1. Don't use `unsafeWindow`, this will break in Chrome and will not even work in Firefox+Greasemonkey if the effective `@grant` changes.

1. Avoid leading `*` wildcards in `@includes`, if you can help it.  This is a big performance hit.  `@match` limits the wildcard scope and performs much better and reports the sites/security correctly on Chrome.  This gets all current SE sites:

        // @match       *://*.askubuntu.com/questions/*
        // @match       *://*.onstartups.com/questions/*
        // @match       *://*.serverfault.com/questions/*
        // @match       *://*.stackapps.com/questions/*
        // @match       *://*.stackexchange.com/questions/*
        // @match       *://*.stackoverflow.com/questions/*
        // @match       *://*.superuser.com/questions/*

1. The regex `match` needs to be more robust, to account for all legal characters in the URL, and for anchors.

1. Use injection so that the script will work on most userscript-capable browsers (Chrome, Firefox, Opera, Safari, etc.).

<br>
Here's a variant of the script I've been using. It also adds a "revisions" link since a post's history is sometimes hidden. It works on Chrome and Firefox, and should work on most other userscript-capable browsers:

View [the source at GitHub Gist][1].

[<kbd>Install from GitHub Gist</kbd>][2]
========================================
<br>

    // ==UserScript==
    // @name        Stack Exchange: Add Timeline and Revisions links to posts
    // @description Adds links to posts to always show history and links to questions to show the Timeline".
    // @namespace   StackExchange
    // @match       *://*.askubuntu.com/questions/*
    // @match       *://*.mathoverflow.net/questions/*
    // @match       *://*.serverfault.com/questions/*
    // @match       *://*.stackapps.com/questions/*
    // @match       *://*.stackexchange.com/questions/*
    // @match       *://*.stackoverflow.com/questions/*
    // @match       *://*.superuser.com/questions/*
    // @version     1.3
    // @history     1.3 SE changed Timelines. Answers were separated out from the question timeline.
    // @history     1.2 Updated match list
    // @history     1.1 Added revisions link
    // @grant       none
    // ==/UserScript==

    $(".post-menu").each ( function (J) {
        var jThis   = $(this);
        var href    = jThis.find ('a[class="short-link"]').attr ("href");
        var idMtch  = href.split (/[qa]\/(\d+)/);
        if (idMtch.length > 2) {
            var id  = idMtch[1];
            jThis.append (
                '<span class="lsep">|</span><a href="/posts/' + id + '/revisions">revisions</a>'
            );
            jThis.append (
                '<span class="lsep">|</span><a href="/posts/' + id + '/timeline">timeline</a>'
            );
        }
    } );
    $(".revcell3.vm>div").each (function () {
        //-- Looks like a timebomb...
        guid = $(this).find ("a").attr ("href").match (/\w{8} (?:-\w{4} ){3}-\w{12}/)[0];
        $(this).prepend ('<a href="#rev' + guid + '">link</a><span class="lsep">|</span>');
    } );

  [1]: https://gist.github.com/BrockA/5761948
  [2]: https://gist.github.com/BrockA/5761948/raw/Add_Timeline_Button_to_Stack_Exchange_questions.user.js