Isolamento de Recursos em Paralelo (Claude Skill)

Uma skill para Claude Code que detecta e resolve conflitos de recursos entre instâncias paralelas do Claude (portas, bancos de dados, Playwright).

O que é Isolamento de Recursos em Paralelo (Claude Skill)?

Esta skill para Claude Code aborda o problema de múltiplas instâncias do Claude executando tarefas no mesmo projeto e colidindo em portas, bancos de dados e instâncias de navegador Playwright. Em vez de usar arquivos de bloqueio ou estado compartilhado, ela ensina o agente a observar proativamente o estado do sistema e se adaptar silenciosamente. Para servidores de desenvolvimento, ela verifica portas ocupadas com `lsof -i` e escolhe a próxima disponível. Para bancos de dados Supabase, ela cria schemas isolados com prefixo baseado em timestamp (`parallel_<epoch>_`), executa migrações nesse schema e o limpa após os testes. Para Playwright, ela isola o estado do navegador usando `TMPDIR` ou `PLAYWRIGHT_BROWSERS_PATH` para evitar contenção de travamento. A skill também inclui orientações de reporte — informa apenas quando adaptações são feitas — e lista armadilhas comuns, como matar processos de outras instâncias, modificar arquivos de configuração ou esquecer de coordenar a porta entre o servidor dev e os testes. É compatível com qualquer projeto que use servidores de desenvolvimento Next.js, Supabase e Playwright, e é ativada antes de iniciar servidores, executar testes e2e ou testes que escrevam no banco.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add techiejd/claude-skill-parallel-resource-isolation

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Isolamento de Recursos em Paralelo

Visão Geral

Várias instâncias do Claude trabalhando no mesmo projeto colidirão em portas, bancos de dados e instâncias de navegador. Esta skill ensina detecção proativa e adaptação silenciosa — verifique o que está em uso, escolha outra coisa, reporte o que você escolheu.

Princípio central: Observe o estado do sistema, adapte-se silenciosamente, reporte no terminal. Nada de arquivos de coordenação, arquivos de bloqueio ou estado compartilhado.

Quando Usar

Antes de qualquer uma destas ações, execute as verificações de detecção:

  • Iniciar um servidor de desenvolvimento (next dev, npm run dev)
  • Executar testes e2e do Playwright
  • Executar testes que escrevem no banco de dados ou fazem asserções sobre ele

Isolamento de Porta (Servidor Dev)

Antes de iniciar um servidor de desenvolvimento:

lsof -i :3000 -t 2>/dev/null

Se ocupado, escaneie para cima (3001, 3002, ...) até encontrar uma porta livre. Inicie com:

PORT=<porta_livre> next dev

Playwright com configuração webServer:

  • Sobrescreva a porta via variável de ambiente, passe a mesma porta como baseURL
  • Se a sobrescrita de porta via env não for suportada, avise o usuário — NÃO modifique arquivos de configuração

Playwright sem webServer (servidor externo):

  • Inicie o servidor de desenvolvimento na porta livre
  • Execute o Playwright com baseURL sobrescrito:
BASE_URL=http://localhost:<porta_livre> npx playwright test

baseURL hardcoded no Playwright config (caso comum): A maioria dos configs tem baseURL: 'http://localhost:3000' hardcoded em vez de ler de env. Se for o caso, BASE_URL=... não funcionará. Avise o usuário com esta correção exata:

Seu playwright.config.ts tem um baseURL hardcoded. Atualize-o para: baseURL: process.env.BASE_URL || 'http://localhost:3000' Isso me permite sobrescrever a porta via variável de ambiente sem modificar arquivos de configuração.

Isolamento de Banco de Dados (Supabase)

Antes de executar testes que escrevem no banco de dados ou fazem asserções sobre ele:

  1. Determine se o isolamento é necessário:
    • Somente leitura → compartilhe o banco, pule o isolamento
    • Escrita / mutação / asserção sobre estado do banco → isole
  2. Gere um prefixo de schema baseado em timestamp: parallel_<epoch>_ (ex.: parallel_1741234567_)
  3. Crie o schema isolado e execute as migrações:
psql "$DATABASE_URL" -c "CREATE SCHEMA parallel_1741234567_;"
PGOPTIONS="--search_path=parallel_1741234567_" npx supabase db push
  1. Aponte o aplicativo para o schema isolado via variável de ambiente:
SUPABASE_SCHEMA=parallel_1741234567_ npx playwright test
  1. Após os testes: remova o schema:
psql "$DATABASE_URL" -c "DROP SCHEMA parallel_1741234567_ CASCADE;"

Isolamento de Navegador Playwright

Antes de executar testes do Playwright:

  1. Verifique se há processos de navegador Playwright em execução que possam entrar em conflito
  2. Isole o estado do navegador para evitar contenção de travamento — use qualquer abordagem:
TMPDIR=/tmp/playwright_<epoch> npx playwright test

Ou mais direcionada — isole apenas o caminho dos navegadores:

PLAYWRIGHT_BROWSERS_PATH=/tmp/pw_browsers_<epoch> npx playwright install chromium
PLAYWRIGHT_BROWSERS_PATH=/tmp/pw_browsers_<epoch> npx playwright test
  1. Certifique-se de que a instância do Playwright use a mesma porta atribuída no Isolamento de Porta acima

Reporte

Após a adaptação, reporte uma vez e siga em frente:

⚡ Isolamento paralelo:
  Servidor dev: porta 3005 (3000 estava em uso)
  Schema DB: parallel_1741234567_
  Playwright: /tmp/playwright_1741234567

Reporte apenas os recursos que foram realmente adaptados. Se nada conflitou, não diga nada.

Referência Rápida

RecursoDetecçãoAdaptaçãoLimpeza
Porta do servidor devlsof -i :<porta>PORT=<proxima_livre>Nenhuma necessária
Supabase DBVerificar se testes escrevem/assertamSchema parallel_<epoch>_Remover schema após testes
Navegador PlaywrightVerificar contenção de travamentoTMPDIR ou PLAYWRIGHT_BROWSERS_PATHDiretório temporário limpo automaticamente

Erros Comuns

Matar o processo do outro Claude

  • Problema: Porta 3000 está em uso, então você mata o processo para liberá-la
  • Correção: Nunca mate processos que você não iniciou. Escolha uma porta diferente.

Modificar arquivos de configuração para sobrescrita de porta

  • Problema: Editar playwright.config.ts ou next.config.js cria conflitos no git
  • Correção: Use variáveis de ambiente. Se variáveis de ambiente não funcionarem, avise o usuário.

Esquecer de passar a porta adaptada para o Playwright

  • Problema: Servidor dev na 3005, Playwright ainda acessa a 3000
  • Correção: Sempre coordene — a porta atribuída ao servidor dev deve ser passada como BASE_URL para o Playwright.

Isolar o banco quando não necessário

  • Problema: Sobrecarga de criação de schema para testes somente leitura
  • Correção: Isole apenas quando os testes escreverem ou fizerem asserções no estado do banco.

Bandeiras Vermelhas

Nunca:

  • Mate outro processo para liberar um recurso
  • Modifique arquivos de configuração para alterar portas
  • Ignore conflitos de porta e torça para dar certo
  • Pule a limpeza do banco após os testes

Sempre:

  • Verifique antes de iniciar
  • Adapte-se silenciosamente via variáveis de ambiente
  • Reporte o que você escolheu
  • Limpe os schemas do banco após os testes

Habilidades Relacionadas