Como funciona & uso em CI¶
Pipeline¶
- Recolher —
git logcom um formato delimitado, convertido em objetos de commit (collectCommits/parseGitLog). - Classificar — cada subject é lido como Conventional Commit (
type,scope,!/BREAKING CHANGE), com fallback paraother. - Agrupar — os commits são organizados por tipo numa ordem fixa, com as breaking changes recolhidas à parte.
- Renderizar — ou um template markdown determinístico, ou um prompt de LLM construído a partir dos commits agrupados e enviado ao Ollama.
O agrupamento acontece antes do LLM, por isso o modelo reescreve uma lista limpa e categorizada em vez de commits em bruto — mais barato, mais fiável, e não inventa features.
Uso em CI (modo template, sem LLM)¶
# .github/workflows/release.yml (excerto)
- run: npx gitscribe "${{ github.event.release.tag_name }}"~1.."${{ github.event.release.tag_name }}" \
--version "${{ github.event.release.tag_name }}" > NOTES.md
- run: gh release edit "${{ github.event.release.tag_name }}" --notes-file NOTES.md
O modo template é determinístico e sem dependências, ideal para CI. Reserva o --model
para execuções locais onde o Ollama está disponível.
API de biblioteca¶
collectCommits(range?)/parseGitLog(raw)— ler/parsear commits.groupCommits(commits)—{ breaking, sections }.renderMarkdown(commits, { version, date })— markdown offline.generateReleaseNotes(commits, { version, llm })— template ou LLM.