Pular para o conteúdo
Skillpedia
APIs e servidores (backend)48 mil · #2429

boost-asio-pro

Permite que seu agente escreva código C++ de rede assíncrono. É útil para criar servidores e clientes TCP/UDP com segurança.

O que ela faz

Esta ferramenta ajuda a escrever código C++ para redes que funciona de forma assíncrona (sem travar o programa). Ela lida com conexões de rede como TCP e UDP, segurança SSL/TLS, temporizadores e outras operações que não precisam esperar uma pela outra.

Quando usar

  • ✓Ao criar servidores ou clientes de rede em C++.
  • ✓Quando o código precisa lidar com muitas conexões ao mesmo tempo sem travar.
  • ✓Ao usar bibliotecas como Boost.Asio ou Asio para tarefas de rede.

Exemplo do que pedir para a IA

“Como faço para criar um servidor TCP simples em C++ usando Boost.Asio que escuta por conexões?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/boost-asio-pro/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/boost-asio-pro/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta verifica a versão do Boost/Asio que você está usando e segue as regras específicas para essa versão. Ela presta atenção em detalhes importantes como o tempo de vida dos dados e como as operações assíncronas devem ser gerenciadas para evitar erros comuns.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill boost-asio-pro

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/boost-asio-pro/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Boost.Asio / Asio standalone

Visão Geral

Escreva código de rede C++ assíncrono que compile com o Boost do usuário, não o mais recente. A API do Asio mudou de forma três vezes (clássico io_service → io_context → corrotinas C++20) e a maior parte do código Asio na internet é da primeira era, então escolha o estilo da toolchain primeiro, depois siga o arquivo de referência desse estilo.

Referências: Boost.Asio · Asio standalone

A API do Asio mudou de forma três vezes, então a mesma tarefa tem três respostas corretas dependendo da versão do Boost que você tem. Essa habilidade faz com que o agente estabeleça essa versão primeiro, depois aplique as regras que são genuinamente fáceis de errar — strand versus serialização de escrita, tempo de vida de buffer e conexão, leituras compostas para framing — e finalmente verifique sua própria saída contra uma lista antes de considerar concluído.

Quando Usar Esta Habilidade

  • Use ao escrever ou revisar código de rede C++ assíncrono com Boost.Asio ou Asio standalone: servidores e clientes TCP/UDP, streams SSL/TLS, timers, resolvedores.
  • Use quando o código envolve io_context, io_service, co_spawn, awaitable, async_read, async_write, strand, asio::spawn, yield_context, ou callbacks de manipuladores de conclusão.
  • Use quando a toolchain de destino é antiga: um Boost mais antigo ou um padrão pré-C++20, onde exemplos de corrotinas não compilarão.
  • Use quando o código assíncrono compila, mas se comporta mal: escritas intercaladas, buffers pendentes, sockets fechando cedo, operation_aborted tratado como erro.

Passo 1: escolha o estilo (faça isso antes de escrever código)

Determine a versão do Boost (ou Asio) e o padrão C++ realmente em uso — saída find_package(Boost), dpkg -l libboost-dev, brew info boost, CMAKE_CXX_STANDARD, ou pergunte. Não assuma o mais recente.

Boost Padrão C++ Estilo Ler
≥ 1.77 C++20 Corrotinas (co_await + awaitable<T>) — preferencial references/coroutines.md
≥ 1.74 C++11–17 Manipuladores de conclusão (callbacks) — a base portátil references/pre-cpp20.md
≥ 1.80 C++11–17 asio::spawn stackful + yield_context (links Boost.Coroutine — não header-only) references/pre-cpp20.md
1.62–1.65 C++11 Clássico io_service / strand.wrap / expires_from_now references/classic-boost.md

SSL/TLS em qualquer estilo: references/ssl.md. CMake para qualquer estilo: references/build.md.

io_context, make_strand, bind_executor, steady_timer, signal_set, async_read/async_write/async_read_until, buffers e resolver são recursos da biblioteca — idênticos nos estilos de corrotina e callback. Apenas o mecanismo de suspensão difere.

Passo 2: pisos de versão (verificados por compilação, não por documentação)

Alcance um destes e a compilação falhará em distribuições mais antigas:

Recurso Piso
experimental/awaitable_operators.hpp (os operadores || / &&) Boost ≥ 1.77 / Asio ≥ 1.20
Token de conclusão as_tuple Boost ≥ 1.79 / Asio ≥ 1.21
co_composed (operações compostas personalizadas) Boost ≥ 1.85 / Asio ≥ 1.30
asio::spawn(ex, fn, token) de 3 argumentos Boost ≥ 1.80 (Boost mais antigo tem apenas spawn(ex, fn))
any_io_executor (strand<any_io_executor>, executor padrão de tcp::socket) Boost ≥ 1.74 — o piso para o estilo de callback; abaixo dele, use o legado io_context::strand
io_context, make_strand, expires_after Boost ≥ 1.66 — abaixo dele, clássico io_service

Pisos de distribuição que atrapalham: Debian bookworm envia Boost 1.74 (sem awaitable_operators.hpp — #include falha diretamente), Ubuntu 20.04 envia 1.71 (sem any_io_executor), Debian 9 envia 1.62.

Linguagem, não biblioteca: os literais chrono 250ms / 30s são C++14. Para uma compilação C++11 real, escreva std::chrono::milliseconds(250).

Passo 3: as regras que são realmente fáceis de errar

Uma strand não serializa escritas. Uma strand serializa a execução do manipulador, não operações compostas inteiras. Duas async_writes em voo na mesma strand ainda intercalam bytes na rede. Full-duplex (um loop de leitura mais pushes/respostas concorrentes) precisa de uma strand por conexão e uma fila de saída com um flag de em voo, para que no máximo uma async_write exista por vez. Esta é a resposta errada mais comum sobre Asio.

…

Perguntas frequentes

O que significa 'assíncrono'?

Significa que o programa pode fazer outras coisas enquanto espera uma operação de rede terminar, em vez de ficar parado esperando.

Qual a diferença entre Boost.Asio e Asio?

Boost.Asio é parte da biblioteca Boost, enquanto Asio (standalone Asio) pode ser usado sem o Boost completo. Eles são muito parecidos em como funcionam.

Por que existem diferentes 'estilos'?

A API (forma de usar) do Asio mudou ao longo do tempo. Os estilos diferentes correspondem a essas mudanças, para garantir compatibilidade com versões mais antigas ou mais novas do C++ e do Boost.

Detalhes

Descrição original do autor

Use when writing asynchronous C++ networking code with Boost.Asio or standalone Asio — TCP/UDP servers and clients, SSL/TLS, timers, strands, composed async ops. Covers io_context, co_spawn, awaitable, async_read/async_write, asio::spawn, yield_context, and pre-C++20 callback styles.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2429
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas