Skip to content

Como funciona & uso em CI

Pipeline

  1. Recolhergit log com um formato delimitado, convertido em objetos de commit (collectCommits / parseGitLog).
  2. Classificar — cada subject é lido como Conventional Commit (type, scope, !/BREAKING CHANGE), com fallback para other.
  3. Agrupar — os commits são organizados por tipo numa ordem fixa, com as breaking changes recolhidas à parte.
  4. 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

import { collectCommits, groupCommits, renderMarkdown, generateReleaseNotes } from 'gitscribe';
  • collectCommits(range?) / parseGitLog(raw) — ler/parsear commits.
  • groupCommits(commits){ breaking, sections }.
  • renderMarkdown(commits, { version, date }) — markdown offline.
  • generateReleaseNotes(commits, { version, llm }) — template ou LLM.