Skip to content
Agentmart
Submit a tool

systematic-debugging

Metodologia de debugging sistemático para Python, FastAPI, Playwright e Railway.

Skill by bragabarreto

IndexedMIT★ 9
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/bragabarreto-systematic-debugging

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Metodologia de debugging sistemático para Python, FastAPI, Playwright e Railway. Cobre análise de logs, reprodução de bugs, diagnóstico de race conditions, erros de automação JSF/RichFaces e falhas de deploy em cloud.

Use cases: backend, testing, devops

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/systematic-debugging

What's inside

Skill name
systematic-debugging
Description
Metodologia de debugging sistemático para Python, FastAPI, Playwright e Railway. Cobre análise de logs, reprodução de bugs, diagnóstico de race conditions, erros de automação JSF/RichFaces e falhas de deploy em cloud.
License
MIT
Instructions
327 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Systematic Debugging Skill

## Metodologia: 5 Passos Antes de Tocar no Código

```
1. OBSERVAR   → Ler o erro completo, sem pular linhas
2. ISOLAR     → Reduzir ao mínimo reproduzível
3. HIPÓTESE   → Formular causa provável (1 por vez)
4. VERIFICAR  → Confirmar hipótese com log/teste, não com palpite
5. CORRIGIR   → Só então modificar código
```

**Nunca pule para o passo 5 sem completar os anteriores.**

---

## Análise de Logs de Erro

### Onde buscar logs neste projeto

| Fonte | Endpoint / Comando |
|---|---|
| Logs Playwright (SSE) | `GET /api/executar/{sessao_id}` — saída em tempo real |
| Logs Python webapp | `GET /api/logs/python` — últimas 300 linhas do logger |
| Logs Java / Tomcat | `GET /api/logs/java` e `GET /api/logs/tomcat` |
| Screenshot Xvfb | `GET /api/screenshot` |
| Processos ativos | `GET /api/ps` |
| Tomcat disponível | `GET /api/verificar_pjecalc` |

### Leitura de traceback Python

```
Sempre ler de baixo para cima:
  linha mais baixa  = erro imediato (o que explodiu)
  linhas do meio    = call stack (quem chamou o quê)
  linha mais alta   = onde o fluxo entrou
```

### Palavras-chave críticas neste projeto

| Mensagem | Diagnóstico |
|---|---|
| `Execution context was destroyed` | Página ainda navegando quando `evaluate()` foi chamado |
| `Target page, context or browser has been closed` | Browser crashou — `fechar()` foi chamado sem restart |
| `Playwright Sync API inside the asyncio loop` | Thread não tem loop próprio — `asyncio.set_event_loop(new_event_loop())` |
| `ViewExpiredException` / `ViewExpired` | JSF ViewState expirou — recarregar página |
| `503 Service Unavailable` | Proxy timeout: Python demorou >30s ou unhandled exception |
| `HTTP 500` no PJE-Calc | AJAX postback JSF falhou — geralmente blur disparado antes da hora |
| `networkidle timeout` | PJE-Calc travado em AJAX pendente |
| `StaleElementReferenceException` | DOM foi re-renderizado pelo RichFaces após AJAX |

---

## Reprodução Mínima

### Princípio
> O menor código que exibe o bug é o mais fácil de corrigir.

### Checklist de isolamento

- [ ] Bug ocorre com dados específicos ou com qualquer dado?
- [ ] Bug ocorre só na primeira execução ou em todas?
- [ ] Bug ocorre só em Railway/Docker ou também localmente?
- [ ] Bug ocorre em headless ou também em modo visível?
- [ ] Qual fase do Playwright falha? (1=dados, 2=histórico, 3=verbas…)
- [ ] O browser abre e carrega o PJE-Calc antes do erro?

### Reproduzir em isolamento (módulo playwright)

```python
# Testar fase específica sem rodar o pipeline completo
from modules.playwright_pjecalc import PJECalcPlaywright

agente = PJECalcPlaywright(log_cb=print)
agente.iniciar_browser(headless=False)  # visível para diagnóstico
# navegue manualmente até onde quer testar, então:
agente.fase_verbas(verbas_mapeadas_teste)
agente.fechar()
```

---

## Debugging de Race Conditions

Race conditions mais comuns neste projeto:

### 1. Navegação JSF ainda em progresso

**Sintoma:** `Execution context was destroyed`
**Causa:** `evaluate()` chamado enquanto JSF faz redirect/partial update
**Fix:**
```python
# Antes de qualquer evaluate() após navegação:
try:
    page.wait_for_load_state("networkidle", timeout=10000)
except Exception:
    page.wait_for_timeout(2000)
self._aguardar_ajax()
```

### 2. AJAX RichFaces não completou

**Sintoma:** Campos aparecem preenchidos na tela mas não são salvos
**Causa:** `blur` disparado prematuramente aciona postback AJAX que recarrega o campo
**Fix:**
```python
# NÃO usar .press("Tab") após fill() em campos JSF
# NÃO usar .dispatch_event("blur")
# Usar apenas:
loc.fill(valor)
loc.dispatch_event("input")
loc.dispatch_event("change")
# Depois aguardar AJAX antes de interagir com próximo campo
```

### 3. Thread asyncio vs sync_playwright

**Sintoma:** `Playwright Sync API inside the asyncio loop`
**Causa:** Thread herdou referência ao loop do uvicorn

From bragabarreto/pjecalc-agente, MIT.

Signals

Stars
9
Forks
4
Open issues
0
Last commit (this folder)
Mar 26, 2026 (7 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from bragabarreto

Cite this page

systematic-debugging skill. Agent Mart. https://agentmart.dev/skills/bragabarreto-systematic-debugging (last updated 2026-10-24)