Pular para o conteúdo

/dr:git:ship

Use o /dr:git:ship quando o trabalho na branch está pronto e você quer vê-lo publicado sem passar por três comandos. Ele faz o commit, o push e abre o pull request de uma vez, escrevendo a mensagem e a descrição a partir das suas mudanças. Você acompanha cada etapa e, no final, recebe o link do PR.

Nada é obrigatório: rodar o comando sem argumentos já fecha o ciclo inteiro. Se quiser, passe a mensagem do commit com suas palavras, peça um PR em rascunho, aponte a branch de destino ou informe a referência da task para ela aparecer na descrição.

Também dá para recortar o ciclo. Se quiser parar no push, sem abrir PR, ou só commitar, há uma flag para cada caso. Para controle fino de cada etapa, existem os comandos individuais /dr:git:commit, /dr:git:push e /dr:git:pr.

O comando começa pelo commit. Ele coloca todas as mudanças no stage (ou só o que você já tinha selecionado, se pedir), lê o diff e escreve a mensagem no formato convencional, com tipo e escopo detectados a partir do que mudou. Se você passou uma mensagem, ela é usada no lugar.

Depois vem o push. Se a branch ainda não tem rastreamento no remoto, ele configura o upstream na primeira vez. Se você estiver em main ou master, ele avisa, mas segue.

Por fim, o pull request. O comando lê o histórico de commits desde que a branch se separou da base, identifica a task pelo nome da branch ou pela referência que você passou, monta a descrição estruturada e abre o PR no provedor do projeto, GitHub ou Bitbucket, descoberto sozinho. Em main ou master, esta etapa é abortada: crie uma branch antes.

Cada etapa reporta o resultado antes da próxima começar: o hash do commit, o status do push, a URL do PR. Se não houver nada para commitar, ou se commit, push ou PR falharem, o comando para e diz o motivo.

A branch publicada e um pull request aberto, com título e descrição que contam o que mudou e por quê, no idioma e na verbosidade que você configurou. O tamanho da mensagem de commit e da descrição do PR seguem a sua preferência: do assunto em uma linha ao texto completo com contexto, impacto e checklist.

Na prática, o “deixa eu escrever o commit, subir e abrir o PR” vira um comando e um link, com a descrição que você raramente teria paciência de escrever.

/dr:git:ship

GitCompatível com dr 3.4.25

Exemplos

/dr:git:ship
/dr:git:ship "corrigir cálculo de frete" --draft
/dr:git:ship --base develop --no-auto
/dr:git:ship --type fix --scope auth --task-id PROJ-123
/dr:git:ship --no-pr

Argumentos

ArgumentoObrigatório?Descrição
messageNãoOptional commit message (auto-generated from diff if not provided)
--no-autoNãoDisable automatic staging (commit only already-staged files)
--scope <name>NãoOverride automatic scope detection
--type <type>NãoOverride commit type (feat, fix, docs, style, refactor, test, chore)
--force-with-leaseNãoSafe force push that checks remote state first
--draftNãoCreate draft pull request
--base <branch>NãoTarget branch for PR (default: main/master)
--task-id <id>NãoTask ID to include in PR description
--task-name <name>NãoTask name to include in PR description
--auto-mergeNãoEnable auto-merge when checks pass (GitHub only)
--provider <github|bitbucket>NãoOverride automatic provider detection
--no-prNãoSkip PR creation (commit and push only)
--no-pushNãoSkip push and PR (commit only)

Notas

Sem mensagem, o commit é gerado do diff no formato convencional; --type e --scope sobrescrevem o tipo e o escopo detectados. --no-auto commita só o que já está em stage. --task-id e --task-name entram na descrição do PR, --force-with-lease faz push forçado seguro e --auto-merge (só GitHub) ativa o merge automático quando os checks passam. --no-pr para em commit + push; --no-push só commita.

Para quem quer saber o que acontece nos bastidores:

  • Execução: as três etapas são delegadas ao agente git-specialist, que escreve a mensagem e a descrição ele mesmo e abre o PR com gh pr create (GitHub) ou bkt pr create (Bitbucket), usando as skills de commit e de PR do provedor.
  • Provedor: vem de --provider, do contexto da sessão ou de .dr_ai/settings.json; na falta deles, é inferido pela URL do remote.
  • Verbosidade e idioma: a verbosidade do commit e do PR vem do contexto da sessão, com fallback em git.commit.verbosity e git.pr.verbosity de .dr_ai/settings.json (padrão normal, níveis minimal, normal e verbose). Do mesmo arquivo saem o idioma da mensagem (git.language) e os templates de commit e de PR (git.commit.template e git.pr.template).
  • Guardas: a validação da mensagem e do conteúdo do PR é automática, por hook; nunca há co-autoria, atribuição de IA ou emojis, e push forçado em main/master só com confirmação explícita.