CommunityRedacción y edicióngithub.com

frederico-kluser/surf-agent-skill

npm i -g surf-skill — multi-provider (Tavily + Parallel AI) web skill for AI coding agents. CLI + Node library, auto-fallback, multi-key rotation, cross-OS, batch search.

¿Qué es surf-agent-skill?

surf-agent-skill is a Claude Code agent skill that npm i -g surf-skill — multi-provider (Tavily + Parallel AI) web skill for AI coding agents. CLI + Node library, auto-fallback, multi-key rotation, cross-OS, batch search.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add frederico-kluser/surf-agent-skill

Installed? Explore more Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

<![CDATA[

IDDúvida (pergunta fechada)RotaOrigemPor que importaStatusConfiançaRajada
D1O pgvector suporta índice HNSW nativo desde qual versão?WEBINICIALDecide se cabe a coluna "HNSW" na tabelaRESPONDIDAAlta1
D2Qual versão de Postgres este projeto roda?PROJECTINICIALSem isso, D1 não tem resposta útilRESPONDIDAAlta0
D7O limite de 2000 dimensões vale para HNSW ou só para ivfflat?WEBD1Muda a recomendação para embeddings de 3072 dimABERTA—2
D9Por que o HNSW usa grafos hierárquicos?—D7—DESCARTADA: não muda o entregável—2
D11Qual o p99 do Qdrant nessa VPS com 800k vetores?WEBD3Decide o veredito da tabela de latênciaRESPONDIDA-FRACABaixa2
D12Que CVEs de pgvector foram publicados em 2026?WEBD4Muda a seção "risco"BLOQUEADA: CLI falhou 2 disparos—2
]]>

As duas últimas linhas são os estados que mais somem quando o registro é escrito de memória. Elas têm de estar no arquivo, com a coluna Confiança preenchida: Baixa é o que impede RESPONDIDA (I4), e BLOQUEADA é o que tem letra própria na contagem (I5).

Toda dúvida que já existiu permanece no registro para sempre, inclusive as DESCARTADAS e as DUPLICATAS. Deduplicar apenas contra as respondidas faz a dúvida rejeitada reaparecer a cada rajada, e o loop nunca fecha. Toda dúvida tem "por que importa" preenchido com a parte concreta do entregável que ela muda. Dúvida sem isso é curiosidade, e curiosidade não vira sub-agente. A coluna Origem é a cadeia de proveniência — a dúvida cuja resposta criou esta, ou INICIAL. Ela nunca guarda COMO a resposta foi obtida. É essa cadeia que G4 percorre para detectar deriva: D1→D7→D14→D22 que já não fala da pergunta original. CONFIANÇA BAIXA NÃO FECHA DÚVIDA. Antes de escrever o status, leia a coluna Confiança do handoff — o campo **Confidence:** do T3. Se ela diz Baixa / Low, a dúvida NÃO pode ser marcada RESPONDIDA: o status é RESPONDIDA-FRACA. Não há julgamento aqui, é a leitura de uma palavra; se a palavra é Low e o status é RESPONDIDA, o registro está errado. Uma RESPONDIDA-FRACA: (a) NUNCA entra no CONTEXTO ESTABELECIDO de outro sub-agente; (b) em rajada-contínua é re-admitida na rajada seguinte, reformulada mais estreita, SEM passar pelo portão — o portão julga dúvida nova, ele não reabre dúvida malfeita; (c) em rajada-única entra OBRIGATORIAMENTE em "Questões em aberto", com o motivo "respondida com confiança baixa" e a evidência que faltou; (d) toda afirmação da resposta final que dependa dela carrega ressalva escrita, como uma SOLITÁRIA. Chegando assim na entrega, ela conta em H — nunca em C. A CONTAGEM FECHA — nenhuma dúvida evapora. Todo status terminal cai em EXATAMENTE uma letra, e esta identidade vale sempre:

**A = B + C + G + E + I + H + F**

| Letra | Conta | Status terminal no registro |
|---|---|---|
| A | todas as dúvidas que já existiram | total de linhas da tabela |
| B | fechadas pelo contexto | RESPONDIDA com Rota CALLER ou PROJECT |
| C | fechadas por busca | RESPONDIDA com Rota WEB |
| G | fechadas por você, sem sub-agente | RESPONDIDA-INFERIDA |
| E | recusadas no portão | DESCARTADA: <motivo> e DUPLICATA-DE-Dn |
| I | bloqueadas | BLOQUEADA |
| H | respondidas fraco | RESPONDIDA-FRACA |
| F | abertas na entrega | ABERTA |

EM-VOO não é terminal e não tem letra: na entrega ele tem de ser ZERO.
Se a identidade não fechar, o REGISTRO está errado — conserte o registro,
nunca o número. `D` (admitidas em rajadas posteriores) é métrica de fluxo:
vai na tabela de rajadas e NÃO entra na identidade, senão a dúvida admitida
na rajada 2 e respondida na rajada 2 é contada duas vezes.
A tabela "Questões em aberto" do relatório tem exatamente **F + I + H**
linhas — uma por dúvida que chega ao fim sem resposta usável. Nenhuma das
três letras tem permissão de sumir num contador.</invariant>

Formato em references/burst-templates.md, template T8. Ele é a prestação de contas da rajada: quantas dúvidas nasceram, quantas o contexto matou sem gastar busca, quantas foram descartadas no portão e por quê, e o que ficou em aberto. Sem esses números, "pesquisa concluída" não significa nada. A conta tem de FECHAR: A = B + C + G + E + I + H + F (I5), e a tabela "Questões em aberto" tem exatamente F + I + H linhas. Relatório cuja identidade não fecha é relatório com dúvida evaporada — e uma dúvida que evapora é exatamente a resposta entregue com furo que ninguém declarou.


Referências — leia sob demanda, nenhuma consome contexto antes disso

ArquivoQuando ler
references/burst-templates.mdAntes da primeira rajada. Templates T1–T8 com o contrato de 5 campos.
references/failure-modes.mdQuando um caso de degradation disparar.
references/surf-ai-cli.mdAo escrever prompts de delegação: flags, saída JSON, códigos de saída.
references/brave-api.mdQuando importar o que o Brave devolve, o que ele não devolve, ou por que uma flag não teve efeito.
references/COSTS.mdQuando o orçamento de busca importar (o teto real é o plano Brave, não o dinheiro).

Skills relacionados