Migre para o Blume
Mova um site de documentação em Mintlify, Docusaurus, GitBook, MkDocs, ReadMe ou outra ferramenta para o Blume com um único comando que entrega a migração ao Codex ou ao Claude Code.
Migrar um site de documentação para um Blume idiomático exige decisões que um codemod não consegue tomar: qual navegação declarada vira pastas, quais componentes viram diretivas e o que não tem equivalente no Blume. Por isso, o blume migrate entrega o trabalho a um agente de código, que segue o playbook de migração do Blume enquanto você revisa cada edição.
Migre com um único comando
Rode o comando a partir da raiz do projeto de documentação que você está migrando:
npx blume migrate fumadocs --codexpnpm dlx blume migrate fumadocs --codexyarn dlx blume migrate fumadocs --codexbunx blume migrate fumadocs --codexnubx blume migrate fumadocs --codexaube dlx blume migrate fumadocs --codexTroque fumadocs pelo seu framework, e --codex por --claude para usar o Claude Code. Com o pnpm 12, adicione --allow-build=esbuild depois de pnpm dlx, já que o pnpm 12 não executa o script de instalação do esbuild sem aprovação. O agente abre de forma interativa no seu terminal, então cada edição passa pelo fluxo de permissões dele. Ele trabalha direto nos arquivos, então comece com uma working tree limpa e revise a migração inteira como um único diff.
Origens
Informe o framework do qual você está migrando, ou deixe de fora e o Blume o detecta pelos próprios arquivos do projeto. Se você informar um e o projeto parecer ser de outro, o Blume mostra um aviso e continua com o que você informou:
| Origem | Detectado por | Guia |
|---|---|---|
mintlify |
docs.json ou mint.json |
Migre do Mintlify |
fumadocs |
source.config.ts, ou fumadocs-core, fumadocs-ui ou fumadocs-mdx no package.json |
Migre do Fumadocs |
docusaurus |
docusaurus.config.* |
Migre do Docusaurus |
starlight |
@astrojs/starlight no package.json |
Migre do Starlight |
nextra |
nextra no package.json |
Migre do Nextra |
vitepress |
.vitepress/config.ts (ou .mts, .js, .mjs) na raiz ou em docs/, ou vitepress no package.json |
Migre do VitePress |
vuepress |
.vuepress/config.ts (ou .js, .mjs, .yml, .toml) na raiz ou em docs/, vuepress.config.*, ou vuepress (ou vuepress-vite, vuepress-webpack) no package.json |
Migre do VuePress |
docus |
docus (Docus 3 em diante) ou @nuxt-themes/docus (Docus 1) no package.json; em um workspace, rode o comando a partir do pacote de documentação |
Migre do Docus |
mkdocs |
mkdocs.yml, mkdocs.yaml, zensical.toml, properdocs.yml ou properdocs.yaml |
Migre do MkDocs Material |
mdbook |
book.toml na raiz ou em docs/ ou book/ |
Migre do mdBook |
fern |
fern/docs.yml |
Migre do Fern |
gitbook |
.gitbook.yaml, .gitbook.yml ou gitbook-docs.yaml, ou honkit ou gitbook-cli no package.json; nunca só o SUMMARY.md |
Migre do GitBook |
redocly |
sidebars.yaml, ou @redocly/realm ou outro pacote da família Realm no package.json; nunca só o redocly.yaml |
Migre do Redocly |
readme |
_order.yaml em docs/, reference/, recipes/ ou custom_pages/; um repositório que faz upload com rdme precisa que a origem seja informada |
Migre do ReadMe |
docsify |
docsify-cli ou docsify no package.json; um site sem package.json precisa que a origem seja informada |
Migre do Docsify |
jekyll |
_config.yml na raiz ou em docs/, verificado depois de todas as outras origens que o Blume detecta |
Migre do Just the Docs |
github-wiki |
Nunca detectado: uma wiki não tem arquivo de config, então informe a origem | Migre de uma wiki do GitHub |
A detecção verifica a pasta em que você roda o comando. Cada origem tem sua própria referência de mapeamento no playbook, e várias também têm um codemod que o agente roda primeiro para fazer as reescritas mecânicas, assim o esforço dele fica para as decisões que exigem julgamento. Um site feito com qualquer outra ferramenta também pode ser migrado: rode o comando sem informar uma origem, e o agente primeiro faz um inventário do repositório e depois trabalha a partir das regras gerais do playbook.
O que o agente faz
O agente segue o fluxo de trabalho do playbook, da config da origem até um build que passa:
- Escreve o
blume.config.ts, mapeando só o que a sua origem declara e deixando os padrões do Blume cobrirem o resto. - Reestrutura o conteúdo em navegação baseada no sistema de arquivos, convertendo os arquivos de ordenação por pasta (
meta.jsondo Fumadocs,_metado Nextra) parameta.ts. - Reescreve as páginas: frontmatter para o schema do Blume, componentes de callout para diretivas, ícones para Lucide e snippets incorporados diretamente no conteúdo.
- Adiciona um redirect para cada URL que muda de lugar, para que nenhum link quebre. As URLs com
#/do Docsify nunca chegam ao servidor, então, nesses casos, ele adiciona um pequeno script que leva cada uma para a nova página. As URLs de uma wiki do GitHub continuam no github.com, que não permite redirects, então o agente mapeia cada página para a nova rota dela e prepara páginas stub com links que você pode enviar para a wiki antiga. - Aponta os scripts do seu
package.jsonparablume deveblume build, e troca as dependências do framework antigo porblume. - Roda
blume buildeblume validateaté que os dois passem.
Ele termina com um resumo do que foi migrado, descartado ou aproximado, como links de rodapé ou botões da barra de navegação sem equivalente no Blume, para que você decida o que fazer com cada um.
Outros agentes
Sem --codex ou --claude, o comando informa a origem que detectou, mostra o caminho para o playbook — a skill blume-migrate que vem incluída no pacote — e encerra sem alterar nada. Aponte qualquer outro agente para esse SKILL.md, ou instale a skill onde o seu agente procura skills, com o comando que ele mostra:
npx skills add haydenbleasel/blume --skill blume-migrate
Compare antes
As páginas de comparação colocam o Blume lado a lado com cada framework e listam o que a migração aproveita e o que ela reescreve em cada caso.