<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ai on Ricardo Dantas</title><link>https://ricardodantas.me/tags/ai/</link><description>Recent content in Ai on Ricardo Dantas</description><generator>Hugo -- 0.157.0</generator><language>en-us</language><lastBuildDate>Fri, 07 Aug 2026 10:00:00 +0100</lastBuildDate><atom:link href="https://ricardodantas.me/tags/ai/feed.xml" rel="self" type="application/rss+xml"/><item><title>skills: Composable AI Agent Skills for Real Engineering Work</title><link>https://ricardodantas.me/posts/launching-skills/</link><pubDate>Fri, 07 Aug 2026 10:00:00 +0100</pubDate><guid>https://ricardodantas.me/posts/launching-skills/</guid><description>&lt;p&gt;Every time I opened a new project with a coding agent, the first ten minutes were the same. It would guess at the architecture from file names, wander into the wrong directory, and confidently explain a data flow that didn&amp;rsquo;t exist. I&amp;rsquo;d correct it, point it at the real entry points, and slowly walk it through how the thing actually worked.&lt;/p&gt;
&lt;p&gt;Then I&amp;rsquo;d close the laptop, open a different repo the next day, and do it all again.&lt;/p&gt;
&lt;p&gt;At some point I realized I wasn&amp;rsquo;t giving instructions. I was giving the &lt;em&gt;same&lt;/em&gt; instructions, on repeat, to something that forgets between sessions. So I stopped repeating myself and started writing it down.&lt;/p&gt;
&lt;h2 id="introducing-skills"&gt;Introducing skills&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/ricardodantas/skills"&gt;skills&lt;/a&gt; is a small collection of AI agent skills for real engineering work. A skill is just a packaged set of instructions and workflows an agent can reach for when a task fits, so you&amp;rsquo;re not re-teaching the same craft every time.&lt;/p&gt;
&lt;p&gt;The collection is deliberately small. I&amp;rsquo;d rather ship a handful of skills that each solve one real problem than a sprawling framework that tries to do everything and does none of it well.&lt;/p&gt;
&lt;h2 id="the-one-that-started-it-all"&gt;The one that started it all&lt;/h2&gt;
&lt;p&gt;The headline skill is &lt;strong&gt;learn-codebase&lt;/strong&gt;, and it exists because of those repeated ten-minute onboarding sessions.&lt;/p&gt;
&lt;p&gt;Drop it into an unfamiliar repo and it does what I used to do by hand: detect the stack, trace the code end to end, and map the architecture, modules, data flow, conventions, and the real build/run/test commands. Then it leaves a &lt;code&gt;docs/CODEBASE_OVERVIEW.md&lt;/code&gt; behind so the next session, human or agent, starts with a map instead of a guess.&lt;/p&gt;
&lt;p&gt;But here&amp;rsquo;s the part I like most, and the thing I didn&amp;rsquo;t fully appreciate until I was using it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;learn-codebase gets smarter the more skills you have installed.&lt;/strong&gt; Before it analyzes anything, it looks at &lt;em&gt;which&lt;/em&gt; skills you already have and reaches for the ones that fit this repo&amp;rsquo;s stack. Land in a Swift project and it pulls in the Apple-focused skills. Land in a TypeScript one and it reaches elsewhere. The toolbox shapes the analysis. Your setup makes it better.&lt;/p&gt;
&lt;h2 id="whats-in-the-box"&gt;What&amp;rsquo;s in the box&lt;/h2&gt;
&lt;p&gt;Alongside learn-codebase are three focused tools, each born from a specific frustration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;apple-app-ship&lt;/strong&gt; - Shipping an Apple app spans architecture, polish, a marketing site, App Store screenshots, and submission. Each is its own specialty. This skill orchestrates the whole workflow, checking for and delegating to the right companion skill at each phase instead of re-teaching everything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;terminal-screenshots&lt;/strong&gt; - Hand-recorded terminal GIFs drift and look inconsistent. This uses VHS &lt;code&gt;.tape&lt;/code&gt; scripts so your terminal demos are reproducible and re-runnable in CI. The README GIF stops being a chore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;podman-browser&lt;/strong&gt; - A plain HTTP fetch returns empty markup on JavaScript-rendered pages. This renders the page headlessly in a Podman + Playwright container and hands back the real text or HTML.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of them are trying to be clever. They each do one annoying thing reliably, which is exactly what I want from a tool.&lt;/p&gt;
&lt;h2 id="small-and-composable-on-purpose"&gt;Small and composable, on purpose&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s a design decision running through all of this: these are small, composable skills, not a framework.&lt;/p&gt;
&lt;p&gt;Skills split on one axis, who can invoke them. &lt;strong&gt;User-invoked&lt;/strong&gt; skills run only when you ask for them by name; their job is usually to orchestrate. &lt;strong&gt;Model-invoked&lt;/strong&gt; skills can be reached for automatically by the agent when the task fits, or triggered by you. learn-codebase and apple-app-ship are model-invoked, so you can either say &amp;ldquo;use the learn-codebase skill on this repo&amp;rdquo; or just ask for an overview and let the agent reach for it.&lt;/p&gt;
&lt;p&gt;That composability is why the collection can stay small and still get more useful over time. Each skill is a building block. learn-codebase is the clearest example, it literally treats your other installed skills as its toolbox.&lt;/p&gt;
&lt;h2 id="installing-it"&gt;Installing it&lt;/h2&gt;
&lt;p&gt;Two ways in, two philosophies.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Claude Code plugin&lt;/strong&gt; installs the set as a managed bundle that updates when the repo ships. You subscribe rather than fork:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/plugin marketplace add ricardodantas/skills
/plugin install ricardodantas-skills@ricardodantas-skills
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Or use &lt;strong&gt;&lt;a href="https://skills.sh/ricardodantas/skills"&gt;skills.sh&lt;/a&gt;&lt;/strong&gt;, which copies editable skill files into your project so you can hack on them and make them your own. Works with Claude Code, Codex, and other agents:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;npx skills@latest add ricardodantas/skills
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then, in your agent, just mention a skill by name: &lt;em&gt;&amp;ldquo;Use the learn-codebase skill to give me an overview of this repository.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="why-i-published-it"&gt;Why I published it&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve contributed to open source for years, but most of my agent instructions lived in scattered notes and half-remembered corrections. Packaging them forced me to be honest about what actually worked versus what I only thought worked. Writing a skill is a bit like writing documentation: you find out how well you understand something the moment you have to explain it to someone who takes you literally.&lt;/p&gt;
&lt;p&gt;And an agent takes you &lt;em&gt;very&lt;/em&gt; literally.&lt;/p&gt;
&lt;p&gt;The other reason is simpler. I built these to solve my own problems, which almost certainly means someone else has the same problems. If learn-codebase saves you those repeated ten-minute onboarding sessions, or terminal-screenshots kills one more manual chore, that&amp;rsquo;s the whole point.&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;p&gt;I want to keep the collection small and let it grow only when a real, repeated frustration justifies a new skill, the same bar that produced these four. I have a couple of candidates already, but I&amp;rsquo;m resisting the urge to scaffold for a future that hasn&amp;rsquo;t asked for anything yet.&lt;/p&gt;
&lt;p&gt;If you try it, I&amp;rsquo;d genuinely love your feedback. Issues, pull requests, and new skill ideas are all welcome, and if you&amp;rsquo;ve read &lt;a href="https://ricardodantas.me/posts/ratatui-themes-building-a-theme-library/"&gt;my last post about ratatui-themes&lt;/a&gt;, you already know the first thoughtful issue tends to be my favorite part.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Check it out:&lt;/strong&gt; &lt;a href="https://github.com/ricardodantas/skills"&gt;GitHub&lt;/a&gt; | &lt;a href="https://skills.sh/ricardodantas/skills"&gt;skills.sh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Go teach your agent something once. 🛠️&lt;/p&gt;</description></item></channel></rss>