Did you include the clientlibs that load the sidekick?
Look in this file: /libs/wcm/foundation/components/page/head.html
Line 29 till 54 is taking care of the 'author-functionality'.
What I do for my project is to put the following code into an 'author.html', and include that into my head:
<meta data-sly-test="${!wcmmode.disabled}" data-sly-include="author.html" data-sly-unwrap></meta>
author.html :
<!--/* Outputs the WCM initialization code.If WCM mode is disabled nothing is rendered */--> <meta data-sly-use.wcmInit="/libs/wcm/foundation/components/page/initwcm.js" data-sly-use.clientLib="${'/libs/granite/sightly/templates/clientlib.html'}" data-sly-test="${!wcmmode.disabled && wcmInit.isTouchAuthoring}" data-sly-call="${clientLib.all @ categories='cq.authoring.page'}" data-sly-unwrap></meta> <meta data-sly-test="${!wcmmode.disabled && !wcmInit.isTouchAuthoring}" data-sly-call="${clientLib.all @ categories='cq.wcm.edit'}" data-sly-unwrap></meta> <script data-sly-test="${!wcmmode.disabled && !wcmInit.isTouchAuthoring}" type="text/javascript"> (function() { var cfg = ${wcmInit.undoConfig @ context='unsafe'}; cfg.pagePath = "${currentPage.path @ context='uri'}"; if (CQClientLibraryManager.channelCB() != "touch") { cfg.enabled = ${wcmmode.edit @ context="scriptString"}; CQ.undo.UndoManager.initialize(cfg); CQ.Ext.onReady(function() { CQ.undo.UndoManager.detectCachedPage((new Date()).getTime()); }); } })(); CQ.WCM.launchSidekick("${currentPage.path @ context='uri'}", { propsDialog: "${wcmInit.dialogPath @ context='uri'}", locked: ${currentPage.locked @ context="scriptString"}, previewReload: "true" }); </script>