Git Flow Delivery — do card ao deploy
Fluxo baseado no Git Flow, padrão de mercado, para levar um card do quadro até produção com
rastreabilidade total: todo commit, branch e PR carrega o número do card, e o
histórico do repositório conta a mesma história que o quadro de tarefas.
Ferramenta-agnóstico: funciona com Jira, Linear, GitHub Issues, Azure Boards etc.
Onde aparecer ABC-123, leia "o identificador do card no seu tracker".
Se existir .claude/board-workflow.md (criado pela skill board-workflow), ele é a
fonte da verdade para nomes de status, ids de campo e o momento de preencher cada um:
leia esse arquivo e use o que está lá em vez de perguntar de novo ou supor nomes. As duas
skills se dividem assim — board-workflow cuida do board e dos campos; esta cuida de
branch, commit, PR, release e hotfix; e o card acompanha o trabalho nos dois pontos de
contato abaixo.
Mapa de ambientes
| Branch |
Ambiente |
Quem mergeia |
develop |
Desenvolvimento / homologação (HML) |
O time, após code review |
main |
Produção |
O time, via PR de release ou hotfix |
Toda branch de trabalho nasce de develop. Só hotfix nasce de main.
1. Branch
tipo/ABC-123-short-description-in-english
tipo ∈ feat · fix · chore · refactor · docs · test
- Criada a partir de
develop atualizada: git checkout develop && git pull && git checkout -b feat/ABC-123-...
- Nome em inglês, kebab-case, curto. O card já tem o título completo em português.
Ao criar a branch, mova o card para o status de desenvolvimento — o status do card sempre
reflete a etapa real do trabalho. Preencha antes os campos daquele momento (ex.: assignee,
estimativa, data de entrega) e só então transicione; ver a seção de integração com Jira.
Card parado atrás da realidade é erro, não detalhe.
2. Commit
tipo(ABC-123) - Description in English
Exemplo: fix(ABC-123) - Browser tab title shows wrong page name
Regras que não se negociam:
Inglês. Português fica no card; a mensagem de commit é para o histórico do repositório.
Número do card entre parênteses, sem : depois. Nunca tipo(escopo):.
1 branch = 1 commit — sempre. Qualquer ajuste depois do primeiro commit (correção
de review, typo, lint) entra via amend, nunca como commit novo:
git add -A
git commit --amend --no-edit
git push --force-with-lease
Antes de qualquer push, confira que há exatamente 1 commit:
git log --oneline develop..HEAD
3. Definição de pronto → abrir o PR
⚠️ O PR só é aberto DEPOIS de um humano validar. Não abra PR nem mova o card
para "Revisão de Código" antes do OK explícito.
Terminar o trabalho do card com testes verdes; commit no padrão; git push -u origin <branch>.
Sinalizar que está pronto para validação e esperar o OK. Se vierem ajustes, iterar
(via amend) — sem abrir PR nesse vai-e-volta.
Com o OK, abrir o PR para develop:
gh pr create --base develop \
--title "tipo(ABC-123) - Description in English" \
--body "$(cat <<'EOF'
Card: <link do card>
- O que foi feito, em bullets técnicos
- Decisões relevantes e por quê
- Como testar
EOF
)"
- Título do PR = mensagem do commit.
- Body em português, com o link do card e bullets técnicos.
- Labels quando existirem no repo:
Bug fixes · Improvements · Breaking Changes.
4. Pós-PR — nesta ordem
Registrar o link do PR no card (campo/comentário de "PRs" do seu tracker), no formato:
tipo(ABC-123) - Título
PR #N → https://github.com/<org>/<repo>/pull/N
Mover o card para "Revisão de Código" (ou o status equivalente do seu quadro).
Acompanhar o code review (bot e/ou humanos) — o que olhar está na seção
Code review: o que olhar, adiante. Se o repo tem review automático,
aguardar no máximo 1 minuto — nunca em loop além disso. Para cada thread aberto:
| Comentário |
Ação |
| Procedente |
Corrigir → incorporar ao commit único (amend + --force-with-lease) → responder no thread dizendo o que foi feito → Resolve conversation |
| Não procedente |
Responder no thread com a justificativa técnica → Resolve conversation |
- Sempre responder antes de resolver. Nunca feche um thread mudo.
- Com revisor humano, o reply é diálogo: pode-se discordar com respeito e alinhar antes
de mexer no código. Em dúvida se o ajuste estoura o escopo do card, pergunte.
- Se corrigiu e o bot re-revisou, repetir no máximo mais 1 vez. Persistindo, parar e
reportar — não entrar em ciclo infinito de correção.
# threads abertos
gh api graphql -f owner=<org> -f repo=<repo> -F pr=<N> -f query='
query($owner:String!,$repo:String!,$pr:Int!){ repository(owner:$owner,name:$repo){
pullRequest(number:$pr){ reviewThreads(first:50){ nodes{
id isResolved comments(first:10){ nodes{ databaseId path body } } } } } } }'
# responder num comentário
gh api repos/<org>/<repo>/pulls/<N>/comments -f body='...' -F in_reply_to=<databaseId>
# resolver o thread (id do THREAD, não do comentário)
gh api graphql -f id=<threadId> -f query='
mutation($id:ID!){ resolveReviewThread(input:{threadId:$id}){ thread{ isResolved } } }'
Notificar o time no canal (Slack, Discord, Teams…) — sempre com confirmação
explícita, pedida depois das etapas 1–3. Autorização antecipada ("já pode avisar")
dada antes do PR existir não vale: complete as etapas, pergunte, e só envie com o
"sim" na resposta seguinte. Formato:
@<papel-do-time>
PR: <url do PR>
Card: <url do card>
Code review: o que olhar
Vale para revisar o PR de outra pessoa e para conferir o seu antes de pedir revisão.
1. Formato do título e dos commits
- Padrão
tipo(ABC-123) - Description in English, igual no commit e no título do PR.
- Identificador do card presente. O formato é o do tracker do time:
ABC-123 (Jira,
Linear), #1234 (GitHub Issues) ou o que estiver no mapa do board. Sem id, o histórico
perde a rastreabilidade — é apontamento bloqueante.
- Tipo válido:
feat · fix · chore · refactor · docs · test.
- Um commit por branch (
git log --oneline develop..HEAD).
2. Estrutura do PR
- A descrição explica o que foi feito e por quê, com link do card.
- Labels aplicadas, quando o repo usa (ex.:
Bug fixes, Improvements, Breaking Changes).
- É hotfix? Então existem dois PRs: um para
main e um para develop.
- É release? Então sem squash/rebase no merge — o histórico da
develop se preserva.
- O card está na coluna que corresponde à etapa real (code review).
3. Qualidade do código
| Frente |
O que perguntar ao diff |
| Corretude |
A lógica faz o que o card pede? Há edge case não tratado (lista vazia, nulo, limite, concorrência)? |
| Idempotência |
Operações críticas (cobrança, envio, escrita externa) podem rodar duas vezes sem duplicar efeito? Retry é seguro? |
| Segurança |
SQL/command injection; segredo ou token no código; dado pessoal em log ou resposta sem mascaramento; permissão verificada onde importa. |
| Tratamento de erros |
Falha é capturada, logada e propagada com um id de correlação que permita rastrear a operação ponta a ponta? Nada de catch silencioso. |
| Clareza |
Nomes de variáveis, funções e classes dizem o que são? Precisa de comentário para entender o óbvio? |
| Duplicação |
Código repetido que já existe no projeto e poderia ser reaproveitado? |
| Testes |
Existe teste para o que mudou, cobrindo o caso crítico e o de erro — não só o caminho feliz? |
| Escopo |
O diff faz só o que o card pede? Mudança carona atrapalha a revisão e o rollback. |
4. Severidade — sempre classifique o comentário
| Nível |
Quando |
Efeito |
| 🔴 Bloqueante |
Erro que compromete a entrega, dados ou segurança |
pedir alteração; não aprovar |
| 🟡 Sugestão |
Melhoria relevante, não impeditiva |
quem escreveu decide |
| 🔵 Nitpick |
Estilo, nomenclatura, preferência |
não bloqueia; agrupe num comentário só |
Sem severidade, todo comentário parece bloqueante e a revisão trava. Ao aprovar com apenas
sugestões e nitpicks, deixe explícito que estão liberados para seguir.
5. Release — develop → main
A branch release é descartável: existe só para levar o estado da develop até um
PR contra main.
git checkout develop && git pull
git checkout -B release # -B recria se já existir
git push -u origin release
gh pr create --base main --head release --title "Release" --body "Release"
git checkout develop && git branch -D release # a remota o GitHub apaga no merge
Regras:
Título e body: Release, sem número de versão. A versão vive na tag/release do
GitHub (vX.Y.Z), não no título do PR.
NUNCA squash/rebase no merge — release preserva o histórico da develop (merge commit).
PR de release não tem card: as etapas de tracker da seção 4 não se aplicam. Só a
notificação, com o mesmo pedido de confirmação:
@<papel-do-time>
Release 📢
<url do PR>
Após o merge, publicar a release final vX.Y.Z (sem -rc, apontando para main).
Se o deploy de produção dispara pelo evento de release, conferir que todos os
workflows rodaram (gh run list --workflow <arquivo>). Se um não disparou, deletar e
recriar a release na mesma tag re-dispara o evento.
Versionamento (semver + release candidates)
| Situação |
Ação |
Exemplo |
Nova feature em develop |
Incrementa minor, abre rc.1 |
1.1.0 → 1.2.0-rc.1 |
Nova RC em develop |
Incrementa o número da RC |
1.2.0-rc.1 → 1.2.0-rc.2 |
Release para main |
Remove o sufixo -rc da última RC |
1.2.0-rc.3 → 1.2.0 |
Hotfix em main |
Incrementa patch |
1.2.0 → 1.2.1-rc.1 |
| Feature após RC parcial lançada |
Nova minor com rc.1 |
1.2.0-rc.5 → 1.3.0-rc.1 |
Durante um hotfix podem coexistir main: 1.2.1-rc.1 e develop: 1.3.0-rc.1.
Conferir a última tag: git tag --sort=-creatordate | head -5.
6. Hotfix — direto em produção
Hotfix é a única branch que nasce de main.
git checkout main && git pull
git checkout -b fix/ABC-123-short-description
# ... corrigir, commit no padrão (1 commit), push ...
gh pr create --base main --title "fix(ABC-123) - Description" --body "..."
gh pr create --base develop --title "fix(ABC-123) - Description" --body "..."
- Duas PRs, sempre: uma para
main (vai para produção) e outra para develop
(para a correção não se perder na próxima release). Registrar os dois links no card.
- Versão: patch com
rc (1.2.0 → 1.2.1-rc.1), release final após o merge em main.
Integração com o board (Jira ou Trello, opcional)
Se o projeto tem o board acessível (MCP do Atlassian para Jira, MCP ou API do Trello), as etapas
de card das seções 1 e 4 podem ser feitas pelo agente. Sem acesso, faça-as manualmente — nunca
com credenciais no prompt.
| Etapa |
Jira |
Trello |
| Ler o card antes de criar a branch |
jira_get_issue |
buscar o card no quadro pelo id/nome |
| Mover para desenvolvimento ao criar a branch |
preencher campos + jira_transition_issue |
trocar idList para a lista de desenvolvimento |
| Registrar o link do PR |
jira_update_issue no campo de PRs ou jira_add_comment |
custom field de PR, comentário, ou anexar o link no card |
| Mover para code review ao abrir o PR |
jira_get_transitions → jira_transition_issue |
trocar idList para a lista de code review |
Regras que valem nos dois:
- Ler antes de escrever. Busque o card antes de atualizar, para acrescentar ao campo de
PRs em vez de sobrescrever o que já está lá.
- Campos do momento antes de mover. No Jira é técnico: muitos workflows recusam campo setado
dentro da transição ("not on the appropriate screen") — atualize, depois transicione. No
Trello nada impede a movimentação, então a checagem é sua: confira os campos antes de trocar a
lista.
- Nunca chumbe identificador. No Jira, descubra a transição com
jira_get_transitions; no
Trello, use o id da lista (nome muda e quebra silenciosamente).
- Marcar a origem. Se o time usa uma label para o que o agente toca, some-a às existentes.
- Hotfix registra os dois links de PR (
main e develop) no mesmo card.
Checklist rápido
Adaptando ao seu time
Troque estes pontos e o resto do fluxo se mantém:
| O que |
Aqui |
No seu time |
| Prefixo do card |
ABC-123 |
ex.: PROJ-42, #1234 |
| Branch de integração / produção |
develop / main |
ex.: dev / master |
| Status pós-PR |
"Revisão de Código" |
o nome da coluna no seu quadro |
| Canal do time |
Slack / Discord / Teams |
webhook ou menção que o time usa |
| Onde registrar o PR |
campo "PRs" ou comentário |
Jira: customfield_* · Trello: custom field, comentário ou anexo |
| Mapa do board e dos campos |
perguntar ao time |
.claude/board-workflow.md (skill board-workflow) |
| Label de origem |
— |
ex.: ai, claude, se o time quiser rastrear |
| Tipos de commit |
feat, fix, chore, refactor, docs, test |
acrescente perf, ci… se usar |
1---2name: git-flow-delivery3description: Git Flow do card ao deploy em projetos com develop/main: branch e commit com número do card e descrição em inglês, regra 1 branch = 1 commit, PR para develop só depois da validação humana, acompanhamento do code review com checklist do que revisar, release develop → main sem squash com tag semver/rc, hotfix a partir da main com PR dupla, e integração opcional com o board (Jira ou Trello). Invocar sempre que for criar branch, commitar, abrir PR, gerar release ou hotfix.4---56# Git Flow Delivery — do card ao deploy78Fluxo baseado no Git Flow, padrão de mercado, para levar um card do quadro até produção com9rastreabilidade total: **todo commit, branch e PR carrega o número do card**, e o10histórico do repositório conta a mesma história que o quadro de tarefas.1112Ferramenta-agnóstico: funciona com Jira, Linear, GitHub Issues, Azure Boards etc.13Onde aparecer `ABC-123`, leia "o identificador do card no seu tracker".1415> **Se existir `.claude/board-workflow.md`** (criado pela skill `board-workflow`), ele é a16> **fonte da verdade** para nomes de status, ids de campo e o momento de preencher cada um:17> leia esse arquivo e use o que está lá em vez de perguntar de novo ou supor nomes. As duas18> skills se dividem assim — `board-workflow` cuida do board e dos campos; esta cuida de19> branch, commit, PR, release e hotfix; e o card acompanha o trabalho nos dois pontos de20> contato abaixo.2122## Mapa de ambientes2324| Branch | Ambiente | Quem mergeia |25|---|---|---|26| `develop` | Desenvolvimento / homologação (HML) | O time, após code review |27| `main` | Produção | O time, via PR de **release** ou **hotfix** |2829Toda branch de trabalho nasce de `develop`. Só hotfix nasce de `main`.3031## 1. Branch3233```34tipo/ABC-123-short-description-in-english35```3637- `tipo` ∈ `feat` · `fix` · `chore` · `refactor` · `docs` · `test`38- Criada a partir de `develop` atualizada: `git checkout develop && git pull && git checkout -b feat/ABC-123-...`39- Nome **em inglês**, kebab-case, curto. O card já tem o título completo em português.4041**Ao criar a branch, mova o card para o status de desenvolvimento** — o status do card sempre42reflete a etapa real do trabalho. Preencha antes os campos daquele momento (ex.: assignee,43estimativa, data de entrega) e só então transicione; ver a seção de integração com Jira.44Card parado atrás da realidade é erro, não detalhe.4546## 2. Commit4748```49tipo(ABC-123) - Description in English50```5152Exemplo: `fix(ABC-123) - Browser tab title shows wrong page name`5354Regras que não se negociam:5556- **Inglês.** Português fica no card; a mensagem de commit é para o histórico do repositório.57- **Número do card entre parênteses**, sem `:` depois. Nunca `tipo(escopo):`.58- **1 branch = 1 commit — sempre.** Qualquer ajuste depois do primeiro commit (correção59 de review, typo, lint) entra via amend, nunca como commit novo:6061 ```bash62 git add -A63 git commit --amend --no-edit64 git push --force-with-lease65 ```6667 Antes de qualquer push, confira que há exatamente 1 commit:68 `git log --oneline develop..HEAD`6970## 3. Definição de pronto → abrir o PR7172> ⚠️ **O PR só é aberto DEPOIS de um humano validar.** Não abra PR nem mova o card73> para "Revisão de Código" antes do OK explícito.74751. Terminar o trabalho do card com testes verdes; commit no padrão; `git push -u origin <branch>`.762. Sinalizar que está pronto para validação e **esperar o OK**. Se vierem ajustes, iterar77 (via amend) — sem abrir PR nesse vai-e-volta.783. Com o OK, abrir o PR para `develop`:7980 ```bash81 gh pr create --base develop \82 --title "tipo(ABC-123) - Description in English" \83 --body "$(cat <<'EOF'84 Card: <link do card>8586 - O que foi feito, em bullets técnicos87 - Decisões relevantes e por quê88 - Como testar89 EOF90 )"91 ```9293 - **Título do PR = mensagem do commit.**94 - **Body em português**, com o link do card e bullets técnicos.95 - Labels quando existirem no repo: `Bug fixes` · `Improvements` · `Breaking Changes`.9697## 4. Pós-PR — nesta ordem98991. **Registrar o link do PR no card** (campo/comentário de "PRs" do seu tracker), no formato:100101 ```102 tipo(ABC-123) - Título103 PR #N → https://github.com/<org>/<repo>/pull/N104 ```1051062. **Mover o card para "Revisão de Código"** (ou o status equivalente do seu quadro).1071083. **Acompanhar o code review** (bot e/ou humanos) — o que olhar está na seção109 *Code review: o que olhar*, adiante. Se o repo tem review automático,110 aguardar **no máximo 1 minuto** — nunca em loop além disso. Para cada thread aberto:111112 | Comentário | Ação |113 |---|---|114 | Procedente | Corrigir → incorporar ao commit único (amend + `--force-with-lease`) → **responder no thread** dizendo o que foi feito → *Resolve conversation* |115 | Não procedente | **Responder no thread** com a justificativa técnica → *Resolve conversation* |116117 - **Sempre responder antes de resolver.** Nunca feche um thread mudo.118 - Com revisor humano, o reply é diálogo: pode-se discordar com respeito e alinhar antes119 de mexer no código. Em dúvida se o ajuste estoura o escopo do card, pergunte.120 - Se corrigiu e o bot re-revisou, repetir **no máximo mais 1 vez**. Persistindo, parar e121 reportar — não entrar em ciclo infinito de correção.122123 ```bash124 # threads abertos125 gh api graphql -f owner=<org> -f repo=<repo> -F pr=<N> -f query='126 query($owner:String!,$repo:String!,$pr:Int!){ repository(owner:$owner,name:$repo){127 pullRequest(number:$pr){ reviewThreads(first:50){ nodes{128 id isResolved comments(first:10){ nodes{ databaseId path body } } } } } } }'129 # responder num comentário130 gh api repos/<org>/<repo>/pulls/<N>/comments -f body='...' -F in_reply_to=<databaseId>131 # resolver o thread (id do THREAD, não do comentário)132 gh api graphql -f id=<threadId> -f query='133 mutation($id:ID!){ resolveReviewThread(input:{threadId:$id}){ thread{ isResolved } } }'134 ```1351364. **Notificar o time** no canal (Slack, Discord, Teams…) — **sempre com confirmação137 explícita, pedida depois das etapas 1–3**. Autorização antecipada ("já pode avisar")138 dada antes do PR existir **não vale**: complete as etapas, pergunte, e só envie com o139 "sim" na resposta seguinte. Formato:140141 ```142 @<papel-do-time>143 PR: <url do PR>144 Card: <url do card>145 ```146147## Code review: o que olhar148149Vale para revisar o PR de outra pessoa **e** para conferir o seu antes de pedir revisão.150151### 1. Formato do título e dos commits152153- Padrão `tipo(ABC-123) - Description in English`, igual no commit e no título do PR.154- **Identificador do card presente.** O formato é o do tracker do time: `ABC-123` (Jira,155 Linear), `#1234` (GitHub Issues) ou o que estiver no mapa do board. Sem id, o histórico156 perde a rastreabilidade — é apontamento bloqueante.157- Tipo válido: `feat` · `fix` · `chore` · `refactor` · `docs` · `test`.158- Um commit por branch (`git log --oneline develop..HEAD`).159160### 2. Estrutura do PR161162- A descrição explica **o que** foi feito e **por quê**, com link do card.163- Labels aplicadas, quando o repo usa (ex.: `Bug fixes`, `Improvements`, `Breaking Changes`).164- **É hotfix?** Então existem **dois** PRs: um para `main` e um para `develop`.165- **É release?** Então **sem squash/rebase** no merge — o histórico da `develop` se preserva.166- O card está na coluna que corresponde à etapa real (code review).167168### 3. Qualidade do código169170| Frente | O que perguntar ao diff |171|---|---|172| **Corretude** | A lógica faz o que o card pede? Há edge case não tratado (lista vazia, nulo, limite, concorrência)? |173| **Idempotência** | Operações críticas (cobrança, envio, escrita externa) podem rodar duas vezes sem duplicar efeito? Retry é seguro? |174| **Segurança** | SQL/command injection; segredo ou token no código; dado pessoal em log ou resposta sem mascaramento; permissão verificada onde importa. |175| **Tratamento de erros** | Falha é capturada, logada e propagada com um **id de correlação** que permita rastrear a operação ponta a ponta? Nada de `catch` silencioso. |176| **Clareza** | Nomes de variáveis, funções e classes dizem o que são? Precisa de comentário para entender o óbvio? |177| **Duplicação** | Código repetido que já existe no projeto e poderia ser reaproveitado? |178| **Testes** | Existe teste para o que mudou, cobrindo o caso crítico **e** o de erro — não só o caminho feliz? |179| **Escopo** | O diff faz só o que o card pede? Mudança carona atrapalha a revisão e o rollback. |180181### 4. Severidade — sempre classifique o comentário182183| Nível | Quando | Efeito |184|---|---|---|185| 🔴 **Bloqueante** | Erro que compromete a entrega, dados ou segurança | pedir alteração; não aprovar |186| 🟡 **Sugestão** | Melhoria relevante, não impeditiva | quem escreveu decide |187| 🔵 **Nitpick** | Estilo, nomenclatura, preferência | não bloqueia; agrupe num comentário só |188189Sem severidade, todo comentário parece bloqueante e a revisão trava. Ao aprovar com apenas190sugestões e nitpicks, deixe explícito que estão liberados para seguir.191192## 5. Release — develop → main193194A branch `release` é **descartável**: existe só para levar o estado da `develop` até um195PR contra `main`.196197```bash198git checkout develop && git pull199git checkout -B release # -B recria se já existir200git push -u origin release201gh pr create --base main --head release --title "Release" --body "Release"202git checkout develop && git branch -D release # a remota o GitHub apaga no merge203```204205Regras:206207- **Título e body: `Release`**, sem número de versão. A versão vive na **tag/release do208 GitHub** (`vX.Y.Z`), não no título do PR.209- **NUNCA squash/rebase no merge** — release preserva o histórico da `develop` (merge commit).210- PR de release **não tem card**: as etapas de tracker da seção 4 não se aplicam. Só a211 notificação, com o mesmo pedido de confirmação:212213 ```214 @<papel-do-time>215 Release 📢216 <url do PR>217 ```218219- Após o merge, publicar a release final `vX.Y.Z` (sem `-rc`, apontando para `main`).220 Se o deploy de produção dispara pelo evento de release, **conferir que todos os221 workflows rodaram** (`gh run list --workflow <arquivo>`). Se um não disparou, deletar e222 recriar a release na mesma tag re-dispara o evento.223224### Versionamento (semver + release candidates)225226| Situação | Ação | Exemplo |227|---|---|---|228| Nova feature em `develop` | Incrementa **minor**, abre `rc.1` | `1.1.0 → 1.2.0-rc.1` |229| Nova RC em `develop` | Incrementa o número da RC | `1.2.0-rc.1 → 1.2.0-rc.2` |230| Release para `main` | Remove o sufixo `-rc` da última RC | `1.2.0-rc.3 → 1.2.0` |231| Hotfix em `main` | Incrementa **patch** | `1.2.0 → 1.2.1-rc.1` |232| Feature após RC parcial lançada | Nova minor com `rc.1` | `1.2.0-rc.5 → 1.3.0-rc.1` |233234Durante um hotfix podem coexistir `main: 1.2.1-rc.1` e `develop: 1.3.0-rc.1`.235Conferir a última tag: `git tag --sort=-creatordate | head -5`.236237## 6. Hotfix — direto em produção238239Hotfix é a **única** branch que nasce de `main`.240241```bash242git checkout main && git pull243git checkout -b fix/ABC-123-short-description244# ... corrigir, commit no padrão (1 commit), push ...245gh pr create --base main --title "fix(ABC-123) - Description" --body "..."246gh pr create --base develop --title "fix(ABC-123) - Description" --body "..."247```248249- **Duas PRs, sempre**: uma para `main` (vai para produção) e outra para `develop`250 (para a correção não se perder na próxima release). Registrar **os dois links** no card.251- Versão: patch com `rc` (`1.2.0 → 1.2.1-rc.1`), release final após o merge em `main`.252253254## Integração com o board (Jira ou Trello, opcional)255256Se o projeto tem o board acessível (MCP do Atlassian para Jira, MCP ou API do Trello), as etapas257de card das seções 1 e 4 podem ser feitas pelo agente. Sem acesso, faça-as manualmente — nunca258com credenciais no prompt.259260| Etapa | Jira | Trello |261|---|---|---|262| Ler o card antes de criar a branch | `jira_get_issue` | buscar o card no quadro pelo id/nome |263| **Mover para desenvolvimento** ao criar a branch | preencher campos + `jira_transition_issue` | trocar `idList` para a lista de desenvolvimento |264| Registrar o link do PR | `jira_update_issue` no campo de PRs **ou** `jira_add_comment` | custom field de PR, comentário, ou anexar o link no card |265| **Mover para code review** ao abrir o PR | `jira_get_transitions` → `jira_transition_issue` | trocar `idList` para a lista de code review |266267Regras que valem nos dois:268269- **Ler antes de escrever.** Busque o card antes de atualizar, para **acrescentar** ao campo de270 PRs em vez de sobrescrever o que já está lá.271- **Campos do momento antes de mover.** No Jira é técnico: muitos workflows recusam campo setado272 dentro da transição (*"not on the appropriate screen"*) — atualize, depois transicione. No273 Trello nada impede a movimentação, então a checagem é sua: confira os campos antes de trocar a274 lista.275- **Nunca chumbe identificador.** No Jira, descubra a transição com `jira_get_transitions`; no276 Trello, use o **id** da lista (nome muda e quebra silenciosamente).277- **Marcar a origem.** Se o time usa uma label para o que o agente toca, some-a às existentes.278- Hotfix registra **os dois** links de PR (`main` e `develop`) no mesmo card.279280## Checklist rápido281282- [ ] Branch `tipo/ABC-123-english-name`, criada de `develop` (de `main` só se hotfix)283- [ ] Commit `tipo(ABC-123) - Description in English` — e **só um** commit284- [ ] Card movido para desenvolvimento ao criar a branch285- [ ] Humano validou **antes** do PR286- [ ] PR para `develop`, título = commit, body em português com link do card287- [ ] Link do PR registrado no card; card em "Revisão de Código"288- [ ] Threads de review: respondidos **e** resolvidos; correções via amend289- [ ] Revisão passou pelas 4 frentes (formato, estrutura, qualidade, severidade)290- [ ] Notificação ao time só depois de perguntar e receber "sim"291- [ ] Release: título `Release`, sem squash, tag `vX.Y.Z`292- [ ] Hotfix: PR para `main` **e** para `develop`, versão patch293294## Adaptando ao seu time295296Troque estes pontos e o resto do fluxo se mantém:297298| O que | Aqui | No seu time |299|---|---|---|300| Prefixo do card | `ABC-123` | ex.: `PROJ-42`, `#1234` |301| Branch de integração / produção | `develop` / `main` | ex.: `dev` / `master` |302| Status pós-PR | "Revisão de Código" | o nome da coluna no seu quadro |303| Canal do time | Slack / Discord / Teams | webhook ou menção que o time usa |304| Onde registrar o PR | campo "PRs" ou comentário | Jira: `customfield_*` · Trello: custom field, comentário ou anexo |305| Mapa do board e dos campos | perguntar ao time | `.claude/board-workflow.md` (skill `board-workflow`) |306| Label de origem | — | ex.: `ai`, `claude`, se o time quiser rastrear |307| Tipos de commit | feat, fix, chore, refactor, docs, test | acrescente `perf`, `ci`… se usar |