systematic-debugging
Metodologia de debugging sistemático para Python, FastAPI, Playwright e Railway.
Skill by bragabarreto
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.
About
Use cases: backend, testing, devops
Reviews
Write a reviewNo 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 uvicornFrom bragabarreto/pjecalc-agente, MIT.
More from bragabarreto/pjecalc-agente
- 0.478score
pjecalc-transformacao
bragabarreto
Guia de transformação do PJe-Calc Agente para replicar o CalcMACHINE v1.6.1.
SkillDFreshness: D★ 9Claude Code +9 - 0.475score
pjecalc-operacional
bragabarreto
Regras operacionais para automação do PJE-Calc Cidadão — roteiros executáveis por parcela, regras de dependência entre módulos, fichas técnicas de cada verba…
SkillDFreshness: D★ 9Claude Code +9 - 0.469score
pjecalc-preenchimento
bragabarreto
Guia completo de preenchimento e automação do PJE-Calc Cidadão (versão desktop).
SkillDFreshness: D★ 9Claude Code +9 - 0.465score
pjecalc-agent-architect
bragabarreto
Skill de arquitetura e refatoração do repositório pjecalc-agente — o agente de automação remota do PJE-Calc Cidadão.
SkillDFreshness: D★ 9Claude Code +9 - 0.289score
pjecalc-agent-debugger
bragabarreto
No description from the publisher yet.
SkillCFreshness: C★ 9Claude Code +9 - 0.253score
pjecalc-processamento
bragabarreto
No description from the publisher yet.
SkillDFreshness: D★ 9Claude Code +9 - 0.253score
pjecalc-automacao
bragabarreto
No description from the publisher yet.
SkillDFreshness: D★ 9Claude Code +9
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
- Repository
- github.com/bragabarreto/pjecalc-agente
- Website
- 163.176.44.221:8000
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from bragabarreto
- 0.478score
pjecalc-transformacao
bragabarreto
Guia de transformação do PJe-Calc Agente para replicar o CalcMACHINE v1.6.1.
SkillDFreshness: D★ 9Claude Code +9 - 0.475score
pjecalc-operacional
bragabarreto
Regras operacionais para automação do PJE-Calc Cidadão — roteiros executáveis por parcela, regras de dependência entre módulos, fichas técnicas de cada verba…
SkillDFreshness: D★ 9Claude Code +9 - 0.469score
pjecalc-preenchimento
bragabarreto
Guia completo de preenchimento e automação do PJE-Calc Cidadão (versão desktop).
SkillDFreshness: D★ 9Claude Code +9 - 0.465score
pjecalc-agent-architect
bragabarreto
Skill de arquitetura e refatoração do repositório pjecalc-agente — o agente de automação remota do PJE-Calc Cidadão.
SkillDFreshness: D★ 9Claude Code +9
Cite this page
systematic-debugging skill. Agent Mart. https://agentmart.dev/skills/bragabarreto-systematic-debugging (last updated 2026-10-24)