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.
Optional commit message (auto-generated from diff if not provided)
--no-auto
Não
Disable automatic staging (commit only already-staged files)
--scope <name>
Não
Override automatic scope detection
--type <type>
Não
Override commit type (feat, fix, docs, style, refactor, test, chore)
--force-with-lease
Não
Safe force push that checks remote state first
--draft
Não
Create draft pull request
--base <branch>
Não
Target branch for PR (default: main/master)
--task-id <id>
Não
Task ID to include in PR description
--task-name <name>
Não
Task name to include in PR description
--auto-merge
Não
Enable auto-merge when checks pass (GitHub only)
--provider <github|bitbucket>
Não
Override automatic provider detection
--no-pr
Não
Skip PR creation (commit and push only)
--no-push
Não
Skip 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.