<?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>agentic-workflows on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/agentic-workflows/</link>
    <description>Recent content in agentic-workflows on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 13 Apr 2026 16:16:41 -0700</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/agentic-workflows/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Agent Skills Usage</title>
      <link>https://www.s-anand.net/blog/agent-skills-usage/</link>
      <pubDate>Mon, 13 Apr 2026 16:16:41 -0700</pubDate>
      <guid>https://www.s-anand.net/blog/agent-skills-usage/</guid>
      <description>&lt;p&gt;I have a bunch of &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents&#34;&gt;coding agent skills&lt;/a&gt; I&amp;rsquo;ve accumulated over the last few months. Here&amp;rsquo;s how often my sessions use them:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left;&#34;&gt;Skill&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left;&#34;&gt;Claude&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left;&#34;&gt;Codex&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left;&#34;&gt;Copilot&lt;/th&gt;
      &lt;th scope=&#34;col&#34; style=&#34;text-align: left;&#34;&gt;Overall&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/code/SKILL.md&#34; target=&#34;_blank&#34;&gt;code&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(229, 240, 249); color: rgb(0, 0, 0);&#34;&gt;6.1%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(8, 48, 107); color: rgb(255, 255, 255);&#34;&gt;69.1%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(94, 164, 208); color: rgb(255, 255, 255);&#34;&gt;37.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(35, 114, 180); color: rgb(255, 255, 255);&#34;&gt;51.5%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/data-story/SKILL.md&#34; target=&#34;_blank&#34;&gt;data-story&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(45, 125, 187); color: rgb(255, 255, 255);&#34;&gt;48.7%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(198, 220, 239); color: rgb(0, 0, 0);&#34;&gt;16.4%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(94, 164, 208); color: rgb(255, 255, 255);&#34;&gt;37.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(145, 194, 223); color: rgb(255, 255, 255);&#34;&gt;28.0%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/data-analysis/SKILL.md&#34; target=&#34;_blank&#34;&gt;data-analysis&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(239, 246, 253); color: rgb(0, 0, 0);&#34;&gt;2.6%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(105, 172, 212); color: rgb(255, 255, 255);&#34;&gt;35.2%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(225, 237, 248); color: rgb(0, 0, 0);&#34;&gt;7.8%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(176, 210, 232); color: rgb(0, 0, 0);&#34;&gt;21.8%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/design/SKILL.md&#34; target=&#34;_blank&#34;&gt;design&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(158, 201, 226); color: rgb(0, 0, 0);&#34;&gt;25.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(168, 206, 229); color: rgb(0, 0, 0);&#34;&gt;23.6%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(206, 225, 242); color: rgb(0, 0, 0);&#34;&gt;14.1%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(176, 210, 232); color: rgb(0, 0, 0);&#34;&gt;21.8%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/plan/SKILL.md&#34; target=&#34;_blank&#34;&gt;plan&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(223, 235, 247); color: rgb(0, 0, 0);&#34;&gt;8.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(213, 229, 244); color: rgb(0, 0, 0);&#34;&gt;11.8%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(206, 225, 242); color: rgb(0, 0, 0);&#34;&gt;14.1%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(213, 229, 244); color: rgb(0, 0, 0);&#34;&gt;11.8%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/agent-friendly-cli/SKILL.md&#34; target=&#34;_blank&#34;&gt;agent-friendly-cli&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(236, 244, 252); color: rgb(0, 0, 0);&#34;&gt;3.7%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(207, 225, 242); color: rgb(0, 0, 0);&#34;&gt;13.8%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(215, 230, 245); color: rgb(0, 0, 0);&#34;&gt;11.1%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(215, 230, 245); color: rgb(0, 0, 0);&#34;&gt;11.2%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/devtools/SKILL.md&#34; target=&#34;_blank&#34;&gt;devtools&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(183, 213, 234); color: rgb(0, 0, 0);&#34;&gt;20.4%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(226, 237, 248); color: rgb(0, 0, 0);&#34;&gt;7.3%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(220, 234, 246); color: rgb(0, 0, 0);&#34;&gt;9.4%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(218, 232, 246); color: rgb(0, 0, 0);&#34;&gt;10.0%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/llm/SKILL.md&#34; target=&#34;_blank&#34;&gt;llm&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(240, 246, 253); color: rgb(0, 0, 0);&#34;&gt;2.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(222, 235, 247); color: rgb(0, 0, 0);&#34;&gt;8.7%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(225, 237, 248); color: rgb(0, 0, 0);&#34;&gt;7.8%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(226, 237, 248); color: rgb(0, 0, 0);&#34;&gt;7.4%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/pdf/SKILL.md&#34; target=&#34;_blank&#34;&gt;pdf&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(224, 236, 248); color: rgb(0, 0, 0);&#34;&gt;7.9%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(225, 237, 248); color: rgb(0, 0, 0);&#34;&gt;7.8%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(228, 239, 249); color: rgb(0, 0, 0);&#34;&gt;6.6%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/linkedin-cdp/SKILL.md&#34; target=&#34;_blank&#34;&gt;linkedin-cdp&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(206, 224, 241); color: rgb(0, 0, 0);&#34;&gt;14.3%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(231, 241, 250); color: rgb(0, 0, 0);&#34;&gt;5.6%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(232, 241, 250); color: rgb(0, 0, 0);&#34;&gt;5.3%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/uv-uvx/SKILL.md&#34; target=&#34;_blank&#34;&gt;uv-uvx&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(220, 233, 246); color: rgb(0, 0, 0);&#34;&gt;9.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(233, 242, 250); color: rgb(0, 0, 0);&#34;&gt;4.9%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/interactive-storytelling/SKILL.md&#34; target=&#34;_blank&#34;&gt;interactive-storytelling&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(227, 238, 248); color: rgb(0, 0, 0);&#34;&gt;7.1%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(239, 246, 252); color: rgb(0, 0, 0);&#34;&gt;2.7%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(227, 238, 248); color: rgb(0, 0, 0);&#34;&gt;7.1%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(234, 242, 251); color: rgb(0, 0, 0);&#34;&gt;4.6%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/demos/SKILL.md&#34; target=&#34;_blank&#34;&gt;demos&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(223, 235, 247); color: rgb(0, 0, 0);&#34;&gt;8.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(239, 246, 252); color: rgb(0, 0, 0);&#34;&gt;2.8%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(242, 248, 254); color: rgb(0, 0, 0);&#34;&gt;1.6%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(237, 245, 252); color: rgb(0, 0, 0);&#34;&gt;3.5%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/cloudflare/SKILL.md&#34; target=&#34;_blank&#34;&gt;cloudflare&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(235, 243, 251); color: rgb(0, 0, 0);&#34;&gt;4.3%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(238, 245, 252); color: rgb(0, 0, 0);&#34;&gt;3.1%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(237, 245, 252); color: rgb(0, 0, 0);&#34;&gt;3.3%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/melt-mlt/SKILL.md&#34; target=&#34;_blank&#34;&gt;melt-mlt&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(240, 246, 253); color: rgb(0, 0, 0);&#34;&gt;2.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(242, 248, 254); color: rgb(0, 0, 0);&#34;&gt;1.6%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(242, 248, 253); color: rgb(0, 0, 0);&#34;&gt;1.8%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/vector-art/SKILL.md&#34; target=&#34;_blank&#34;&gt;vector-art&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(240, 246, 253); color: rgb(0, 0, 0);&#34;&gt;2.5%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(240, 247, 253); color: rgb(0, 0, 0);&#34;&gt;2.4%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(242, 248, 253); color: rgb(0, 0, 0);&#34;&gt;1.7%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/vitest-dom/SKILL.md&#34; target=&#34;_blank&#34;&gt;vitest-dom&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(241, 247, 253); color: rgb(0, 0, 0);&#34;&gt;2.2%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(243, 248, 254); color: rgb(0, 0, 0);&#34;&gt;1.4%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/memorable-explanations/SKILL.md&#34; target=&#34;_blank&#34;&gt;memorable-explanations&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(239, 246, 253); color: rgb(0, 0, 0);&#34;&gt;2.6%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(242, 248, 254); color: rgb(0, 0, 0);&#34;&gt;1.6%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(243, 249, 254); color: rgb(0, 0, 0);&#34;&gt;1.3%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&#34;text-align: left;&#34;&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/npm-packages/SKILL.md&#34; target=&#34;_blank&#34;&gt;npm-packages&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(245, 250, 254); color: rgb(0, 0, 0);&#34;&gt;0.6%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(247, 251, 255); color: rgb(0, 0, 0);&#34;&gt;0.0%&lt;/td&gt;
      &lt;td style=&#34;text-align: right; background-color: rgb(246, 250, 255); color: rgb(0, 0, 0);&#34;&gt;0.3%&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Here are my observations, with surprises highlighted as ⁉️&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/code/SKILL.md&#34;&gt;&lt;code&gt;code&lt;/code&gt;&lt;/a&gt; is the most used skill, by far. About half the sessions use it.
&lt;ul&gt;
&lt;li&gt;But Claude doesn&amp;rsquo;t use it much⁉️&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/data-story/SKILL.md&#34;&gt;&lt;code&gt;data-story&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/data-analysis/SKILL.md&#34;&gt;&lt;code&gt;data-analysis&lt;/code&gt;&lt;/a&gt; skills were the most rapidly adopted.
&lt;ul&gt;
&lt;li&gt;I use Claude (with Claude Code &lt;em&gt;and&lt;/em&gt; Copilot) a lot more for data stories. I use Codex for data analysis.&lt;/li&gt;
&lt;li&gt;Therefore the &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/webapp-testing/SKILL.md&#34;&gt;&lt;code&gt;webapp-testing&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/devtools/SKILL.md&#34;&gt;&lt;code&gt;devtools&lt;/code&gt;&lt;/a&gt; skilss are used less by Codex.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/design/SKILL.md&#34;&gt;&lt;code&gt;design&lt;/code&gt;&lt;/a&gt; skill is used consistently across agents. It was inspired by Claude&amp;rsquo;s design skill - but I don&amp;rsquo;t think it is particularly good, and needs revision.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/agent-friendly-cli/SKILL.md&#34;&gt;&lt;code&gt;agent-friendly-cli&lt;/code&gt;&lt;/a&gt; tool development is mostly with Codex, followed by Copilot, and very little with Claude.&lt;/li&gt;
&lt;li&gt;Most &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/pdf/SKILL.md&#34;&gt;&lt;code&gt;pdf&lt;/code&gt;&lt;/a&gt; sessions are with Copilot / Codex, not Claude⁉️&lt;/li&gt;
&lt;li&gt;Codex reads most skills diligengly.
&lt;ul&gt;
&lt;li&gt;It is the only one diligently reading my &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/uv-uvx/SKILL.md&#34;&gt;&lt;code&gt;uv-uvx&lt;/code&gt;&lt;/a&gt; skill, even though every agent uses it⁉️&lt;/li&gt;
&lt;li&gt;In fact, it is the only agent to have read every skill except &lt;a href=&#34;https://github.com/sanand0/scripts/tree/main/agents/linkedin-cdp/SKILL.md&#34;&gt;&lt;code&gt;linkedin-cdp&lt;/code&gt;&lt;/a&gt; (it never needed it.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 22 Dec 2024</title>
      <link>https://www.s-anand.net/blog/things-i-learned-22-dec-2024/</link>
      <pubDate>Sun, 22 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-22-dec-2024/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What to use for hosting: &lt;a href=&#34;https://chatgpt.com/share/676663cd-2560-800c-b53c-2c51ef41be69&#34;&gt;ChatGPT&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;GitHub Pages: Static websites, medium files&lt;/li&gt;
&lt;li&gt;Cloudflare Pages: Static websites, global delivery&lt;/li&gt;
&lt;li&gt;Vercel: Frontend frameworks (e.g. Next.js) with high DX and ISR, small files&lt;/li&gt;
&lt;li&gt;Netlify: JAMstack projects, minimal back-end, moderate files&lt;/li&gt;
&lt;li&gt;Glitch: Small static projects&lt;/li&gt;
&lt;li&gt;Render: Full-stack apps requiring databases and server-side compute&lt;/li&gt;
&lt;li&gt;Firebase Hosting: Small sites, limited large files&lt;/li&gt;
&lt;li&gt;Archive.org: Public archival, large files&lt;/li&gt;
&lt;li&gt;Google Drive: File sharing, large files&lt;/li&gt;
&lt;li&gt;Dropbox: File sharing, moderate files&lt;/li&gt;
&lt;li&gt;Cloudflare R2: Static assets, large file delivery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Anthropic defines agents. &lt;a href=&#34;https://www.anthropic.com/research/building-effective-agents&#34;&gt;Building effective agents&lt;/a&gt; + &lt;a href=&#34;https://github.com/anthropics/anthropic-cookbook/tree/main/patterns/agents&#34;&gt;Cookbook&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Augmented LLMs&lt;/strong&gt; are LLMs enhanced with augmentations such as retrieval, tools, and memory.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflows&lt;/strong&gt; are systems where LLMs and tools are orchestrated through &lt;strong&gt;predefined&lt;/strong&gt; code paths.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prompt chaining&lt;/strong&gt;: Pipe each LLM output to the next LLM. A-&amp;gt;B-&amp;gt;C-&amp;gt;Z. E.g. Write report, then translate. Extract results, then verify them. Successively ask follow-up questions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Routing&lt;/strong&gt;: One LLMs decides which other LLM to call next. A-&amp;gt;B|C|D-&amp;gt;Z. E.g. Evaluate complexity, then pick the right model. Classify request time, then pick the right prompt.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parallelize: Sectioning&lt;/strong&gt; (and &lt;strong&gt;Orchestrator-workers&lt;/strong&gt;): Break tasks into independent subtasks, then aggregate. A-&amp;gt;B+C+D-&amp;gt;Z. E.g. Evaluate contracts against different clauses in parallel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parallelize: Voting&lt;/strong&gt;: Run same task multiple times, then vote. A-&amp;gt;B+B+B-&amp;gt;Z. E.g. Review code for prompt injection using different prompts. Evaluate content safety with different thresholds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluator-optimizer&lt;/strong&gt;: One model checks another in a loop. A-&amp;gt;B-&amp;gt;A-&amp;gt;B-&amp;gt;&amp;hellip;-&amp;gt;Z. E.g. Literary translation. Self-healing code. Policy violation checks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Human-in-the-loop Checkpoints&lt;/strong&gt;: The workflow explicitly requests human review at certain stages. A-&amp;gt;B-&amp;gt;(Human)-&amp;gt;C-&amp;gt;Z. E.g. Sensitive content review. High-stakes decision making. Ambiguous tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agents&lt;/strong&gt; are LLMs that dynamically direct their own processes and tool usage, consulting tools or the user as needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;To download YouTube subtitles, use: &lt;code&gt;yt-dlp -q --skip-download --convert-subs srt --write-sub --sub-langs &amp;quot;en&amp;quot; --write-auto-sub --print &amp;quot;requested_subtitles.en.url&amp;quot; &amp;quot;$url&amp;quot;&lt;/code&gt; &lt;a href=&#34;https://simonwillison.net/2024/Dec/19/q-and-qv-zsh-functions/#atom-everything&#34;&gt;Simon Willison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;o1-preview diagnoses better than doctors. &lt;a href=&#34;https://arxiv.org/pdf/2412.10849&#34;&gt;Harvard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenAI&amp;rsquo;s release of ephemeral tokens via sessions (valid for 1 minute) are a useful way of exposing apps for public demos. Currently it works only for the Realtime API, though.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://arxiv.org/abs/2407.09025&#34;&gt;SpreadsheetLLM&lt;/a&gt; is a way of encoding spreadsheets in an LLM friendly format. It&amp;rsquo;s good for 1K+ rows. For lower, Markdown &amp;gt; XML &amp;gt; HTML. However, &lt;a href=&#34;https://arxiv.org/abs/2305.13062v4&#34;&gt;Table Meets LLM&lt;/a&gt; suggests that HTML &amp;gt; XML &amp;gt; Markdown, so this is unclear.&lt;/li&gt;
&lt;li&gt;#HARD prompt. Ask video generators like SORA to generate text in videos. It is of average quality.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://platform.openai.com/docs/models#gpt-4o-realtime&#34;&gt;GPT 4o Mini Realtime&lt;/a&gt; was released. A realtime conversation will cost ~50c/hr. About 36c for input, 72c for output. (I extrapolated from the 6c/min audio input cost for GPT 4o Realtime when it was $100/MTok. GPT 4o Mini Realtime is $10/MTok input and $20/MTok output.)&lt;/li&gt;
&lt;li&gt;This is an interesting way to understand software. &lt;code&gt;Generate a Mermaid sequence diagram showing interactions based on this code.&lt;/code&gt; &lt;a href=&#34;https://llmfoundry.straive.com/history#?t=1734434521298204&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The King James Bible and all Harry Potters, each, are about $1M tokens (rounded off).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/markdown2/&#34;&gt;markdown2&lt;/a&gt; is the new de facto Markdown library for Python.&lt;/li&gt;
&lt;li&gt;Claude 3.5 Sonnet is &lt;em&gt;way&lt;/em&gt; ahead of competition on the &lt;a href=&#34;https://web.lmarena.ai/leaderboard&#34;&gt;LMSYS Webdev Arena&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.raspberrypi.com/news/introducing-raspberry-pi-5/&#34;&gt;Raspberry Pi 5&lt;/a&gt; has a faster CPU, more RAM and GPU, 4K support, multiple USB 3 ports&lt;/li&gt;
&lt;li&gt;Government websites like the official press releases cannot be crawled from outside India. Hence the need for server farms in India!&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Things I Learned - 01 Dec 2024</title>
      <link>https://www.s-anand.net/blog/things-i-learned-01-dec-2024/</link>
      <pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/things-i-learned-01-dec-2024/</guid>
      <description>&lt;p&gt;This week, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gists are a good place to store static files for posterity as well as throwaway files. But, they&amp;rsquo;re just git repositories. So there may be no advantage over GitHub repos.&lt;/li&gt;
&lt;li&gt;GPT-4o Audio supports tone control via XML tags like &lt;code&gt;&amp;lt;cough&amp;gt;...&lt;/code&gt;, &lt;code&gt;&amp;lt;laugh&amp;gt;...&lt;/code&gt;, etc. But at ~$15/hr of output, it&amp;rsquo;s too expensive. &lt;a href=&#34;https://x.com/ilanbigio/status/1861913173432946808&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mridula&amp;rsquo;s son gave a live commentary of what he was doing on Minecraft and ChatGPT gave him live evaluation and coaching. E.g. “Great strategy! Getting to the launch pad early can give you a huge mobility advantage. Making the bridge wider is also a smart move to prevent accidental falls. With this plan, you’re setting yourself up for success. This is a great way to interact with LLMs.&lt;/li&gt;
&lt;li&gt;Gemini&amp;rsquo;s JSON mode returns JSON with keys in alphabetical order. I think. Emperical evidence. This is unlike OpenAI which explicitly returns the keys in the order specified.
&lt;ul&gt;
&lt;li&gt;To solve this, order the keys alphabetically.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HTMX focuses on HTML over JS. Like server responses being HTML snippets not JSON. But I need front-end over back-end. Client side apps. HTMX doesn&amp;rsquo;t help much there, e.g. templating, or just plain JS code.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://v1.htmx.org/extensions/client-side-templates/&#34;&gt;htmx client side templates&lt;/a&gt; do can convert JSON to HTML.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I installed the &lt;a href=&#34;https://openai.com/chatgpt/desktop/&#34;&gt;OpenAI Desktop App&lt;/a&gt; as well as &lt;a href=&#34;https://claude.ai/download&#34;&gt;Claude for Desktop&lt;/a&gt;. They take up too much RAM (260MB and 750 MB respectively on startup - though this varies.) The ChatGPT web page takes ~100MB incrementally, so I wrote an &lt;a href=&#34;https://www.autohotkey.com/&#34;&gt;AutoHotkey script&lt;/a&gt; to switch to the first open (or recently closed) ChatGPT tab on &lt;a href=&#34;https://brave.com/&#34;&gt;Brave&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I tried &lt;a href=&#34;https://microsoft.github.io/lida/&#34;&gt;LIDA&lt;/a&gt; from Microsoft, after almost a year of its release. A few notes:
&lt;ul&gt;
&lt;li&gt;Just running &lt;code&gt;uvx lida ui --port 8080 --docs&lt;/code&gt; works.&lt;/li&gt;
&lt;li&gt;But I needed to use &lt;code&gt;export TCL_LIBRARY=C:/Users/Anand/AppData/Roaming/uv/python/cpython-3.13.0-windows-x86_64-none/tcl/tcl8.6&lt;/code&gt; to point it to my TCL installation for charts to work. I also chose to &lt;code&gt;export OPENAI_BASE_URL=https://llmfoundry.straive.com/openai/v1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I also chose to replace &lt;code&gt;gpt-3.5-turbo-0301&lt;/code&gt; (the default model) with &lt;code&gt;gpt-4o-mini&lt;/code&gt; in &lt;code&gt;lida/web/ui/component*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s quite impressive.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OpenAI allows multiple system messages. I learned this browsing through the LIDA prompts.&lt;/li&gt;
&lt;li&gt;Anthropic&amp;rsquo;s &lt;a href=&#34;https://www.anthropic.com/news/model-context-protocol&#34;&gt;Model Context Protocol&lt;/a&gt; lets any apps integrate with LLM Apps. LLM Apps are becoming the new operating system. Competitors, beware.&lt;/li&gt;
&lt;li&gt;I spoke at &lt;a href=&#34;https://www.meetup.com/data-vis-singapore/events/304516458/&#34;&gt;Automating Data Visualizations using LLMs&lt;/a&gt; at SUTD. Apparently, using LLMs to write code is much more common than writing code to use LLMs. I ran a quick quiz.
&lt;ul&gt;
&lt;li&gt;Have you used ChatGPT or any LLM? 35 / 35 raised their hands.&lt;/li&gt;
&lt;li&gt;Have you written code using an LLM? 34 / 35 raised their hands. (I was impressed.)&lt;/li&gt;
&lt;li&gt;Have you uploaded a spreadsheet to an LLM for analysis? 15 / 35 raised their hands.&lt;/li&gt;
&lt;li&gt;Have you programmatically called an LLM API? 6 / 35 raised their hands.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;With LLMs, fostering innovation is a new path to profitability. Companies are increasing innovation team sizes. Productionizing that is the next. Some initiatives are:
&lt;ul&gt;
&lt;li&gt;Convert popular demos into starter kits&lt;/li&gt;
&lt;li&gt;Create and evangelize trainings on solutions and solution techniques&lt;/li&gt;
&lt;li&gt;Create larger pools of capacity to build innovation and productionize it&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://youtu.be/KrRD7r7y7NY&#34;&gt;Andrew Ng Explores The Rise Of Al Agents And Agentic Reasoning | BUILD 2024 Keynote&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Innovation is now a path to production. People are able to build 20 prototypes at the cost of one and see which sticks&lt;/li&gt;
&lt;li&gt;Machine learning is much faster. Things that took months now date days. But engineering and evaluations are only slightly faster and have become a bottleneck&lt;/li&gt;
&lt;li&gt;A good analogy to zero shot prompting is to ask a person to write an entire essay without pressing backspace even once&lt;/li&gt;
&lt;li&gt;Andrew scenes to align with the line chain definition of agentic workflow, which is about agents being able to craft their own control flows&lt;/li&gt;
&lt;li&gt;People find it very easy to understand agentic workflows once they read through the code&lt;/li&gt;
&lt;li&gt;Reflection or feedback is a useful agentic pattern&lt;/li&gt;
&lt;li&gt;In multi-agent collaboration, it may be the same underlying model that is acting as different agents. But just like we find it useful for the same CPU to run multiple processes and each application is its own abstraction, agents of useful abstraction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s hard to summarize a large document using RAG. But you can directly add answers to such questions into the corpus, e.g. by adding a &amp;ldquo;summary&amp;rdquo; section, and other answers to common questions.&lt;/li&gt;
&lt;li&gt;CloudFlare workers can bundle any kind of files, including text, data, and WASM. &lt;a href=&#34;https://developers.cloudflare.com/workers/wrangler/configuration/#bundling&#34;&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AssemblyScript can compile TypeScript to WASM. &lt;a href=&#34;https://github.com/sanand0/assemblyscript-tutorial&#34;&gt;Here&amp;rsquo;s what I learnt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Here&amp;rsquo;s a convenient pattern to &lt;code&gt;git commit&lt;/code&gt; a directory but nothing else in it (e.g. a &lt;code&gt;build/&lt;/code&gt; directory). Add a &lt;code&gt;.gitignore&lt;/code&gt; file with &lt;code&gt;*&lt;/code&gt; followed by &lt;code&gt;!.gitignore&lt;/code&gt;. Only the &lt;code&gt;.gitignore&lt;/code&gt; file is tracked.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ultravox.ai/&#34;&gt;Ultravox&lt;/a&gt; lets you build voice agents at 5c/min = $3/hr (OpenAI is 6c input, 24c output). Or &lt;a href=&#34;https://github.com/fixie-ai/ultravox&#34;&gt;clone their repo&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;Idle call time is counted towards cost. So cost may be higher than OpenAI.&lt;/li&gt;
&lt;li&gt;Voice cloning quality is average. Very distinctive voices are just partly identifiable.&lt;/li&gt;
&lt;li&gt;Supports tool calls (from their server).&lt;/li&gt;
&lt;li&gt;Their API is simple but the docs have minor errors (e.g. a trailing comma in the JSON, which leads to an error) reducing confidence.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LLMs may be good at derived data generation. For example, given a database schema, what derived columns would be useful? What derived views would be useful?&lt;/li&gt;
&lt;li&gt;The O1 model does not have a mechanism to control the amount of tokens to spend on reasoning. DeepSeek R1 might, but the API is not out yet.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;https://openai.com/chatgpt/desktop/&#34;&gt;OpenAI Desktop App&lt;/a&gt; can interact with native applications, e.g. read from Terminal, VS Code, etc. This takes it on a path to becoming a copilot for ANY apps. Putting every copilot app and every LLM integration under threat.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://crawl4ai.com/mkdocs/&#34;&gt;Crawl4AI&lt;/a&gt; and &lt;a href=&#34;https://docs.firecrawl.dev/&#34;&gt;Firecrawl&lt;/a&gt; are tools / libraries to convert websites into LLM Friendly Markdown and extract structured data using LLMs.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t try and solve specific problems. Pass the entire context to an LLM and get a comprehensive solution. Most doctors, for example, ask specific search-like questions instead of uploading the entire case history and asking for a diagnosis, and perform workse than LLMs. &lt;a href=&#34;https://www.oneusefulthing.org/p/getting-started-with-ai-good-enough&#34;&gt;Ethan Mollick&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
  </channel>
</rss>
