Skip to content

Commit 08d0c85

Browse files
authored
docs(PAV-93): adiciona guia de uso do Linear e integração com GitHub (#195)
- Cria GUIA-LINEAR-GITHUB.md com conceitos do Linear, passo a passo do fluxo de tasks, vínculo de card com branch/PR/commit e mapa das automações de estado (branch → In Progress, PR → In Review, merge → Done) - Adiciona link do guia no README (Links oficiais) - Reforça no skill abrir-pr-jobs-scraper que o identificador PAV-XX no título e o link do Linear no corpo são obrigatórios para a automação mover o card - Adiciona skill tlc-spec-driven e arquivos de suporte (.agents, lockfile)
2 parents 4c4b6cf + 2a4570a commit 08d0c85

20 files changed

Lines changed: 3182 additions & 9 deletions

.agents/.skill-lock.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"version": 2,
3+
"skills": {
4+
"tlc-spec-driven": {
5+
"name": "tlc-spec-driven",
6+
"source": "local",
7+
"contentHash": "e3d5c4dec38bff044207b31229fb28114d5fdb79f2c7200f3ec49a13a70024e1",
8+
"installedAt": "2026-07-24T13:23:56.326Z",
9+
"updatedAt": "2026-07-24T13:23:56.360Z",
10+
"agents": [
11+
"cursor",
12+
"claude-code",
13+
"windsurf"
14+
],
15+
"method": "copy",
16+
"global": false
17+
}
18+
}
19+
}

.agents/.skill-lock.json.backup

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"version": 2,
3+
"skills": {
4+
"tlc-spec-driven": {
5+
"name": "tlc-spec-driven",
6+
"source": "local",
7+
"contentHash": "e3d5c4dec38bff044207b31229fb28114d5fdb79f2c7200f3ec49a13a70024e1",
8+
"installedAt": "2026-07-24T13:23:56.326Z",
9+
"updatedAt": "2026-07-24T13:23:56.346Z",
10+
"agents": [
11+
"cursor",
12+
"claude-code"
13+
],
14+
"method": "copy",
15+
"global": false
16+
}
17+
}
18+
}

.claude/skills/abrir-pr-jobs-scraper/skill.md

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,14 @@ Rode os comandos de verificacao da tabela acima. Se algum falhar, informe e pare
5252

5353
> **Importante:** Este projeto usa um modelo de fork. O remote `origin` aponta para o fork do
5454
> desenvolvedor (ex: `jeremiassnts/Jobs_Scraper_Global`) e o remote `upstream` aponta para o
55-
> repositorio principal (`Benevanio/Jobs_Scraper_Global`). O PR sempre deve ser criado do fork
55+
> repositorio principal (`Cla-Code-Community/candidate`). O PR sempre deve ser criado do fork
5656
> (origin) para o upstream, usando a flag `--head` do `gh pr create`.
57+
>
58+
> **Owner do fork:** derive sempre a partir do remote `origin` (nao use `gh repo view`, que
59+
> resolve o repo default e retorna o owner do upstream):
60+
> ```bash
61+
> FORK_OWNER=$(git remote get-url origin | sed -E 's#.*[/:]([^/]+)/[^/]+(\.git)?$#\1#')
62+
> ```
5763
5864
1. Buscar os commits da branch que estao a frente de develop:
5965
```bash
@@ -64,8 +70,8 @@ Rode os comandos de verificacao da tabela acima. Se algum falhar, informe e pare
6470
- Informar: "Esta branch nao tem commits a frente de develop. Nao ha mudancas para abrir PR."
6571
- Parar a execucao
6672
3. **Se ja existir um PR aberto para essa branch:**
67-
- Detectar o owner do fork: `gh repo view --json owner -q .owner.login` (rodado no diretorio do projeto, que aponta para origin)
68-
- Verificar com: `gh pr list --head <owner-do-fork>:$(git branch --show-current) --repo Benevanio/Jobs_Scraper_Global --state open`
73+
- Detectar o owner do fork a partir do remote `origin`: `FORK_OWNER=$(git remote get-url origin | sed -E 's#.*[/:]([^/]+)/[^/]+(\.git)?$#\1#')`
74+
- Verificar com: `gh pr list --head "$FORK_OWNER:$(git branch --show-current)" --repo Cla-Code-Community/candidate --state open`
6975
- Se existir, informar ao usuario e perguntar se quer atualizar o PR existente ou parar
7076

7177
### Passo 4: Rodar testes
@@ -100,6 +106,8 @@ Rode os comandos de verificacao da tabela acima. Se algum falhar, informe e pare
100106

101107
### Passo 6: Montar e mostrar preview
102108

109+
> **Por que o formato importa:** o identificador `PAV-XX` no titulo e o link do Linear no corpo sao o que a integracao Linear ↔ GitHub usa para vincular o PR ao card e move-lo automaticamente (para **In Review** ao abrir o PR e para **Done** ao mergear). Nao remova o `PAV-XX` do titulo nem o link do Linear do corpo — sem eles, o card nao se move sozinho.
110+
103111
Montar o PR completo e mostrar ao usuario:
104112

105113
**Titulo:**
@@ -109,7 +117,7 @@ PAV-XX: <titulo da task no Linear>
109117

110118
**Target:**
111119
```
112-
Benevanio/Jobs_Scraper_Global (branch develop)
120+
Cla-Code-Community/candidate (branch develop)
113121
```
114122

115123
**Body:**
@@ -136,7 +144,7 @@ Mostrar tudo formatado e perguntar: **"O PR esta correto? Confirma a criacao? (s
136144

137145
### Passo 8: Criar o PR
138146

139-
> **Modelo de fork:** O PR e criado do fork (origin) para o upstream (Benevanio/Jobs_Scraper_Global).
147+
> **Modelo de fork:** O PR e criado do fork (origin) para o upstream (Cla-Code-Community/candidate).
140148
> E necessario usar `--head <owner-do-fork>:<branch>` para que o GitHub identifique corretamente
141149
> a branch de origem no fork.
142150
@@ -147,20 +155,49 @@ Mostrar tudo formatado e perguntar: **"O PR esta correto? Confirma a criacao? (s
147155
- **Se a branch nao existe no remote:** perguntar ao usuario: "A branch ainda nao foi enviada ao remote. Deseja fazer push agora? (s/n)"
148156
- Se confirmar, rodar: `git push -u origin $(git branch --show-current)`
149157
- Se negar, parar a execucao
150-
2. Detectar o owner do fork:
158+
2. Detectar o owner do fork a partir do remote `origin`:
151159
```bash
152-
FORK_OWNER=$(gh repo view --json owner -q .owner.login)
160+
FORK_OWNER=$(git remote get-url origin | sed -E 's#.*[/:]([^/]+)/[^/]+(\.git)?$#\1#')
153161
```
154162
3. Criar o PR via GitHub CLI:
155163
```bash
156164
gh pr create \
157-
--repo Benevanio/Jobs_Scraper_Global \
165+
--repo Cla-Code-Community/candidate \
158166
--base develop \
159167
--head "$FORK_OWNER:$(git branch --show-current)" \
160168
--title "PAV-XX: <titulo>" \
161169
--body "<body completo>"
162170
```
163-
4. Confirmar ao usuario com o link do PR criado
171+
4. **Fallback obrigatorio se o `gh pr create` falhar** com erros do tipo
172+
`No commits between ...`, `Head sha can't be blank` ou `Head ref must be a branch`
173+
(mesmo com a branch existindo no fork e com commits a frente de develop):
174+
175+
> **Por que acontece:** em fork cujo nome difere do upstream, o `gh pr create`
176+
> pode corromper o `--head` ao montar a requisicao (ex.: truncar `feature/...`
177+
> para `ature/...`), fazendo o GitHub nao encontrar a branch. Antes de tentar o
178+
> fallback, confirme que a branch esta ok comparando direto na API:
179+
> ```bash
180+
> gh api "repos/Cla-Code-Community/candidate/compare/develop...$FORK_OWNER:$(git branch --show-current)" \
181+
> --jq '{status:.status, ahead_by:.ahead_by}'
182+
> ```
183+
> Se retornar `ahead_by > 0`, a branch esta correta e o problema e o `gh pr create`.
184+
185+
Criar o PR direto pela API REST (que respeita o `head` sem corromper):
186+
```bash
187+
PAYLOAD=$(mktemp)
188+
cat > "$PAYLOAD" <<JSON
189+
{
190+
"title": "PAV-XX: <titulo>",
191+
"head": "$FORK_OWNER:$(git branch --show-current)",
192+
"base": "develop",
193+
"body": <body como string JSON, com \n para quebras de linha>
194+
}
195+
JSON
196+
gh api --method POST repos/Cla-Code-Community/candidate/pulls --input "$PAYLOAD" \
197+
--jq '{number:.number, url:.html_url}'
198+
rm -f "$PAYLOAD"
199+
```
200+
5. Confirmar ao usuario com o link do PR criado
164201
165202
## Erros comuns
166203
@@ -170,3 +207,4 @@ Mostrar tudo formatado e perguntar: **"O PR esta correto? Confirma a criacao? (s
170207
- **Bloquear por causa de testes falhando** — mostrar as falhas, mas deixar o usuario decidir
171208
- **Esquecer de buscar upstream/develop atualizado** — sempre rodar `git fetch upstream develop` antes de comparar
172209
- **Nao usar --head no gh pr create** — como o projeto usa fork, e obrigatorio passar `--head <owner-do-fork>:<branch>` para o PR ser criado corretamente
210+
- **Desistir quando o `gh pr create` falha com "No commits between..."** — em fork com nome diferente do upstream o `gh` pode corromper o `--head`; valide a branch com o `gh api .../compare` e crie o PR pelo fallback via `gh api .../pulls` (Passo 8)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"contentHash": "e3d5c4dec38bff044207b31229fb28114d5fdb79f2c7200f3ec49a13a70024e1",
3+
"downloadedAt": 1784654807392
4+
}

0 commit comments

Comments
 (0)