Awesome-omni-skill Documentação tecnica para Software

Este agente auxilia na criação de documentação técnica detalhada para software, incluindo APIs, diagramas e especificações de requisitos.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/documentation/documenta-o-tecnica-para-software" ~/.claude/skills/diegosouzapw-awesome-omni-skill-documentacao-tecnica-para-software && rm -rf "$T"
manifest: skills/documentation/documenta-o-tecnica-para-software/SKILL.md
source content

Documentação Técnica para Software

Para escrever uma documentação técnica é uma mistura de engenharia, ensino e design. Não se trata apenas de "explicar o código", mas de reduzir a fricção para que o usuário alcance seu objetivo o mais rápido possível.

Aqui estão as habilidades essenciais divididas em três pilares fundamentais:


Habilidades Essenciais

1. Habilidades de Escrita e Comunicação

A clareza é a regra de ouro. Se o leitor precisar ler a mesma frase duas vezes para entender, a documentação falhou.

  • Capacidade de Síntese: Transformar conceitos complexos em explicações diretas, sem "encher linguiça".
  • Voz e Tom Consistentes: Manter um tom profissional, porém acessível. É importante saber quando ser instrutivo (tutoriais) e quando ser puramente informativo (referência de API).
  • Gramática e Estruturação: Domínio do idioma e, crucialmente, o uso de Markdown para estruturar textos com hierarquia visual clara (títulos, listas e blocos de código).

2. Competência Técnica (Hard Skills)

Você não precisa ser o desenvolvedor que escreveu o código, mas precisa entender como ele funciona "sob o capô".

  • Leitura de Código: Capacidade de ler linguagens como Python, JavaScript ou Java para extrair a lógica que precisa ser documentada.
  • Domínio de Ferramentas "Docs as Code": Familiaridade com ferramentas como Git/GitHub, geradores de sites estáticos (Docusaurus, Hugo) e ferramentas de documentação de API (Swagger/OpenAPI).
  • Entendimento de Arquitetura: Saber como o software se conecta a bancos de dados, APIs de terceiros e infraestrutura de nuvem.

3. Empatia e Experiência do Usuário (UX)

O documentador atua como um advogado do usuário final.

  • Públicos Distintos: Saber adaptar a linguagem para diferentes perfis (um tom para o CTO que decide a compra e outro para o desenvolvedor que vai implementar o SDK).
  • Curadoria de Conteúdo: Saber o que não escrever. Documentação em excesso pode ser tão prejudicial quanto a falta dela.
  • Design de Informação: Organizar a navegação de forma lógica. O usuário deve encontrar o que precisa em poucos cliques.

Tabela: Tipos de Documentação vs. Foco Principal

TipoObjetivoPúblico-alvo
TutorialAprender fazendo (passo a passo)Iniciantes no produto
Guia de ConceitoEntender o "porquê" e a teoriaArquitetos e Gestores
Referência de APIConsulta técnica rápida e precisaDesenvolvedores
TroubleshootingResolver problemas e erros comunsSuporte e Ops

Roteiro de ferramentas e prática

Para avançarmos, preparei um roteiro de ferramentas e práticas que são o padrão de mercado atual (o modelo "Docs as Code"). Esse fluxo permite que você trate a documentação com o mesmo rigor que trata o código.

Aqui está um caminho prático para você começar:


1. O Stack Tecnológico (Ferramentas)

Se você quer profissionalizar sua escrita técnica, esqueça editores de texto comuns (como Word). O foco deve ser em ferramentas que se integram ao fluxo do desenvolvedor:

  • Linguagem de Marcação: Aprenda Markdown a fundo. É o padrão universal para GitHub, GitLab e a maioria dos geradores de sites.
  • Geradores de Sites Estáticos (SSG): Use o Docusaurus (baseado em React, muito usado pela Meta) ou o MkDocs (baseado em Python, extremamente simples e eficiente). Eles transformam seus arquivos Markdown em um site de documentação profissional.
  • Versionamento: Utilize Git. Salve sua documentação no mesmo repositório do código para que as atualizações de funcionalidades e manuais aconteçam simultaneamente.
  • Diagramação: Domine o Mermaid.js. Ele permite que você crie fluxogramas e diagramas de sequência usando apenas texto dentro do Markdown.

2. Estrutura de um Documento de "Classe Mundial"

Toda excelente documentação de funcionalidade deve seguir esta anatomia:

  1. Título e Sumário: O que é e o que o usuário vai aprender.
  2. Pré-requisitos: O que ele precisa ter instalado ou configurado antes.
  3. Quick Start (Início Rápido): O menor caminho possível para ver algo funcionando.
  4. Exemplos de Código: Blocos de código comentados e testáveis.
  5. Tabela de Parâmetros: Descrição clara de entradas, saídas e tipos de dados.
  6. Erros Comuns: Uma seção de "o que pode dar errado" economiza horas de suporte.

3. Incorporar a Técnica de Gherkin na Documentação

A técnica de Gherkin é um dos pilares da documentação moderna (especialmente no BDD - Behavior-Driven Development). Ela funciona como uma "ponte" entre o requisito de negócio e a implementação técnica, transformando conceitos abstratos em cenários concretos e testáveis.

Para incorporá-la à sua documentação de software, siga este guia estruturado:


1. A Sintaxe Fundamental

O Gherkin baseia-se em uma estrutura de 3 palavras-chave principais que contam uma história:

  • Dado (Given): Define o estado inicial ou as pré-condições (ex: o usuário está logado).
  • Quando (When): Descreve a ação ou o evento gatilho (ex: o usuário clica no botão "Excluir").
  • Então (Then): Define o resultado esperado ou a reação do sistema (ex: o registro desaparece da lista).

Dica: Use E (And) ou Mas (But) para adicionar mais condições sem repetir as palavras-chave principais.


2. Estrutura de um Arquivo de Funcionalidade (
.feature
)

Ao documentar, organize seus cenários dentro de uma "Funcionalidade" (Feature). No seu fluxo de trabalho com C# ou Angular, você pode salvar esses arquivos no repositório de documentação ou junto aos testes de aceitação (como o SpecFlow ou Cucumber).

Funcionalidade: Busca de CEP
  Como um usuário do sistema de logística
  Quero consultar um endereço a partir de um CEP
  Para agilizar o preenchimento de cadastros

  Cenário: Consulta de CEP válido
    Dado que eu estou na tela de cadastro de cliente
    Quando eu insiro o CEP "80010-000"
    Então o sistema deve autopreencher o logradouro com "Rua XV de Novembro"
    E a cidade deve ser definida como "Curitiba"

  Cenário: Consulta de CEP inexistente
    Dado que eu estou na tela de cadastro
    Quando eu digito o CEP "00000-000"
    Então o sistema deve exibir a mensagem "CEP não encontrado"


3. Melhores Práticas para Documentação Técnica

Para que o Gherkin não seja apenas "mais um texto", ele precisa ser útil para o desenvolvedor e para o QA:

  • Abordagem Declarativa vs. Imperativa: Evite descrever cliques específicos de interface (ex: "Clica no input, digita, aperta Enter"). Foque no comportamento (ex: "Quando o usuário pesquisa por..."). Isso evita que sua documentação "quebre" se você mudar um botão de lugar.
  • Use Esquema do Cenário (Scenario Outline): Se você tem muitos dados para testar a mesma lógica (como diferentes tipos de CEP), use tabelas de exemplos:
Esquema do Cenário: Validar formatos de CEP
  Quando eu envio o CEP <codigo>
  Então o resultado deve ser <status>

  Exemplos:
    | codigo      | status      |
    | "80010000"  | "Sucesso"   |
    | "80010-000" | "Sucesso"   |
    | "123"       | "Inválido"  |

  • Vincule aos Requisitos: Se estiver escrevendo uma Especificação de Requisitos, use o Gherkin para definir os Critérios de Aceite. Cada cenário Gherkin é, na prática, um critério que o software deve atender para ser considerado "pronto".

4. Onde inserir na Documentação?

Se você usa ferramentas como Docusaurus ou MkDocs, você pode criar uma seção chamada "Cenários de Comportamento" ou "Critérios de Aceite" dentro da página da funcionalidade.

  1. Requisito: Descrição em texto livre.
  2. User Case: Fluxo principal.
  3. Cenários Gherkin: Detalhamento dos casos de sucesso e erro.

5. Exemplo prático

Para que o exemplo seja o mais útil possível para o seu dia a dia, transformei o temas integração com APIs de consulta de CEP — em uma documentação estruturada utilizando Gherkin.

Aqui está como uma Especificação de Requisitos moderna deve parecer:


Funcionalidade: Integração com API de Consulta de CEP

Objetivo: Automatizar o preenchimento de endereços no sistema para reduzir erros de digitação e aumentar a velocidade do cadastro.

1. Contexto Técnico

  • Serviço: Integração com API gratuita (ex: ViaCEP).
  • Entrada: String de 8 dígitos.
  • Saída: Objeto JSON com logradouro, bairro, localidade e UF.

2. Cenários de Comportamento (Gherkin)

# language: pt
Funcionalidade: Busca Automática de Endereço via CEP

  Contexto:
    Dado que o serviço de integração de CEP está ativo e disponível

  Cenário: Consulta de CEP válido com sucesso
    Dado que o usuário está na tela de "Cadastro de Endereço"
    Quando o usuário insere o CEP "80010010" no campo correspondente
    Então o sistema deve realizar uma chamada para a API de busca
    E os campos "Logradouro", "Bairro" e "Cidade" devem ser preenchidos automaticamente
    E o foco do cursor deve ser movido para o campo "Número"

  Esquema do Cenário: Validação de formatos de entrada
    Dado que o usuário insere um CEP no formato <entrada>
    Quando o campo perde o foco (onBlur)
    Então o sistema deve formatar o valor para <saida_esperada>

    Exemplos:
      | entrada      | saida_esperada |
      | "80010010"   | "80010-010"    |
      | "80.010-010" | "80010-010"    |

  Cenário: Tratamento de CEP inexistente
    Dado que o usuário insere um CEP que não consta na base nacional ("00000000")
    Quando a consulta é processada
    Então o sistema deve exibir a mensagem de alerta "CEP não encontrado"
    E permitir que o usuário preencha o endereço manualmente

  Cenário: Falha de conexão com a API
    Dado que o serviço de consulta de CEP está fora do ar
    Quando o usuário tenta realizar uma busca
    Então o sistema deve registrar o erro nos logs internos
    E habilitar a edição manual de todos os campos de endereço sem exibir erro técnico ao usuário


Por que esta documentação é "excelente"?

  1. Elimina Ambiguidade: O desenvolvedor sabe exatamente o que acontece se a API cair ou se o CEP não existir.
  2. Facilita o Teste: O QA (ou você, ao escrever testes unitários em C# ou Angular) já tem os dados de entrada e os resultados esperados prontos.
  3. Documentação Viva: Se você usar ferramentas como o SpecFlow (para .NET), esses mesmos textos em Gherkin podem se tornar os seus testes automatizados.