CommunityEscrita e Ediçãogithub.com

timerise-ai/help-center-markdown

Habilidade de Agente: construir uma central de ajuda baseada em Markdown — pastas de categorias com artigos contendo frontmatter, páginas estáticas de landing/categoria/tag/artigo, pesquisa do lado do cliente com classificação, tags com identidade slug, fallback de localidade com hreflang, JSON-LD e sitemap, validador de conteúdo em CI — no Next.js App Router, sem CMS

O que é help-center-markdown?

Este módulo fornece uma estrutura completa para criar uma central de ajuda ou base de conhecimento estática usando arquivos Markdown no Next.js App Router, sem depender de um CMS. Ele lê artigos organizados em pastas de categorias, extrai metadados via gray-matter e gera automaticamente páginas de landing, categoria, tag e artigo. A pesquisa é do lado do cliente com tokenização e busca por prefixo, classificando resultados por campo. O sistema suporta internacionalização com fallback de localidade, links hreflang, JSON-LD e sitemap. Inclui um validador de CI que verifica referências quebradas, ordens ambíguas, datas inválidas e inconsistências de tags, garantindo que cada artigo seja acessível e esteja correto. A arquitetura centraliza tudo em um índice em memória (React cache), evitando acesso direto ao sistema de arquivos em produção. As regras rígidas do módulo previnem problemas comuns como uso de `max-h` em listas colapsáveis, ordenação apenas por `order` sem desempate, e chaveamento de tags por texto em vez de slug.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add timerise-ai/help-center-markdown

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Central de Ajuda — artigos em Markdown, pesquisa, i18n

Uma central de ajuda é um pequeno site estático com um requisito fundamental: cada artigo deve ser acessível — pela barra lateral, pela pesquisa, de uma localidade traduzida que ainda não o possui. Escrito pelo engenheiro que entregou este módulo; a implementação anterior era uma central de ajuda de site de marketing. O módulo abaixo mantém esse requisito como propriedades verificadas: a barra lateral mostra cada artigo de cada categoria, a pesquisa classifica uma consulta independentemente de como é digitada, links relacionados resolvem ou o validador falha na construção. O carregador, a pesquisa e os conjuntos de tags cobrem cada um; o registro está em references/provenance.md.

Quando usar

Ao construir ou estender uma central de ajuda, seção de documentação ou base de conhecimento cujos artigos são arquivos Markdown no repositório, no Next.js App Router, com ou sem múltiplas localidades.

Quando NÃO usar

  • Um blog. Postagens com data, autor, capas e slugs localizados são um modelo de conteúdo diferente; mantenha o módulo de blog do host.
  • Documentação gerada a partir de código (OpenAPI, TypeDoc) — use seus geradores e vincule à saída.
  • Um site de ajuda com CMS com editores publicando em tempo de execução — o contrato de índice ainda se aplica, mas o carregador, os parâmetros estáticos e a validação mudam; veja a nota sobre CMS em extensions.md.
  • Páginas de marketing que por acaso são Markdown. Reutilize o renderizador do host; este módulo é a navegação, pesquisa e modelo de localidade em torno de muitos artigos.

Arquitetura

content/help/<[locale]/><category>/<slug>.md
        │  gray-matter + normalização
        ▼
getHelpIndex(locale)  ── React cache(): uma análise por requisição ──┐
  categorias · artigos (ordenados) · byKey · tags · byTag · ignorados│
        │                                                        │
        ├─► páginas: landing / categoria / tag / artigo ── metadados, JSON-LD, canonical/hreflang
        ├─► HelpShell ── toSummary → árvore de navegação (barra lateral + gaveta)
        │             ── toSearchDoc → HelpSearch (cliente, pesquisa de prefixo tokenizada)
        ├─► helpSitemapEntries()
        └─► validação:help (CI) ── relacionados não resolvidos, empates de ordem, datas ruins, slugs ruins, deriva de tags

Tudo lê do índice. Nada mais toca no sistema de arquivos.

Fatos críticos

  1. O sistema de arquivos é o esquema. Pasta = categoria, nome do arquivo = slug, e frontmatter são apenas metadados. slug/category no frontmatter são validados em relação ao caminho, nunca usados.
  2. Apenas resumos cruzam para o cliente. toSummary/toSearchDoc removem o corpo; passar HelpArticle para um componente cliente envia todo o corpus em cada página.
  3. Uma página não traduzida é uma duplicata. Ela renderiza a partir da localidade padrão, mantém seu lugar na navegação, mostra um aviso, canonicaliza para a URL da localidade padrão e está ausente de hreflang e do sitemap.
  4. O tempo de execução perdoa; o CI não. Referências ruins são descartadas, ordens faltantes são classificadas por último — e validação:help falha na construção para o autor.
  5. A pesquisa é do lado do cliente por design. ~1 KB por artigo, já na página para navegação, resultados na primeira tecla. Pesquisa no corpo é uma extensão.

Regras rígidas

Nunca defina uma altura máxima em uma lista colapsável. Um par max-h-* + overflow-hidden corta o que não couber e não reporta nada. Use hidden ou um primitivo colapsável real, para que uma lista renderize cada link ou nenhum.

Nunca ordene apenas por order. Empates caem para a ordem readdir, que difere entre sistemas de arquivos. Desempate por título, depois slug.

Nunca resolva related sem validá-lo. Uma referência removida é invisível na página; o validador é o único lugar onde um autor descobre que um slug foi renomeado.

Nunca pesquise uma consulta sem cortar espaços, e nunca pesquise apenas no título. Corte, tokenize, substitua diacríticos, inclua tags e cabeçalhos, classifique por campo.

Nunca codifique strings de chrome em um host com um sistema de i18n. Cada string passa por HelpStrings, para que o cabeçalho, rodapé e avisos troquem de localidade juntos.

Nunca chaveie uma tag pela sua grafia. Maiúsculas, hífens e plurais variam entre autores. Agrupe por tagSlug para que cada variante caia em uma página, e deixe o validador reportar a variação.

Início rápido

  1. Preencha o contrato de interface e defina os IDs das categorias — adaptation.md.
  2. Escolha o layout de conteúdo e escreva a configuração — content-model.md.
  3. Copie o carregador e o analisador de frontmatter; execute o validador no conteúdo real imediatamente — content-loader.md.
  4. Conecte strings e caminhos ao i18n do host — i18n.md.
  5. Adicione as três páginas, ajudantes de SEO e entradas de sitemap — routes.md — em seguida, a página de tag e chips vinculados — tags.md.
  6. Construa a casca, árvore de navegação e gaveta — ui.md — em seguida, o breadcrumb, cartões, listas e renderizador nos primitivos do host — ui-content.md.
  7. Adicione a pesquisa e seu hook; conecte o hook de resultados zero à análise — search.md.
  8. Execute os testes fornecidos e verifique o contrato de comportamento: categoria mais longa totalmente acessível, consulta com espaço à direita, consulta acentuada, canonical de página não traduzida.

Diretório de referência

CenárioPalavras-chave de gatilhoReferência
Encaixar isso em um aplicativo existenteadaptar, interface, renomear categorias, sonda do host, integrar, dependênciasadaptation.md
Frontmatter, pastas, slugs, validaçãofrontmatter, slug, categoria, ordem, relacionado, updatedAt, destaque, validar, CIcontent-model.md
Ler arquivos no índicecarregador, gray-matter, cache, fallback, cabeçalhos, ordenação, índice, fscontent-loader.md
Caixa de pesquisa e classificaçãopesquisa, combobox, classificação, tokenizar, diacríticos, prefixo, teclado, sem resultadossearch.md
Tags, páginas de tag, chips, nuvem de tagstag, tags, página de tag, chip, slug de tag, grafia, plural, navegar por tagtags.md
Localidades, strings, datas, canônicosi18n, localidade, tradução, fallback, hreflang, strings, plural, Intli18n.md
Páginas, metadados, JSON-LD, sitemaprota, page.tsx, generateStaticParams, dynamicParams, notFound, canonical, TechArticle, sitemaproutes.md
Casca, cabeçalho, barra lateral, gavetalayout, barra lateral, menu móvel, gaveta, colapsável, sticky, HelpShellui.md
Breadcrumb, cartões, listas, renderizador, hooks de estilobreadcrumb, cartão de categoria, lista de artigos, react-markdown, data-help, estilizaçãoui-content.md
Além do módulo fornecidotexto completo, Pagefind, TOC, feedback, datas git, MDX, CMS, redirecionamentosextensions.md
Por que os templates diferem da implementação anteriorproveniência, auditoria, ledger, mantido deliberadamente, corrigindo a implementação anteriorprovenance.md

Habilidades Relacionadas