Carregar dados quando editar registro

meu crud está quase completo. Estou com o seguinte problema: No meu
datatable coloquei 2 botões, um pra editar e outro pra excluir. Porém
quando clico no edit, ele abre a página de cadastro porém não carrega os
dados para edição. Alguém pode ajudar?

Minha página da pesquisa:

<h:panelGroup id="panel">
                <h:form id="edit">
                <p:dataTable id="tabela" var="habilidade"
                    value="#{habilidademb.lista}" paginator="true" rows="10"
                    rendered="#{not empty habilidademb.lista}">
                    <p:column style="width:10%;">
                    <p:commandButton icon="ui-icon-pencil" actionListener="#{habilidademb.editar(habilidade.id)}" process="@this" action="#{habilidademb.navegar('/crud/cadastro/habilidade.jsf')}" ajax="true" update="@form"/>
                    <p:commandButton icon="ui-icon-trash" action="#{habilidademb.excluir(habilidade)}" process="@this" ajax="true" update="@form"/>
                    </p:column>
                    <p:column headerText="Nome" sortBy="#{habilidade.nome}">
                        <h:outputText value="#{habilidade.nome}" />
                    </p:column>
                    <p:column headerText="Descrição" sortBy="#{habilidade.descricao}">
                        <h:outputText value="#{habilidade.descricao}" />
                    </p:column>
                    <p:column headerText="Efeito Secundário" sortBy="#{habilidade.efeitoSecundario}">
                        <h:outputText value="#{habilidade.efeitoSecundario}" />
                    </p:column>
                </p:dataTable>
                </h:form>
                </h:panelGroup>

Página de cadastro:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<ui:composition template="/layout/template.xhtml">
    <ui:define name="content">
        <h:form>
            <p:panel header="Cadastrando Habilidades">
                <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true"/>
                <h:panelGrid id="cadastro" columns="3">
                    <h:outputLabel value="Nome: " />
                    <p:inputText id="nome" value="#{habilidademb.habilidade.nome}" size="20" />
                    <p:message for="nome" />
                    <h:outputLabel value="Descrição: " rendered="true" />
                    <p:inputTextarea id="descricao"
                        value="#{habilidademb.habilidade.descricao}" rows="6" cols="20" />
                    <p:message for="descricao" />
                    <h:outputLabel id="efeitoS" value="Possui efeito secundário? : " />
                    <p:selectBooleanButton id="efeito"
                        value="#{habilidademb.habilidadeHidden}" onLabel="Sim"
                        offLabel="Não" style="width:60px">
                        <p:ajax event="change" update="pnlEfeito" />
                        </p:selectBooleanButton>
                    <p:message for="efeito" />
                    </h:panelGrid>
                    <h:panelGrid id="pnlEfeito" columns="3">
                      <h:outputLabel value="Efeito Secundário: " rendered="#{habilidademb.habilidadeHidden == true}" />
                      <p:inputTextarea id="secundario" value="#{habilidademb.habilidade.efeitoSecundario}" rows="6" cols="20" rendered="#{habilidademb.habilidadeHidden == true}" />
                      <p:message for="secundario" />
                    </h:panelGrid>
                    <p:commandButton action="#{habilidademb.gravar}" value="Salvar" update="cadastro"/>
                    <p:commandButton actionListener="#{habilidademb.cancelar}" value="Voltar" action="#{habilidademb.navegar('/crud/habilidade.jsf')}" process="@this"/>
            </p:panel>

Controle;

public void editar(Long id) {
    try {
        dao.find(id);
    } catch (Exception e) {
        Mensagens.erro(e.getMessage());
    }
}

DAO:

@Override
public Habilidade find(Long k) throws Exception {
    log.info("Encontrando " + k);
    return em.find(Habilidade.class, k);
}