{"id":618,"date":"2026-08-04T15:25:09","date_gmt":"2026-08-04T18:25:09","guid":{"rendered":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/portfolio-skills-hub\/"},"modified":"2026-08-05T17:05:56","modified_gmt":"2026-08-05T20:05:56","slug":"portfolio-skills-hub","status":"publish","type":"page","link":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/portfolio-skills-hub\/","title":{"rendered":"Acervo de Skills de Agentes de IA Multi-CLI"},"content":{"rendered":"<style>\n.pf-wrap{max-width:1100px;margin:0 auto;font-size:16px;line-height:1.65}\n.pf-chamada{font-size:1.15rem;opacity:.85;margin:0 0 2rem}\n.pf-grade{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}\n.pf-card{border:1px solid rgba(128,128,128,.3);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;transition:transform .15s ease,box-shadow .15s ease}\n.pf-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.12)}\n.pf-card img{width:100%;height:180px;object-fit:cover;display:block;background:rgba(128,128,128,.12)}\n.pf-card-corpo{padding:1rem 1.1rem 1.2rem;display:flex;flex-direction:column;gap:.6rem;flex:1}\n.pf-card h3{margin:0;font-size:1.05rem;line-height:1.35}\n.pf-card p{margin:0;font-size:.92rem;opacity:.85;flex:1}\n.pf-chips{display:flex;flex-wrap:wrap;gap:.35rem}\n.pf-chip{font-size:.75rem;padding:.18rem .55rem;border-radius:999px;border:1px solid rgba(128,128,128,.35);opacity:.9}\n.pf-meta{font-size:.8rem;opacity:.7}\n.pf-cadeado{font-size:.8rem;opacity:.75}\n.pf-hero{margin:0 0 1.5rem}\n.pf-hero h1{margin:0 0 .4rem;line-height:1.2}\n.pf-secao{margin:2rem 0}\n.pf-secao h2{font-size:1.15rem;margin:0 0 .6rem;text-transform:uppercase;letter-spacing:.06em;opacity:.75}\n.pf-galeria{display:grid;gap:1.2rem;margin:2rem 0}\n.pf-galeria figure{margin:0}\n.pf-galeria img{width:100%;border:1px solid rgba(128,128,128,.3);border-radius:8px;display:block}\n.pf-galeria figcaption{font-size:.85rem;opacity:.75;margin-top:.4rem}\n.pf-repo{border:1px solid rgba(128,128,128,.35);border-left-width:4px;border-radius:8px;padding:1rem 1.2rem;margin:2rem 0}\n.pf-repo h2{margin:0 0 .5rem;font-size:1rem;text-transform:uppercase;letter-spacing:.06em}\n.pf-repo pre{background:rgba(128,128,128,.12);padding:.7rem .9rem;border-radius:6px;overflow-x:auto;margin:.6rem 0;font-size:.85rem}\n.pf-contato{margin:2rem 0;padding-top:1.2rem;border-top:1px solid rgba(128,128,128,.3);font-size:.95rem}\n.pf-voltar{display:inline-block;margin-bottom:1rem;font-size:.9rem}\n@media (max-width:600px){.pf-card img{height:150px}}\n<\/style>\n<div class=\"pf-wrap\">\n  <a class=\"pf-voltar\" href=\"\/index.php\/portfolio-backend\/\">\u2190 voltar ao portf\u00f3lio<\/a><\/p>\n<header class=\"pf-hero\">\n<p class=\"pf-meta\">08\/2026 \u00b7 3 dias<\/p>\n<p>Acervo consolidado de ~2.060 skills de agentes de IA instalado em quatro CLIs de uma vez, com o custo de contexto medido.<\/p>\n<div class=\"pf-chips\"><span class=\"pf-chip\">Python<\/span><span class=\"pf-chip\">Bash<\/span><span class=\"pf-chip\">Git<\/span><span class=\"pf-chip\">PageRank<\/span><span class=\"pf-chip\">Mermaid<\/span><\/div>\n<\/header>\n<section class=\"pf-secao\">\n<h2>O problema<\/h2>\n<p>Cada ferramenta de agente de IA l\u00ea skills de um diret\u00f3rio pr\u00f3prio, ent\u00e3o quem usa mais de uma acaba com c\u00f3pias divergentes ou reinstala tudo \u00e0 m\u00e3o a cada m\u00e1quina. As fontes p\u00fablicas se sobrep\u00f5em e usam o mesmo nome para coisas diferentes, o que produz conflito silencioso. E h\u00e1 um custo que quase ningu\u00e9m mede: cada skill publica nome e descri\u00e7\u00e3o no contexto de toda sess\u00e3o, ent\u00e3o um acervo grande cobra caro antes de o trabalho come\u00e7ar.<\/p>\n<\/section>\n<section class=\"pf-secao\">\n<h2>A arquitetura<\/h2>\n<p>Tr\u00eas etapas separadas \u2014 baixar, consolidar e instalar \u2014 com o estado declarado em arquivos de texto que o usu\u00e1rio edita: de onde v\u00eam as skills, para onde v\u00e3o, e quais subconjuntos existem. A consolida\u00e7\u00e3o resolve duplicata e conflito de nome, dando prioridade \u00e0s skills escritas no pr\u00f3prio reposit\u00f3rio sobre as externas, e gera um cat\u00e1logo com a fonte e a descri\u00e7\u00e3o de cada uma. A desinstala\u00e7\u00e3o rastreia o que o hub instalou e remove apenas isso, para n\u00e3o apagar o que o usu\u00e1rio colocou no mesmo diret\u00f3rio por conta pr\u00f3pria. Junto vai um gerador de mapa de reposit\u00f3rio sem depend\u00eancia externa: lista os arquivos versionados, extrai s\u00edmbolos por linguagem, monta o grafo de importa\u00e7\u00f5es e ranqueia com PageRank por itera\u00e7\u00e3o de pot\u00eancia, emitindo um mapa dentro de um or\u00e7amento de tokens \u2014 o \u00edndice que o agente l\u00ea em vez de varrer o c\u00f3digo.<\/p>\n<\/section>\n<section class=\"pf-secao\">\n<h2>O resultado<\/h2>\n<p>Um comando instala o acervo em quatro CLIs; outro mostra onde ficou. A medi\u00e7\u00e3o do custo de contexto do acervo completo (cerca de 121 mil tokens fixos por sess\u00e3o) motivou os perfis de instala\u00e7\u00e3o enxuta, que reduzem de cerca de 2.060 para cerca de 33 skills. A documenta\u00e7\u00e3o compara as abordagens existentes de mapa de reposit\u00f3rio e grafo de c\u00f3digo, com os n\u00fameros divulgados por cada projeto tratados como ordem de grandeza e n\u00e3o como promessa.<\/p>\n<\/section>\n<div class=\"pf-galeria\">\n<figure>\n      <img decoding=\"async\" src=\"https:\/\/carloslopes.programandosolucoes.com.br\/wp-content\/uploads\/portfolio\/skills-hub-01-fluxo.png\" alt=\"Baixar, consolidar e instalar: um acervo, quatro destinos\" loading=\"lazy\"><figcaption>Baixar, consolidar e instalar: um acervo, quatro destinos<\/figcaption><\/figure>\n<figure>\n      <img decoding=\"async\" src=\"https:\/\/carloslopes.programandosolucoes.com.br\/wp-content\/uploads\/portfolio\/skills-hub-02-custo.png\" alt=\"O custo de contexto medido e o que os perfis enxutos economizam\" loading=\"lazy\"><figcaption>O custo de contexto medido e o que os perfis enxutos economizam<\/figcaption><\/figure>\n<\/p><\/div>\n<div class=\"pf-repo\">\n<h2>\ud83d\udd12 C\u00f3digo-fonte<\/h2>\n<pre><code>git clone https:\/\/git.programandosolucoes.com.br\/git\/repos\/skills-hub.git<\/code><\/pre>\n<p>C\u00f3digo-fonte privado. As credenciais de leitura s\u00e3o liberadas sob solicita\u00e7\u00e3o \u2014 me chame para conversar sobre o projeto.<\/p>\n<\/p><\/div>\n<div class=\"pf-contato\">\n    <strong>Carlos Alberto<\/strong> \u2014 carlosalberto4ti@gmail.com \u00b7 +55 11 2615-2880\n  <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u2190 voltar ao portf\u00f3lio 08\/2026 \u00b7 3 dias Acervo consolidado de ~2.060 skills de agentes de IA instalado em quatro CLIs de uma vez, com o custo de contexto medido. PythonBashGitPageRankMermaid O problema Cada ferramenta de agente de IA l\u00ea skills de um diret\u00f3rio pr\u00f3prio, ent\u00e3o quem usa mais de uma acaba com c\u00f3pias divergentes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-618","page","type-page","status-publish","hentry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"en","enabled_languages":["en","br","it"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"br":{"title":false,"content":false,"excerpt":false},"it":{"title":false,"content":false,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/wp-json\/wp\/v2\/pages\/618","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=618"}],"version-history":[{"count":1,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/wp-json\/wp\/v2\/pages\/618\/revisions"}],"predecessor-version":[{"id":630,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/wp-json\/wp\/v2\/pages\/618\/revisions\/630"}],"wp:attachment":[{"href":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}