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
Mensagem pronta para colar
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-proOu 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.mdConteú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_abortedtratado 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.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2429
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC