Sync com o upstream
Este repositório é uma adaptação em português do Brasil de mattpocock/skills. O objetivo não é tradução literal: cada skill mantém o propósito, comportamento, fluxo e intenção da original, com linguagem, exemplos e contexto adequados ao público brasileiro.
O upstream é versionado com releases semver e mantém um CHANGELOG.md explicando cada mudança. A sincronização é feita release a release, nunca por acompanhamento contínuo de branch.
Fonte da verdade
UPSTREAM.md, na raiz deste repo:
upstream-version: — última tag do upstream totalmente sincronizada;
- mapeamento de renames intencionais (identidade deste projeto);
- skills exclusivas deste repo (nunca remover — não têm correspondente no upstream);
- pendências conhecidas.
O remote upstream aponta para o repo do Matt. Se não existir: git remote add upstream https://github.com/mattpocock/skills.git.
Namespace de tags
As tags do upstream vivem sob upstream/* (ex.: upstream/v1.1.0); o namespace vX.Y.Z limpo pertence às releases deste repo. Isso é o que permite tagear um sync sem colidir com a tag homônima do Matt.
O remote já está configurado para isso. Se um clone novo não estiver:
git config remote.upstream.tagOpt --no-tags
git config --add remote.upstream.fetch "+refs/tags/*:refs/tags/upstream/*"
Nunca rode git fetch upstream --tags — isso despeja as tags do Matt no namespace limpo e reintroduz a colisão.
Processo
1. Descobrir o delta
git fetch upstream
BASE = valor de upstream-version: em UPSTREAM.md (ex.: v1.1.0), lido como upstream/$BASE.
ALVO = tag mais recente do upstream: git tag -l 'upstream/v*' | sort -V | tail -1.
BASE == ALVO → nada a fazer, encerre.
2. Entender as mudanças — CHANGELOG primeiro, diff depois
Leia as seções do CHANGELOG.md do upstream entre BASE e ALVO (git show upstream/$ALVO:CHANGELOG.md). Ele explica o que mudou e por quê — use como esqueleto do relatório, não reconstrua do zero.
Gere o diff real, com detecção de renames:
git diff -M upstream/$BASE..upstream/$ALVO -- skills/ .claude-plugin/plugin.json
docs/ fica fora de propósito — veja as divergências deliberadas no UPSTREAM.md.
Cruze o diff com o mapeamento de nomes do UPSTREAM.md (ex.: mudanças em setup-matt-pocock-skills aplicam-se a setup-leandrocfe-skills).
3. Relatório e proposta — antes de tocar em qualquer arquivo
Apresente ao mantenedor:
- mudanças agrupadas por categoria (novas skills, renames, alterações, remoções);
- para cada uma: o que mudou, por que importa (cite o CHANGELOG) e o impacto nesta versão;
- proposta de adaptação, respeitando as regras abaixo;
- pontos que exigem decisão humana, destacados explicitamente.
Pare aqui e aguarde aprovação. Havendo ambiguidade, conflito entre versões ou mais de uma adaptação válida, pergunte antes de continuar.
4. Aplicar — somente após aprovação
- Adapte skill por skill; nunca copie e cole.
- Espelhe renames do upstream com
git mv, exceto os listados no mapeamento do UPSTREAM.md.
- Atualize
.claude-plugin/plugin.json: a lista de skills deve bater com os diretórios reais e o campo version deve espelhar a tag sincronizada. O hook "ARS scope guard" impede agents de escrever esse arquivo — entregue o conteúdo ao mantenedor para ele salvar à mão, ou peça que desligue o hook.
- Verifique as skills exclusivas deste repo (
personal/) que encadeiam skills do upstream: um rename quebra as referências delas silenciosamente.
- Valide ao final: cada entrada do plugin.json existe em
skills/; nenhum name: de frontmatter diverge do diretório; nenhuma referência a nome de skill morto sobrou (grep pelos nomes antigos); READMEs de bucket e top-level atualizados conforme o CLAUDE.md.
5. Fechar o sync
- Atualize
upstream-version: no UPSTREAM.md para ALVO e limpe pendências resolvidas.
- Commit:
sync: upstream ALVO.
- Tag da release deste repo, espelhando a versão do upstream:
git tag -a $ALVO -m "sync: upstream $ALVO". O namespace limpo está livre porque as tags do Matt vivem em upstream/*.
- Confirme o push com o mantenedor antes de rodar
git push origin $ALVO.
- Feche a issue de sync aberta pelo workflow, se houver.
- Opcional: traduza a seção do CHANGELOG do release e publique como release notes deste repo.
Regras de adaptação
- Nunca copie automaticamente conteúdo do upstream.
- Preserve a identidade deste projeto (nomes mapeados em
UPSTREAM.md).
- Escreva em português do Brasil; mantenha termos técnicos consagrados em inglês.
- Registro profissional e refinado. Nada de gíria, coloquialismo ou informalidade forçada (ex.: "UX gostosa", "sacada", "dá pra", "maneiro"). Traduza para um português estruturado, claro e adequado a documentação técnica — prefira o termo preciso ao efeito. Adjetivos de marketing do original ("delightful", "beautiful") viram equivalentes sóbrios ("refinada", "bem-acabada"), não gíria. Na dúvida, leia em voz alta: se soaria estranho num manual técnico, reescreva.
- Priorize comportamento e intenção da skill, não a mesma redação.
- Exemplos muito específicos da realidade do Matt → proponha equivalentes do contexto brasileiro quando fizer sentido.
- Preserve personalizações existentes deste repo, exceto quando conflitarem com melhorias importantes do upstream — nesse caso, aponte o conflito no relatório do passo 3.
- Nunca remova as skills exclusivas listadas em
UPSTREAM.md.
Prefira uma atualização cuidadosa e bem justificada a uma sincronização automática. Explique o motivo de cada sugestão antes de aplicá-la.
1---2name: sync-upstream3description: Sincroniza este repositório com um novo release do upstream (mattpocock/skills), adaptando as mudanças para pt-BR em vez de copiá-las. Use quando sair um release novo no upstream ou quando uma issue de "Sync upstream" for aberta pelo workflow check-upstream.4---56# Sync com o upstream78Este repositório é uma adaptação em português do Brasil de [mattpocock/skills](https://github.com/mattpocock/skills). O objetivo **não é tradução literal**: cada skill mantém o propósito, comportamento, fluxo e intenção da original, com linguagem, exemplos e contexto adequados ao público brasileiro.910O upstream é versionado com releases semver e mantém um `CHANGELOG.md` explicando cada mudança. A sincronização é feita **release a release**, nunca por acompanhamento contínuo de branch.1112## Fonte da verdade1314`UPSTREAM.md`, na raiz deste repo:1516- `upstream-version:` — última tag do upstream totalmente sincronizada;17- mapeamento de renames intencionais (identidade deste projeto);18- skills exclusivas deste repo (**nunca remover** — não têm correspondente no upstream);19- pendências conhecidas.2021O remote `upstream` aponta para o repo do Matt. Se não existir: `git remote add upstream https://github.com/mattpocock/skills.git`.2223### Namespace de tags2425As tags do upstream vivem sob `upstream/*` (ex.: `upstream/v1.1.0`); o namespace `vX.Y.Z` limpo pertence às **releases deste repo**. Isso é o que permite tagear um sync sem colidir com a tag homônima do Matt.2627O remote já está configurado para isso. Se um clone novo não estiver:2829```bash30git config remote.upstream.tagOpt --no-tags31git config --add remote.upstream.fetch "+refs/tags/*:refs/tags/upstream/*"32```3334**Nunca** rode `git fetch upstream --tags` — isso despeja as tags do Matt no namespace limpo e reintroduz a colisão.3536## Processo3738### 1. Descobrir o delta3940```bash41git fetch upstream42```4344- `BASE` = valor de `upstream-version:` em `UPSTREAM.md` (ex.: `v1.1.0`), lido como `upstream/$BASE`.45- `ALVO` = tag mais recente do upstream: `git tag -l 'upstream/v*' | sort -V | tail -1`.46- `BASE == ALVO` → nada a fazer, encerre.4748### 2. Entender as mudanças — CHANGELOG primeiro, diff depois49501. Leia as seções do `CHANGELOG.md` do upstream entre `BASE` e `ALVO` (`git show upstream/$ALVO:CHANGELOG.md`). Ele explica o que mudou **e por quê** — use como esqueleto do relatório, não reconstrua do zero.512. Gere o diff real, com detecção de renames:5253 ```bash54 git diff -M upstream/$BASE..upstream/$ALVO -- skills/ .claude-plugin/plugin.json55 ```5657 `docs/` fica fora de propósito — veja as divergências deliberadas no `UPSTREAM.md`.58593. Cruze o diff com o mapeamento de nomes do `UPSTREAM.md` (ex.: mudanças em `setup-matt-pocock-skills` aplicam-se a `setup-leandrocfe-skills`).6061### 3. Relatório e proposta — antes de tocar em qualquer arquivo6263Apresente ao mantenedor:6465- mudanças agrupadas por categoria (novas skills, renames, alterações, remoções);66- para cada uma: o que mudou, por que importa (cite o CHANGELOG) e o impacto nesta versão;67- proposta de adaptação, respeitando as regras abaixo;68- pontos que exigem decisão humana, destacados explicitamente.6970**Pare aqui e aguarde aprovação.** Havendo ambiguidade, conflito entre versões ou mais de uma adaptação válida, pergunte antes de continuar.7172### 4. Aplicar — somente após aprovação7374- Adapte skill por skill; nunca copie e cole.75- Espelhe renames do upstream com `git mv`, exceto os listados no mapeamento do `UPSTREAM.md`.76- Atualize `.claude-plugin/plugin.json`: a lista de skills deve bater com os diretórios reais e o campo `version` deve espelhar a tag sincronizada. **O hook "ARS scope guard" impede agents de escrever esse arquivo** — entregue o conteúdo ao mantenedor para ele salvar à mão, ou peça que desligue o hook.77- Verifique as skills exclusivas deste repo (`personal/`) que encadeiam skills do upstream: um rename quebra as referências delas silenciosamente.78- Valide ao final: cada entrada do plugin.json existe em `skills/`; nenhum `name:` de frontmatter diverge do diretório; nenhuma referência a nome de skill morto sobrou (`grep` pelos nomes antigos); READMEs de bucket e top-level atualizados conforme o `CLAUDE.md`.7980### 5. Fechar o sync81821. Atualize `upstream-version:` no `UPSTREAM.md` para `ALVO` e limpe pendências resolvidas.832. Commit: `sync: upstream ALVO`.843. Tag da release deste repo, espelhando a versão do upstream: `git tag -a $ALVO -m "sync: upstream $ALVO"`. O namespace limpo está livre porque as tags do Matt vivem em `upstream/*`.854. Confirme o push com o mantenedor antes de rodar `git push origin $ALVO`.865. Feche a issue de sync aberta pelo workflow, se houver.876. Opcional: traduza a seção do CHANGELOG do release e publique como release notes deste repo.8889## Regras de adaptação9091- **Nunca copie automaticamente** conteúdo do upstream.92- Preserve a identidade deste projeto (nomes mapeados em `UPSTREAM.md`).93- Escreva em português do Brasil; mantenha termos técnicos consagrados em inglês.94- **Registro profissional e refinado.** Nada de gíria, coloquialismo ou informalidade forçada (ex.: "UX gostosa", "sacada", "dá pra", "maneiro"). Traduza para um português estruturado, claro e adequado a documentação técnica — prefira o termo preciso ao efeito. Adjetivos de marketing do original ("delightful", "beautiful") viram equivalentes sóbrios ("refinada", "bem-acabada"), não gíria. Na dúvida, leia em voz alta: se soaria estranho num manual técnico, reescreva.95- Priorize comportamento e intenção da skill, não a mesma redação.96- Exemplos muito específicos da realidade do Matt → proponha equivalentes do contexto brasileiro quando fizer sentido.97- Preserve personalizações existentes deste repo, exceto quando conflitarem com melhorias importantes do upstream — nesse caso, aponte o conflito no relatório do passo 3.98- **Nunca remova** as skills exclusivas listadas em `UPSTREAM.md`.99100Prefira uma atualização cuidadosa e bem justificada a uma sincronização automática. Explique o motivo de cada sugestão antes de aplicá-la.