Navigation

/commit: Conventional Commits, changesets e changelogs para o seu agente

Uma skill de agente que escreve Conventional Commits no dialeto do seu repositório, cria changesets automaticamente e transforma changelogs em notas de versão que qualquer pessoa entende.

11 min de leitura
Rascunho

Commits que se encaixam

Todo repositório tem o seu próprio dialeto. A skill lê os tipos, escopos e o idioma que o seu já usa — a partir da configuração do commitlint, do histórico do git e do layout do workspace — e guarda o resultado em cache para nunca precisar deduzir tudo de novo.

fix(ui-button): default missing label and expose aria-disabled

Changesets automáticos

Se o repositório versiona com changesets, toda mudança publicável ganha o seu no mesmo commit: nomes de pacote certos vindos do mapa do workspace, nível de versão vindo do tipo do commit, texto voltado a quem consome. Pacotes ignorados e privados ficam de fora.

Changelogs para pessoas

Transforme qualquer versão em notas em linguagem simples, agrupadas por impacto e em qualquer idioma, sob uma regra rígida: toda linha vem de uma entrada real. Nada é inventado para soar simpático.

Instalação

Dois caminhos: a CLI de skills, para qualquer agente, ou o plugin do Claude Code. Escolha um — os dois instalam a mesma skill.

Qualquer agente: a CLI de skills

Um comando pelo ecossistema aberto de agent skills. Ele detecta os agentes que você tem e conecta a skill em cada um deles.

# Instalar neste projeto (Claude Code, Cursor, Codex, +70 agentes)
npx skills add EduardoLopes/commit-skill

# Ou globalmente — disponível em todos os projetos
npx skills add EduardoLopes/commit-skill --global

# Ver o que tem dentro antes de instalar
npx skills add EduardoLopes/commit-skill --list

Claude Code: o plugin

Só funciona no Claude Code, mas se atualiza sozinho a partir do git e tem comandos com namespace — então /commit continua funcionando mesmo quando outra skill na máquina reivindica o mesmo nome.

# Registre o marketplace e instale
/plugin marketplace add EduardoLopes/commit-skill
/plugin install commit@commit-skill

# Buscar o catálogo mais recente do git — sem reinstalar
/plugin marketplace update commit-skill

Para dar a skill a um time inteiro sem nenhuma configuração, comite isto no .claude/settings.json do repositório. Cada pessoa ganha o /commit na próxima vez que abrir o agente, já apontado para as suas convenções.

{
  "extraKnownMarketplaces": {
    "commit-skill": {
      "source": { "source": "github", "repo": "EduardoLopes/commit-skill" }
    }
  },
  "enabledPlugins": { "commit@commit-skill": true }
}

Requisitos

Node 18+ para o instalador, git e qualquer agente de código suportado (Claude Code, Cursor, Codex, …). Para os recursos de changeset, o repositório precisa de um gerenciador de pacotes — o /commit init cuida do resto, instalando o changesets v3 quando o runtime permite (Node 22.11+, pnpm 10+, npm 10.9+ ou yarn 4.5+) e caindo para o v2 caso contrário.

Primeiros passos

Prepare no stage o que você quer entregar e deixe a skill fazer a leitura:

# Analisar o que está no stage e comitar
/commit

# Validar uma mensagem que você já escreveu (caminho rápido)
/commit -m "feat(auth): add passwordless login"

# Várias mudanças sem relação? Divida em commits atômicos
/commit --split

# Subir tudo e comitar, pulando o changeset desta vez
/commit --all --no-changeset

# Só me mostre a mensagem, não comite
/commit --dry-run

Na primeira execução em um repositório, a skill detecta as suas convenções, mostra o que encontrou e oferece guardar tudo em cache. Aperte Enter para aceitar — todas as execuções seguintes pulam a detecção.

Comandos

ComandoO que faz
/commitAnalisa o que está no stage, escreve um Conventional Commit, cria o changeset se o repositório precisar e comita.
/commit initPrepara o repositório para changesets e conventional commits: instala o @changesets/cli, ajusta a config, adiciona scripts e guarda as convenções. Migra uma configuração v2 existente para v3.
/commit changesetCria ou verifica arquivos de changeset para mudanças pendentes, sem comitar nada. A verificação roda changeset status --since <base>.
/commit changelog [versão]Gera, reescreve ou traduz um changelog ou notas de versão independentes, para uma versão ou intervalo.

Flags do commit

FlagO que faz
-m "mensagem"Valida e formata uma mensagem que você fornece — pula a análise de arquivos.
--splitDivide assuntos sem relação em vários commits atômicos, em ordem de dependência.
--allSobe tudo para o stage antes de analisar (o padrão é só o que já está no stage).
--no-changesetPula o tratamento de changeset neste commit.
--dry-runMostra a mensagem e a prévia do changeset sem comitar.

Flags do changelog

FlagO que faz
--plainReescreve as entradas para quem não é técnico, agrupadas por impacto: Novidades / Melhorias / Correções.
--lang <código>Escreve a saída em outro idioma (pt-BR, es, …). Combina com --plain.
--notes [arquivo]Gera um documento de notas de versão independente, sem editar nenhum CHANGELOG.

Como funciona

Todo repositório tem o seu próprio dialeto de Conventional Commits. A skill deduz esse dialeto uma vez e guarda onde toda sessão futura consegue enxergar.

A detecção segue esta ordem de prioridade:

  1. Configuração de ferramentas. type-enum e scope-enum do commitlint, commitizen, CONTRIBUTING.md. Isso é lei — se existir, vence.
  2. Histórico do git. Os últimos 200 assuntos revelam os tipos realmente em uso, a regra que gera os escopos e o idioma em que o time escreve.
  3. Layout do workspace. Workspaces do pnpm e do npm, configuração do turbo e do nx, para mapear caminhos em nomes de pacote.
<!-- commit-conventions:start -->

## Commit conventions (cached by /commit)

- **Format**: Conventional Commits 1.0.0,
  descriptions in English, lowercase
  imperative, subject ≤ 72 chars
- **Types**: feat, fix, docs, refactor,
  perf, test, build, ci, chore
- **Scope rule**: path under packages/
  minus the ui/ segment
- **Versioning**: changesets; patch =
  fix, minor = feat, major = breaking

<!-- commit-conventions:end -->

O cache fica no CLAUDE.md, então ele é comitado, revisável e compartilhado. Edite à vontade — a skill lê o que você escreveu. Apague o bloco e ela detecta tudo de novo.

Exemplos

Saídas reais da suíte de testes da skill: uma correção em monorepo, a preparação de um repositório e notas de versão voltadas ao cliente.

Uma correção, seu commit e seu changeset

$ /commit

  Analyzing staged changes… 1 file in packages/ui-button

  fix(ui-button): default missing label and expose aria-disabled

  Created .changeset/ui-button-aria-disabled.md (@acme/ui-button: patch)
  and staged it with the commit.
---
"@acme/ui-button": patch
---

Buttons no longer render the text "undefined" when created without a
label, and now expose `aria-disabled` so assistive technology announces
the disabled state correctly.

O changeset nomeia o pacote real, tira o patch do tipo do commit e é escrito para quem consome o pacote — não para quem revisa o diff.

Preparando um repositório

$ /commit init

  ✓ Installed @changesets/cli
  ✓ Scaffolded .changeset/config.json (baseBranch: main)
  ✓ Added scripts: changeset, version-packages, release
  ✓ Detected conventions from 200 commits — free-form history found,
    adopting Conventional Commits 1.0.0 going forward
  ✓ Cached conventions in CLAUDE.md
  ✓ Committed: build: set up changesets and conventional commits

Notas de versão que qualquer pessoa entende

Antes — CHANGELOG.md
## 3.2.0

### Minor Changes

- a41f2c9: feat(uploader): add chunked multipart upload with resumable
  state persisted to IndexedDB
- 77c01ab: feat(gallery): virtualize grid rendering via IntersectionObserver

### Patch Changes

- 09d11fe: fix(exif): guard against null GPSInfo IFD when parsing orientation
- bb3e802: refactor(store): migrate selectors to memoized createSelector
Depois — RELEASE_NOTES-3.2.0.md
# Photo App — Novidades da versão 3.2.0

## Novidades

- **Envios que continuam de onde pararam.** Se a internet cair ou você
  fechar a página no meio de um envio, ele retoma de onde parou.
- **Galeria mais rápida com muitas fotos.** A galeria carrega apenas as
  fotos visíveis na tela, conforme você rola a página.

## Correções

- **Fotos sem dados de localização não causam mais erro.**

Repare no que sumiu: a entrada interna refactor(store). Mudanças sem efeito visível para quem usa são descartadas, nunca maquiadas como melhorias.

Casos de uso

Todo /commit verifica se os arquivos no stage tocam um pacote publicado. Se tocarem, o changeset é criado e adicionado no mesmo commit — nomes de pacote certos vindos do mapa do workspace, nível de versão vindo do tipo do commit, ignore, linked e fixed respeitados. PRs de release deixam de ser arqueologia.

Perguntas frequentes


Instalável via skills.sh — o código está no GitHub.