<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: shrey vijayvargiya</title>
    <description>The latest articles on DEV Community by shrey vijayvargiya (@shreyvijayvargiya).</description>
    <link>https://dev.to/shreyvijayvargiya</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F584582%2F70be12eb-0227-48f0-b401-7a01e86cf0e2.jpeg</url>
      <title>DEV Community: shrey vijayvargiya</title>
      <link>https://dev.to/shreyvijayvargiya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shreyvijayvargiya"/>
    <language>en</language>
    <item>
      <title>Claude Code Skills Directory: Every Official Skill Repo I Use, From React to Rust</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Thu, 15 Oct 2026 08:15:48 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/claude-code-skills-directory-every-official-skill-repo-i-use-from-react-to-rust-42e5</link>
      <guid>https://dev.to/shreyvijayvargiya/claude-code-skills-directory-every-official-skill-repo-i-use-from-react-to-rust-42e5</guid>
      <description>&lt;p&gt;Claude Code writes decent code out of the box. It also writes code that looks like it was trained on every tutorial from 2021, because it partly was. It reaches for &lt;code&gt;useEffect&lt;/code&gt; where it doesn't need one, wires Stripe with the API you shouldn't use for new projects, and ships a Supabase table with row-level security turned off.&lt;/p&gt;

&lt;p&gt;Skills fix most of that. A skill is a folder with a &lt;code&gt;SKILL.md&lt;/code&gt; file that teaches the agent how a specific tool should be used today, written by people who know. The best ones are written by the companies that make the tools: Vercel for React and Next.js, Stripe for payments, Supabase for Postgres, Expo for mobile.&lt;/p&gt;

&lt;p&gt;This post is the list I wish I'd had: every skill repository I use or keep bookmarked, grouped by category, with what each skill actually does and when to reach for it. I checked every repository on GitHub while writing this, so every link points at a real folder with a real &lt;code&gt;SKILL.md&lt;/code&gt; in it.&lt;/p&gt;

&lt;p&gt;It's long. Here's what's covered:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Design, UI and UX&lt;/li&gt;
&lt;li&gt;React, Next.js, Vite, TanStack and Astro&lt;/li&gt;
&lt;li&gt;Animation and motion&lt;/li&gt;
&lt;li&gt;Testing frontend apps&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Payments and billing&lt;/li&gt;
&lt;li&gt;Databases, BaaS and PostgreSQL&lt;/li&gt;
&lt;li&gt;Mobile: Expo and React Native&lt;/li&gt;
&lt;li&gt;AI, LLMs and deep learning&lt;/li&gt;
&lt;li&gt;Servers and cloud functions&lt;/li&gt;
&lt;li&gt;Rust&lt;/li&gt;
&lt;li&gt;System design and API design&lt;/li&gt;
&lt;li&gt;Docker and Kubernetes&lt;/li&gt;
&lt;li&gt;Email, SMS and WhatsApp&lt;/li&gt;
&lt;li&gt;Voice AI and audio&lt;/li&gt;
&lt;li&gt;Web scraping and browser automation&lt;/li&gt;
&lt;li&gt;Analytics, feature flags and error tracking&lt;/li&gt;
&lt;li&gt;More databases, caching and queues&lt;/li&gt;
&lt;li&gt;Vue, Nuxt and Svelte&lt;/li&gt;
&lt;li&gt;Python, FastAPI and Go&lt;/li&gt;
&lt;li&gt;Security and code review&lt;/li&gt;
&lt;li&gt;Git, CI/CD and infrastructure as code&lt;/li&gt;
&lt;li&gt;Marketing, SEO and growth&lt;/li&gt;
&lt;li&gt;Documents and office files&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then the 20 skills I'd install first, and how to use skills without making things worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Claude Code skills work (two minutes)
&lt;/h2&gt;

&lt;p&gt;A skill is a directory containing a &lt;code&gt;SKILL.md&lt;/code&gt; file. The top of that file has a &lt;code&gt;name&lt;/code&gt; and a &lt;code&gt;description&lt;/code&gt; in YAML frontmatter, and the body has the instructions. It can also carry extra reference files and scripts.&lt;/p&gt;

&lt;p&gt;The clever part is that skills load in stages, which &lt;a href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview" rel="noopener noreferrer"&gt;Anthropic's Agent Skills docs&lt;/a&gt; call progressive disclosure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Level 1, always loaded:&lt;/strong&gt; just the name and description, roughly 100 tokens per skill. This is how Claude knows the skill exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 2, loaded when relevant:&lt;/strong&gt; the &lt;code&gt;SKILL.md&lt;/code&gt; body, under 5k tokens, read only when your request matches the description.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 3, loaded on demand:&lt;/strong&gt; reference files and scripts. A script's output enters the context, not its source code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So you can install a lot of skills without filling the context window. The description is what decides whether a skill fires, which is why good skill authors write descriptions like "Use when the user mentions X, Y or Z."&lt;/p&gt;

&lt;p&gt;Claude Code looks for skills in two places: &lt;code&gt;~/.claude/skills/&lt;/code&gt; for personal skills and &lt;code&gt;.claude/skills/&lt;/code&gt; inside a project. Skills can also come bundled inside Claude Code plugins.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing skills: the three commands you need
&lt;/h3&gt;

&lt;p&gt;Most repositories in this post support one or more of these:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. The open skills CLI from Vercel Labs. Works for any GitHub repo with SKILL.md files.&lt;/span&gt;
npx skills add vercel-labs/agent-skills
npx skills add supabase/agent-skills &lt;span class="nt"&gt;--skill&lt;/span&gt; supabase

&lt;span class="c"&gt;# 2. Claude Code plugin marketplaces (run inside Claude Code)&lt;/span&gt;
/plugin marketplace add anthropics/skills
/plugin &lt;span class="nb"&gt;install &lt;/span&gt;example-skills@anthropic-agent-skills

&lt;span class="c"&gt;# 3. Plugins from the official Claude Code marketplace&lt;/span&gt;
claude plugin &lt;span class="nb"&gt;install &lt;/span&gt;stripe@claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://github.com/vercel-labs/skills" rel="noopener noreferrer"&gt;&lt;code&gt;npx skills&lt;/code&gt; CLI&lt;/a&gt; is the one I use most because it takes any repo, and you can pick single skills with &lt;code&gt;--skill&lt;/code&gt; instead of installing a whole collection. Each repository's README lists its preferred command, and I've noted the official ones below.&lt;/p&gt;

&lt;p&gt;If you want the bigger picture of how skills sit inside an agent (the loop, the tools, the permissions), I covered that in &lt;a href="https://ihatereading.in/blogs/agent-harnessing-what-is-an-agent-harness" rel="noopener noreferrer"&gt;agent harnessing&lt;/a&gt;. And if you're curious what happens when you hand Claude a pile of growth skills and let it run a real site, that was &lt;a href="https://ihatereading.in/t/i-gave-claude-10-saas-growth-skills-and-let-it-run-my-own-platform" rel="noopener noreferrer"&gt;this experiment&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Official vs community, and why it matters
&lt;/h3&gt;

&lt;p&gt;Every entry below is marked. &lt;strong&gt;Official&lt;/strong&gt; means the repository is owned by the company or project behind the tool (Vercel, Stripe, Supabase, Expo, Docker and so on). &lt;strong&gt;Community&lt;/strong&gt; means a developer or team outside that company wrote it.&lt;/p&gt;

&lt;p&gt;Official skills track the product: when Next.js ships a new caching model, the Next.js skills change with it. Community skills can be excellent (Emil Kowalski's animation skills are the best in this whole list), but they move at the speed of one maintainer. Where no official skill exists for a tool, I've said so instead of pretending.&lt;/p&gt;

&lt;p&gt;One safety note before the list. Skills can include scripts, and an agent will run them. Read the &lt;code&gt;SKILL.md&lt;/code&gt; and any &lt;code&gt;scripts/&lt;/code&gt; folder before installing a community skill, the same way you'd read a shell script before piping it into &lt;code&gt;bash&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Design, UI and UX skills
&lt;/h2&gt;



&lt;p&gt;This is the category that changes output the most. Without a design skill, Claude produces the same safe layout every time: centered hero, three feature cards, purple gradient. With one, it makes deliberate choices about type, spacing and hierarchy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;anthropics/skills&lt;/a&gt;&lt;/strong&gt; (official, Anthropic)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/frontend-design" rel="noopener noreferrer"&gt;&lt;code&gt;frontend-design&lt;/code&gt;&lt;/a&gt;: guidance for distinctive, intentional visual design. It pushes Claude toward an actual aesthetic direction and typography choices that don't look templated. Use it whenever you're building a new page or reshaping an existing one.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/web-artifacts-builder" rel="noopener noreferrer"&gt;&lt;code&gt;web-artifacts-builder&lt;/code&gt;&lt;/a&gt;: tooling for multi-component HTML artifacts built with React, Tailwind CSS and shadcn/ui, for when a single file isn't enough.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/theme-factory" rel="noopener noreferrer"&gt;&lt;code&gt;theme-factory&lt;/code&gt;&lt;/a&gt;: ten preset color and font themes you can apply to slides, docs or landing pages.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/canvas-design" rel="noopener noreferrer"&gt;&lt;code&gt;canvas-design&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/anthropics/skills/tree/main/skills/algorithmic-art" rel="noopener noreferrer"&gt;&lt;code&gt;algorithmic-art&lt;/code&gt;&lt;/a&gt;: posters and static visuals, and generative art in p5.js with seeded randomness.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/vercel-labs/agent-skills" rel="noopener noreferrer"&gt;vercel-labs/agent-skills&lt;/a&gt;&lt;/strong&gt; (official, Vercel)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines" rel="noopener noreferrer"&gt;&lt;code&gt;web-design-guidelines&lt;/code&gt;&lt;/a&gt;: reviews your UI code against Vercel's Web Interface Guidelines. Trigger it with "review my UI", "check accessibility" or "audit design". This is my default pre-ship check.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/writing-guidelines" rel="noopener noreferrer"&gt;&lt;code&gt;writing-guidelines&lt;/code&gt;&lt;/a&gt;: the same idea for docs and UI copy, checking voice and tone against a writing handbook.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill" rel="noopener noreferrer"&gt;nextlevelbuilder/ui-ux-pro-max-skill&lt;/a&gt;&lt;/strong&gt; (community)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/ui-ux-pro-max" rel="noopener noreferrer"&gt;&lt;code&gt;ui-ux-pro-max&lt;/code&gt;&lt;/a&gt;: a large UI/UX knowledge skill for web, mobile and desktop, covering pages, components, design systems, accessibility, interaction and responsive layout. It's the heavyweight option when you want Claude to reason about design rather than just apply a style.&lt;/li&gt;
&lt;li&gt;The same repo ships &lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/design-system" rel="noopener noreferrer"&gt;&lt;code&gt;design-system&lt;/code&gt;&lt;/a&gt; (three-layer tokens: primitive, semantic, component), &lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/ui-styling" rel="noopener noreferrer"&gt;&lt;code&gt;ui-styling&lt;/code&gt;&lt;/a&gt; (shadcn/ui plus Tailwind), &lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/brand" rel="noopener noreferrer"&gt;&lt;code&gt;brand&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/banner-design" rel="noopener noreferrer"&gt;&lt;code&gt;banner-design&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/slides" rel="noopener noreferrer"&gt;&lt;code&gt;slides&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Install with &lt;code&gt;/plugin marketplace add nextlevelbuilder/ui-ux-pro-max-skill&lt;/code&gt;, then &lt;code&gt;/plugin install ui-ux-pro-max@ui-ux-pro-max-skill&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/shadcn-ui/ui" rel="noopener noreferrer"&gt;shadcn-ui/ui&lt;/a&gt;&lt;/strong&gt; (official, shadcn)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/shadcn-ui/ui/tree/main/skills/shadcn" rel="noopener noreferrer"&gt;&lt;code&gt;shadcn&lt;/code&gt;&lt;/a&gt;: manages shadcn components and projects (adding, searching, fixing, debugging, styling and composing UI, including chat interfaces), with component docs and usage examples. It lives inside the main shadcn repository.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/shadcn-ui/ui/tree/main/skills/migrate-radix-to-base" rel="noopener noreferrer"&gt;&lt;code&gt;migrate-radix-to-base&lt;/code&gt;&lt;/a&gt;: moves a project or single components from Radix UI primitives to Base UI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're collecting shadcn extensions to pair with this, my &lt;a href="https://ihatereading.in/t/cool-shadcn-libraries" rel="noopener noreferrer"&gt;list of cool shadcn libraries&lt;/a&gt; is still the one I point people to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tailwind CSS:&lt;/strong&gt; I couldn't find an official Tailwind Labs skill repository. The two I'd use are &lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/ui-styling" rel="noopener noreferrer"&gt;&lt;code&gt;ui-styling&lt;/code&gt;&lt;/a&gt; above and the community &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/frontend-mobile-development/skills/tailwind-design-system" rel="noopener noreferrer"&gt;&lt;code&gt;tailwind-design-system&lt;/code&gt;&lt;/a&gt; from wshobson/agents, which targets Tailwind v4 design tokens and component libraries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use this category when:&lt;/strong&gt; you're starting a landing page, building a dashboard, or about to ship a UI you haven't had a designer look at.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. React, Next.js, Vite, TanStack and Astro
&lt;/h2&gt;



&lt;p&gt;Framework skills are where official repos matter most, because frameworks change faster than model training data.&lt;/p&gt;

&lt;h3&gt;
  
  
  React
&lt;/h3&gt;

&lt;p&gt;There's no skill from the React team itself. The reference is Vercel's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/react-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;react-best-practices&lt;/code&gt;&lt;/a&gt; (official, Vercel): React and Next.js performance guidelines from Vercel Engineering. It's meant to load whenever Claude writes, reviews or refactors React code. If you install one skill from this whole post, make it this one.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/composition-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;composition-patterns&lt;/code&gt;&lt;/a&gt; (official, Vercel): composition patterns for components drowning in boolean props, for compound components and for reusable component APIs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/react-view-transitions" rel="noopener noreferrer"&gt;&lt;code&gt;react-view-transitions&lt;/code&gt;&lt;/a&gt; (official, Vercel): React's View Transition API (&lt;code&gt;&amp;lt;ViewTransition&amp;gt;&lt;/code&gt;, &lt;code&gt;addTransitionType&lt;/code&gt; and the CSS pseudo-elements). More on this in the animation section.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prepping for interviews alongside this? The &lt;a href="https://ihatereading.in/blogs/50-react-interview-questions-frontend-developers-2026" rel="noopener noreferrer"&gt;50 React interview questions&lt;/a&gt; post covers the same ground from the other side.&lt;/p&gt;

&lt;h3&gt;
  
  
  Next.js
&lt;/h3&gt;

&lt;p&gt;The Next.js team keeps skills inside the main repository, under &lt;a href="https://github.com/vercel/next.js/tree/canary/skills" rel="noopener noreferrer"&gt;&lt;code&gt;skills/&lt;/code&gt; on the canary branch&lt;/a&gt; (official, Vercel):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel/next.js/tree/canary/skills/next-dev-loop" rel="noopener noreferrer"&gt;&lt;code&gt;next-dev-loop&lt;/code&gt;&lt;/a&gt;: verifies that a change works in a running app, not just that it compiles. It combines Next.js's built-in &lt;code&gt;/_next/mcp&lt;/code&gt; endpoint with a browser.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel/next.js/tree/canary/skills/next-bundle-optimizer" rel="noopener noreferrer"&gt;&lt;code&gt;next-bundle-optimizer&lt;/code&gt;&lt;/a&gt;: audits and reduces initial-load work, such as oversized client bundles and duplicate dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel/next.js/tree/canary/skills/next-cache-components-adoption" rel="noopener noreferrer"&gt;&lt;code&gt;next-cache-components-adoption&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/vercel/next.js/tree/canary/skills/next-cache-components-optimizer" rel="noopener noreferrer"&gt;&lt;code&gt;next-cache-components-optimizer&lt;/code&gt;&lt;/a&gt;: turn on Cache Components, fix the blocking routes it surfaces, then optimize what renders instantly.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel/next.js/tree/canary/skills/next-partial-prefetching-adoption" rel="noopener noreferrer"&gt;&lt;code&gt;next-partial-prefetching-adoption&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/vercel/next.js/tree/canary/skills/next-partial-prefetching-optimizer" rel="noopener noreferrer"&gt;&lt;code&gt;next-partial-prefetching-optimizer&lt;/code&gt;&lt;/a&gt;: the same two-step flow for Partial Prefetching.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the skills that know about features newer than any model's training cutoff. The bundle optimizer pairs well with my rant about &lt;a href="https://ihatereading.in/blogs/why-websites-are-slow-bundle-size" rel="noopener noreferrer"&gt;why websites are slow&lt;/a&gt;. For starter projects to try them on, see the &lt;a href="https://ihatereading.in/t/best-and-free-nextjs-boilerplates" rel="noopener noreferrer"&gt;free Next.js boilerplates&lt;/a&gt; list.&lt;/p&gt;

&lt;p&gt;Vercel also ships deployment and cost skills in &lt;a href="https://github.com/vercel-labs/agent-skills" rel="noopener noreferrer"&gt;vercel-labs/agent-skills&lt;/a&gt;: &lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/deploy-to-vercel" rel="noopener noreferrer"&gt;&lt;code&gt;deploy-to-vercel&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/vercel-cli-with-tokens" rel="noopener noreferrer"&gt;&lt;code&gt;vercel-cli-with-tokens&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/vercel-optimize" rel="noopener noreferrer"&gt;&lt;code&gt;vercel-optimize&lt;/code&gt;&lt;/a&gt;, which pulls real usage metrics before suggesting cost and performance fixes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vite and Vitest
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/antfu/skills" rel="noopener noreferrer"&gt;antfu/skills&lt;/a&gt; (community, by Anthony Fu of the Vite and Vitest core teams): &lt;a href="https://github.com/antfu/skills/tree/main/skills/vite" rel="noopener noreferrer"&gt;&lt;code&gt;vite&lt;/code&gt;&lt;/a&gt; covers &lt;code&gt;vite.config.ts&lt;/code&gt;, the plugin API, SSR and the Vite 8 Rolldown migration. &lt;a href="https://github.com/antfu/skills/tree/main/skills/vitest" rel="noopener noreferrer"&gt;&lt;code&gt;vitest&lt;/code&gt;&lt;/a&gt; covers writing tests, mocking, coverage and fixtures. The repo also has skills for Vue, Nuxt, Pinia, UnoCSS, VitePress and pnpm.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  TanStack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/DeckardGer/tanstack-agent-skills" rel="noopener noreferrer"&gt;DeckardGer/tanstack-agent-skills&lt;/a&gt; (community): four skills, &lt;a href="https://github.com/DeckardGer/tanstack-agent-skills/tree/main/skills/tanstack-query" rel="noopener noreferrer"&gt;&lt;code&gt;tanstack-query&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/DeckardGer/tanstack-agent-skills/tree/main/skills/tanstack-router" rel="noopener noreferrer"&gt;&lt;code&gt;tanstack-router&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/DeckardGer/tanstack-agent-skills/tree/main/skills/tanstack-start" rel="noopener noreferrer"&gt;&lt;code&gt;tanstack-start&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/DeckardGer/tanstack-agent-skills/tree/main/skills/tanstack-integration" rel="noopener noreferrer"&gt;&lt;code&gt;tanstack-integration&lt;/code&gt;&lt;/a&gt;, which covers Query, Router and Start working together across SSR and caching.&lt;/li&gt;
&lt;li&gt;TanStack's own approach is different: its &lt;a href="https://github.com/TanStack/intent" rel="noopener noreferrer"&gt;Intent&lt;/a&gt; project is tooling for libraries to generate and ship skills alongside their npm packages, with meta-skills for generating skills and checking whether they've gone stale. Worth watching, because "the package ships its own skill" is probably where this all ends up.&lt;/li&gt;
&lt;li&gt;If you use Clerk with TanStack Start, &lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-tanstack-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-tanstack-patterns&lt;/code&gt;&lt;/a&gt; is official.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Astro
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/astrolicious/agent-skills" rel="noopener noreferrer"&gt;astrolicious/agent-skills&lt;/a&gt; (community): a single &lt;a href="https://github.com/astrolicious/agent-skills/tree/main/skills/astro" rel="noopener noreferrer"&gt;&lt;code&gt;astro&lt;/code&gt;&lt;/a&gt; skill for components and pages, SSR adapters, content collections, static deploys and the CLI. I didn't find an official skill from the Astro team.&lt;/li&gt;
&lt;li&gt;Official adjacent options: Clerk's &lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-astro-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-astro-patterns&lt;/code&gt;&lt;/a&gt;, and Vercel's &lt;code&gt;vercel-optimize&lt;/code&gt;, which lists limited Astro support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Astro keeps coming up in my own cost work because it ships so little JavaScript. That's part of &lt;a href="https://ihatereading.in/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors" rel="noopener noreferrer"&gt;how we keep ihatereading.in under $100 a month&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Animation and motion skills
&lt;/h2&gt;



&lt;p&gt;Agents are bad at animation in a specific way: they add motion everywhere, use the wrong easing, animate layout properties that drop frames, and never think about interruption. The skills here fix the decision-making, not just the syntax.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/emilkowalski/skills" rel="noopener noreferrer"&gt;emilkowalski/skills&lt;/a&gt;&lt;/strong&gt; (community, by Emil Kowalski, who teaches &lt;a href="https://animations.dev" rel="noopener noreferrer"&gt;animations.dev&lt;/a&gt; and built Sonner and Vaul)&lt;/p&gt;

&lt;p&gt;This is the best-written skill repo in this post. Install it with &lt;code&gt;npx skills@latest add emilkowalski/skills&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/animate" rel="noopener noreferrer"&gt;&lt;code&gt;animate&lt;/code&gt;&lt;/a&gt;: builds an animation from scratch by making decisions in order: should it animate at all, what for, which tool, which properties, which curve and duration, and how it handles interruption.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/review-animations" rel="noopener noreferrer"&gt;&lt;code&gt;review-animations&lt;/code&gt;&lt;/a&gt;: reviews motion code against a high craft bar. In its own words, "approval is earned."&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/improve-animations" rel="noopener noreferrer"&gt;&lt;code&gt;improve-animations&lt;/code&gt;&lt;/a&gt;: read-only audit of a codebase's motion code that produces a prioritized plan other agents can execute.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/find-animation-opportunities" rel="noopener noreferrer"&gt;&lt;code&gt;find-animation-opportunities&lt;/code&gt;&lt;/a&gt;: finds places that should animate and rejects the ones that shouldn't, with exact values.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/animation-performance" rel="noopener noreferrer"&gt;&lt;code&gt;animation-performance&lt;/code&gt;&lt;/a&gt;: keeps animations inside the frame budget by sticking to composite-only properties and keeping motion off a busy main thread.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/animation-vocabulary" rel="noopener noreferrer"&gt;&lt;code&gt;animation-vocabulary&lt;/code&gt;&lt;/a&gt;: turns "the bouncy thing when a popover opens" into the actual term, so you and the agent are talking about the same effect.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/apple-design" rel="noopener noreferrer"&gt;&lt;code&gt;apple-design&lt;/code&gt;&lt;/a&gt;: Apple's approach to fluid, physical, gesture-driven motion translated for the web.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/animate-expo" rel="noopener noreferrer"&gt;&lt;code&gt;animate-expo&lt;/code&gt;&lt;/a&gt;: the same decision process for React Native and Expo.&lt;/li&gt;
&lt;li&gt;Also useful outside animation: &lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/break-ui" rel="noopener noreferrer"&gt;&lt;code&gt;break-ui&lt;/code&gt;&lt;/a&gt; (feeds your UI worst-case data like long names, emoji and zero items), &lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/pick-ui-library" rel="noopener noreferrer"&gt;&lt;code&gt;pick-ui-library&lt;/code&gt;&lt;/a&gt; (an opinionated list for charts, OTP inputs, command menus and more), &lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/ask-sonner" rel="noopener noreferrer"&gt;&lt;code&gt;ask-sonner&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/emil-design-eng" rel="noopener noreferrer"&gt;&lt;code&gt;emil-design-eng&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Framer Motion / Motion:&lt;/strong&gt; I didn't find an official skill from the Motion team. Emil's &lt;code&gt;animate&lt;/code&gt; and &lt;code&gt;review-animations&lt;/code&gt; cover the decisions you make with Motion, and they work whichever library you pick.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other motion skills worth knowing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/react-view-transitions" rel="noopener noreferrer"&gt;&lt;code&gt;react-view-transitions&lt;/code&gt;&lt;/a&gt; (official, Vercel): native-feeling page and element transitions with React's View Transition API, without a library.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-animation" rel="noopener noreferrer"&gt;&lt;code&gt;expo-animation&lt;/code&gt;&lt;/a&gt; (official, Expo): animation decisions for React Native, including which thread an animation runs on and spring vs timing.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/remotion-dev/skills" rel="noopener noreferrer"&gt;remotion-dev/skills&lt;/a&gt; (official, Remotion): for video made in React code. &lt;a href="https://github.com/remotion-dev/skills/tree/main/skills/remotion-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;remotion-best-practices&lt;/code&gt;&lt;/a&gt; routes to the rest, including &lt;a href="https://github.com/remotion-dev/skills/tree/main/skills/remotion-create" rel="noopener noreferrer"&gt;&lt;code&gt;remotion-create&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/remotion-dev/skills/tree/main/skills/remotion-render" rel="noopener noreferrer"&gt;&lt;code&gt;remotion-render&lt;/code&gt;&lt;/a&gt;, captions and maps. If you've ever tried to turn a blog into an explainer video, this is the stack for it. I wrote about that format in &lt;a href="https://ihatereading.in/blogs/how-to-understand-llm-output-faster-four-formats-controlled-text-to-explainer-videos" rel="noopener noreferrer"&gt;understanding LLM output faster&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Testing frontend apps
&lt;/h2&gt;



&lt;p&gt;The most useful thing a skill can do is give the agent a browser and tell it to check its own work. "It compiles" and "it works" are different claims, and these skills close that gap.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/webapp-testing" rel="noopener noreferrer"&gt;&lt;code&gt;webapp-testing&lt;/code&gt;&lt;/a&gt; (official, Anthropic): a toolkit for testing local web apps with Playwright. It verifies frontend behavior, debugs UI, captures screenshots and reads browser logs. Use it after any UI change you'd otherwise check by hand.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/microsoft/playwright-cli/tree/main/skills/playwright-cli" rel="noopener noreferrer"&gt;&lt;code&gt;playwright-cli&lt;/code&gt;&lt;/a&gt; (official, Microsoft): browser automation and Playwright test work through Microsoft's Playwright CLI.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel/next.js/tree/canary/skills/next-dev-loop" rel="noopener noreferrer"&gt;&lt;code&gt;next-dev-loop&lt;/code&gt;&lt;/a&gt; (official, Next.js): the runtime check for Next.js apps, described above.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/antfu/skills/tree/main/skills/vitest" rel="noopener noreferrer"&gt;&lt;code&gt;vitest&lt;/code&gt;&lt;/a&gt; (community, Anthony Fu): unit tests, mocking and coverage.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-testing" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-testing&lt;/code&gt;&lt;/a&gt; (official, Clerk): end-to-end tests for auth flows with Playwright or Cypress, which is the part of an app most people skip testing.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/developer-essentials/skills/e2e-testing-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;e2e-testing-patterns&lt;/code&gt;&lt;/a&gt; (community, wshobson/agents): general Playwright and Cypress patterns for reliable suites.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/break-ui" rel="noopener noreferrer"&gt;&lt;code&gt;break-ui&lt;/code&gt;&lt;/a&gt; (community): not a test runner, but it finds the layout bugs real users will hit first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use this category when:&lt;/strong&gt; you've let an agent make UI changes across several files and you don't want to click through every screen yourself.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Authentication: Clerk, Better Auth, Firebase Auth, Neon Auth
&lt;/h2&gt;



&lt;p&gt;Auth is where outdated training data hurts most, because SDKs change their APIs and the old ones still look plausible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills" rel="noopener noreferrer"&gt;clerk/skills&lt;/a&gt;&lt;/strong&gt; (official, Clerk)&lt;/p&gt;

&lt;p&gt;Clerk has the most complete auth skill set I found, one skill per framework. Install the skills with &lt;code&gt;npx skills add clerk/skills&lt;/code&gt;, or the plugin (skills plus the Clerk MCP server) with &lt;code&gt;/plugin marketplace add clerk/skills&lt;/code&gt; and &lt;code&gt;/plugin install clerk@clerk-skills&lt;/code&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;What it covers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk" rel="noopener noreferrer"&gt;&lt;code&gt;clerk&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Router skill that sends Claude to the right Clerk skill&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-setup" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-setup&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Adding Clerk with the CLI and official quickstarts, or migrating from another auth system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-nextjs-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-nextjs-patterns&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Middleware, Server Actions and caching in Next.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-react-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-react-patterns&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;React SPAs on Vite or CRA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-tanstack-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-tanstack-patterns&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;TanStack React Start&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-astro-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-astro-patterns&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Astro middleware, SSR pages and islands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-expo" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-expo&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Expo and React Native with &lt;code&gt;@clerk/expo&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-orgs" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-orgs&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Organizations for B2B and multi-tenant apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-billing" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-billing&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Subscriptions with Clerk's PricingTable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-webhooks" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-webhooks&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Verified webhooks for syncing users to your database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-custom-ui" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-custom-ui&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Custom sign-in flows with hooks and appearance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-backend-api" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-backend-api&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Browsing and calling the Backend REST API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-testing" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-testing&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;E2E auth tests&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There are also skills for Nuxt, Vue, React Router, Chrome extensions, Android and Swift in the same folder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/better-auth/skills" rel="noopener noreferrer"&gt;better-auth/skills&lt;/a&gt;&lt;/strong&gt; (official, Better Auth)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/better-auth/skills/tree/main/better-auth/best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;best-practices&lt;/code&gt;&lt;/a&gt;: server and client config, database adapters, sessions, plugins and environment variables.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/better-auth/skills/tree/main/better-auth/create-auth" rel="noopener noreferrer"&gt;&lt;code&gt;create-auth&lt;/code&gt;&lt;/a&gt;: scaffolds auth into a TypeScript app, detecting the framework and adding route handlers, OAuth providers and UI pages.&lt;/li&gt;
&lt;li&gt;Plus focused skills for &lt;a href="https://github.com/better-auth/skills/tree/main/better-auth/emailAndPassword" rel="noopener noreferrer"&gt;&lt;code&gt;emailAndPassword&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/better-auth/skills/tree/main/better-auth/organization" rel="noopener noreferrer"&gt;&lt;code&gt;organization&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/better-auth/skills/tree/main/better-auth/twoFactor" rel="noopener noreferrer"&gt;&lt;code&gt;twoFactor&lt;/code&gt;&lt;/a&gt; and a &lt;a href="https://github.com/better-auth/skills/tree/main/security" rel="noopener noreferrer"&gt;&lt;code&gt;security&lt;/code&gt;&lt;/a&gt; skill.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Firebase and Neon&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-auth-basics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-auth-basics&lt;/code&gt;&lt;/a&gt; (official, Firebase): sign-in, user management and auth-aware security rules.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/neondatabase/agent-skills/tree/main/skills/neon-auth" rel="noopener noreferrer"&gt;&lt;code&gt;neon-auth&lt;/code&gt;&lt;/a&gt; (official, Neon): Neon Auth, which its skill describes as managed Better Auth, covering sign-up, magic links, OTP, OAuth, passkeys and organizations.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Payments and billing: Stripe, Dodo Payments, Polar
&lt;/h2&gt;



&lt;p&gt;All three payment providers I use have official skills, which says a lot about where integration work is heading. I'd treat these as mandatory before letting an agent touch money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/stripe/ai/tree/main/skills" rel="noopener noreferrer"&gt;stripe/ai&lt;/a&gt;&lt;/strong&gt; (official, Stripe)&lt;/p&gt;

&lt;p&gt;Install with &lt;code&gt;claude plugin install stripe@claude-plugins-official&lt;/code&gt;, or &lt;code&gt;npx skills add https://docs.stripe.com&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/stripe/ai/tree/main/skills/stripe-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;stripe-best-practices&lt;/code&gt;&lt;/a&gt;: the one to always have. It guides integration decisions: test environments (separate sandboxes or the shared test mode), Checkout Sessions vs PaymentIntents, Connect setup and more.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/stripe/ai/tree/main/skills/stripe-docs" rel="noopener noreferrer"&gt;&lt;code&gt;stripe-docs&lt;/code&gt;&lt;/a&gt;: reads and searches Stripe docs and API reference, including gated docs. Its description tells the agent to prefer it over curl or web fetches.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/stripe/ai/tree/main/skills/upgrade-stripe" rel="noopener noreferrer"&gt;&lt;code&gt;upgrade-stripe&lt;/code&gt;&lt;/a&gt;: upgrading API versions, webhook endpoints, server SDKs, Stripe.js and mobile SDKs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/stripe/ai/tree/main/skills/connect-recommend" rel="noopener noreferrer"&gt;&lt;code&gt;connect-recommend&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/stripe/ai/tree/main/skills/connect-required-verification-information" rel="noopener noreferrer"&gt;&lt;code&gt;connect-required-verification-information&lt;/code&gt;&lt;/a&gt;: for marketplaces and platforms on Connect.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/stripe/ai/tree/main/skills/metronome" rel="noopener noreferrer"&gt;&lt;code&gt;metronome&lt;/code&gt;&lt;/a&gt;: usage-based billing with Metronome (event ingestion, rate cards, invoicing).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/stripe/ai/tree/main/skills/stripe-apps" rel="noopener noreferrer"&gt;&lt;code&gt;stripe-apps&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/stripe/ai/tree/main/skills/stripe-projects" rel="noopener noreferrer"&gt;&lt;code&gt;stripe-projects&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/stripe/ai/tree/main/skills/stripe-directory" rel="noopener noreferrer"&gt;&lt;code&gt;stripe-directory&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/stripe/ai/tree/main/skills/stripe-pay" rel="noopener noreferrer"&gt;&lt;code&gt;stripe-pay&lt;/code&gt;&lt;/a&gt;: Dashboard extensions, provisioning services through Stripe Projects, and agent-side payments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/dodopayments/skills" rel="noopener noreferrer"&gt;dodopayments/skills&lt;/a&gt;&lt;/strong&gt; (official, Dodo Payments)&lt;/p&gt;

&lt;p&gt;Dodo Payments works as a merchant of record, so it acts as the seller and handles the tax side for you. Its &lt;a href="https://docs.dodopayments.com/developer-resources/agent-skills" rel="noopener noreferrer"&gt;agent skills page&lt;/a&gt; lists 18 skills, installed with &lt;code&gt;npx skills add dodopayments/skills&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start here:&lt;/strong&gt; &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/dodo-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;dodo-best-practices&lt;/code&gt;&lt;/a&gt; (SDK setup, keys, the checkout-to-webhook architecture) and &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/framework-adapters" rel="noopener noreferrer"&gt;&lt;code&gt;framework-adapters&lt;/code&gt;&lt;/a&gt; (official route handlers for Next.js, Express, Hono and others).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core flows:&lt;/strong&gt; &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/checkout-integration" rel="noopener noreferrer"&gt;&lt;code&gt;checkout-integration&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/subscription-integration" rel="noopener noreferrer"&gt;&lt;code&gt;subscription-integration&lt;/code&gt;&lt;/a&gt; (trials, plan changes, proration) and &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/webhook-integration" rel="noopener noreferrer"&gt;&lt;code&gt;webhook-integration&lt;/code&gt;&lt;/a&gt; (Standard Webhooks verification).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Billing models:&lt;/strong&gt; &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/usage-based-billing" rel="noopener noreferrer"&gt;&lt;code&gt;usage-based-billing&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/credit-based-billing" rel="noopener noreferrer"&gt;&lt;code&gt;credit-based-billing&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/license-keys" rel="noopener noreferrer"&gt;&lt;code&gt;license-keys&lt;/code&gt;&lt;/a&gt;. The credits one is the pattern most AI SaaS apps need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Going live:&lt;/strong&gt; &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/testing-and-go-live" rel="noopener noreferrer"&gt;&lt;code&gt;testing-and-go-live&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/refunds-and-disputes" rel="noopener noreferrer"&gt;&lt;code&gt;refunds-and-disputes&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extras:&lt;/strong&gt; &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/mobile-checkout" rel="noopener noreferrer"&gt;&lt;code&gt;mobile-checkout&lt;/code&gt;&lt;/a&gt; for React Native and Flutter, &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/localized-pricing" rel="noopener noreferrer"&gt;&lt;code&gt;localized-pricing&lt;/code&gt;&lt;/a&gt; for purchasing power parity, &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/billing-sdk" rel="noopener noreferrer"&gt;&lt;code&gt;billing-sdk&lt;/code&gt;&lt;/a&gt; for pricing table components and &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/better-auth-integration" rel="noopener noreferrer"&gt;&lt;code&gt;better-auth-integration&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/polarsource/skills" rel="noopener noreferrer"&gt;polarsource/skills&lt;/a&gt;&lt;/strong&gt; (official, Polar)&lt;/p&gt;

&lt;p&gt;Four focused skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/polarsource/skills/tree/main/skills/setup-polar" rel="noopener noreferrer"&gt;&lt;code&gt;setup-polar&lt;/code&gt;&lt;/a&gt;: an interactive onboarding wizard for adding Polar from scratch.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/polarsource/skills/tree/main/skills/polar-integration" rel="noopener noreferrer"&gt;&lt;code&gt;polar-integration&lt;/code&gt;&lt;/a&gt;: Checkout, Customer Portal and Webhooks endpoints with &lt;code&gt;@polar-sh/sdk&lt;/code&gt;, for any framework.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/polarsource/skills/blob/main/skills/polar-testing/SKILL.md" rel="noopener noreferrer"&gt;&lt;code&gt;polar-testing&lt;/code&gt;&lt;/a&gt;: testing in Polar's sandbox, including checkout flows without real payments and Stripe test cards.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/polarsource/skills/tree/main/skills/polar-migration" rel="noopener noreferrer"&gt;&lt;code&gt;polar-migration&lt;/code&gt;&lt;/a&gt;: moving from Stripe Billing, Paddle, Lemon Squeezy or Gumroad.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use this category when:&lt;/strong&gt; you're adding checkout, changing plans, or upgrading an SDK. And always run the provider's testing skill before you flip to live keys.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Databases, BaaS and PostgreSQL
&lt;/h2&gt;



&lt;h3&gt;
  
  
  Supabase
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/supabase/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;supabase/agent-skills&lt;/a&gt;&lt;/strong&gt; (official, Supabase) has only two skills, and both are broad:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/supabase/agent-skills/tree/main/skills/supabase" rel="noopener noreferrer"&gt;&lt;code&gt;supabase&lt;/code&gt;&lt;/a&gt;: for any Supabase task, covering Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron and Queues, plus &lt;code&gt;supabase-js&lt;/code&gt; and &lt;code&gt;@supabase/ssr&lt;/code&gt; in Next.js and other frameworks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/supabase/agent-skills/tree/main/skills/supabase-postgres-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;supabase-postgres-best-practices&lt;/code&gt;&lt;/a&gt;: Postgres best practices for Postgres running anywhere, not just on Supabase. It's meant to load before Claude creates or alters tables and columns. This is the best general Postgres skill I've found.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install both with &lt;code&gt;npx skills add supabase/agent-skills&lt;/code&gt;, or as plugins with &lt;code&gt;claude plugin marketplace add supabase/agent-skills&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Firebase
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/firebase/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;firebase/agent-skills&lt;/a&gt;&lt;/strong&gt; (official, Firebase). ihatereading.in runs on Firebase, so these are the ones I lean on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-basics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-basics&lt;/code&gt;&lt;/a&gt;: CLI install, login, project setup and app config.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-firestore" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-firestore&lt;/code&gt;&lt;/a&gt;: Firestore data modeling, queries, indexes and SDKs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firestore-rules-creation" rel="noopener noreferrer"&gt;&lt;code&gt;firestore-rules-creation&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-security-rules-auditor" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-security-rules-auditor&lt;/code&gt;&lt;/a&gt;: writing production security rules, then auditing them for privilege escalation, role bypasses and create-vs-update gaps. Run the auditor on any project an agent has touched.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-data-connect-basics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-data-connect-basics&lt;/code&gt;&lt;/a&gt;: Firebase's PostgreSQL-backed Data Connect.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-ai-logic-basics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-ai-logic-basics&lt;/code&gt;&lt;/a&gt;: calling Gemini models from client code.&lt;/li&gt;
&lt;li&gt;Also &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-hosting-basics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-hosting-basics&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-app-hosting-basics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-app-hosting-basics&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-remote-config-basics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-remote-config-basics&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-crashlytics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-crashlytics&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/extension-to-functions-codebase" rel="noopener noreferrer"&gt;&lt;code&gt;extension-to-functions-codebase&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My own &lt;a href="https://ihatereading.in/t/i-built-a-saas-starter-kit-so-you-dont-have-to-waste-4-weeks-on-setup" rel="noopener noreferrer"&gt;SaaS starter kit&lt;/a&gt; is built on Firebase, and these skills cover the setup work it involves: CLI, Firestore, rules and hosting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Neon and Prisma
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/neondatabase/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;neondatabase/agent-skills&lt;/a&gt; (official, Neon): &lt;a href="https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres" rel="noopener noreferrer"&gt;&lt;code&gt;neon-postgres&lt;/code&gt;&lt;/a&gt; (pooled vs direct connections, migrations, autoscaling, scale-to-zero), &lt;a href="https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-branches" rel="noopener noreferrer"&gt;&lt;code&gt;neon-postgres-branches&lt;/code&gt;&lt;/a&gt; (testing migrations on a copy of real data) and &lt;a href="https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizer" rel="noopener noreferrer"&gt;&lt;code&gt;neon-postgres-egress-optimizer&lt;/code&gt;&lt;/a&gt;, which hunts down code that pulls too much data out of the database and inflates your bill.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/prisma/skills" rel="noopener noreferrer"&gt;prisma/skills&lt;/a&gt; (official, Prisma): &lt;a href="https://github.com/prisma/skills/tree/main/prisma-orm-setup" rel="noopener noreferrer"&gt;&lt;code&gt;prisma-orm-setup&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/prisma/skills/tree/main/prisma-client-api" rel="noopener noreferrer"&gt;&lt;code&gt;prisma-client-api&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/prisma/skills/tree/main/prisma-cli" rel="noopener noreferrer"&gt;&lt;code&gt;prisma-cli&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/prisma/skills/tree/main/prisma-postgres" rel="noopener noreferrer"&gt;&lt;code&gt;prisma-postgres&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/prisma/skills/tree/main/prisma-upgrade-v7" rel="noopener noreferrer"&gt;&lt;code&gt;prisma-upgrade-v7&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  PostgreSQL in depth
&lt;/h3&gt;

&lt;p&gt;Beyond the vendor skills, three community skills go deeper into raw Postgres:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/database-design/skills/postgresql-table-design" rel="noopener noreferrer"&gt;&lt;code&gt;postgresql-table-design&lt;/code&gt;&lt;/a&gt; (wshobson/agents): schema design, data types, indexing, constraints and Postgres-specific features.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/developer-essentials/skills/sql-optimization-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;sql-optimization-patterns&lt;/code&gt;&lt;/a&gt; (wshobson/agents): query optimization, indexing strategy and reading &lt;code&gt;EXPLAIN&lt;/code&gt; output.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/postgres-pro" rel="noopener noreferrer"&gt;&lt;code&gt;postgres-pro&lt;/code&gt;&lt;/a&gt; (Jeffallan/claude-skills): &lt;code&gt;EXPLAIN&lt;/code&gt; analysis, JSONB, extensions, replication and &lt;code&gt;VACUUM&lt;/code&gt; tuning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;My Postgres combination:&lt;/strong&gt; &lt;code&gt;supabase-postgres-best-practices&lt;/code&gt; always on, &lt;code&gt;postgresql-table-design&lt;/code&gt; when designing a new schema, and &lt;code&gt;sql-optimization-patterns&lt;/code&gt; when something is slow.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Mobile: Expo and React Native
&lt;/h2&gt;



&lt;p&gt;Mobile has the richest official skill set of any category, because Expo went all in. If you build with React Native, this section is the reason to read this post.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expo
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills" rel="noopener noreferrer"&gt;expo/skills&lt;/a&gt;&lt;/strong&gt; (official, Expo). Install with &lt;code&gt;npx skills@latest add expo/skills --skill '*'&lt;/code&gt;, or as a plugin with &lt;code&gt;claude plugin install expo@claude-plugins-official&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Start with &lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-overview" rel="noopener noreferrer"&gt;&lt;code&gt;expo-overview&lt;/code&gt;&lt;/a&gt;. It's the entry point and router for every Expo and EAS task, and it's meant to load before Claude picks any other Expo skill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building the app&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-project-structure" rel="noopener noreferrer"&gt;&lt;code&gt;expo-project-structure&lt;/code&gt;&lt;/a&gt;: folder layout for a new Expo Router app. It's for new projects only.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-router" rel="noopener noreferrer"&gt;&lt;code&gt;expo-router&lt;/code&gt;&lt;/a&gt;: file-based routes, groups, dynamic routes, modals, form sheets, link previews and NativeTabs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-native-ui" rel="noopener noreferrer"&gt;&lt;code&gt;expo-native-ui&lt;/code&gt;&lt;/a&gt;: native-feeling screens with Apple HIG styling, semantic colors, SF Symbols and native controls.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-ui" rel="noopener noreferrer"&gt;&lt;code&gt;expo-ui&lt;/code&gt;&lt;/a&gt;: the &lt;code&gt;@expo/ui&lt;/code&gt; package, which renders real SwiftUI on iOS and Jetpack Compose on Android, for sheets, pickers, sliders, toggles and menus.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-design-system" rel="noopener noreferrer"&gt;&lt;code&gt;expo-design-system&lt;/code&gt;&lt;/a&gt;: design tokens and a reusable component structure inside an Expo app.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-data-fetching" rel="noopener noreferrer"&gt;&lt;code&gt;expo-data-fetching&lt;/code&gt;&lt;/a&gt;: any network request, with React Query, SWR, caching, offline support and loading, empty and error states.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-animation" rel="noopener noreferrer"&gt;&lt;code&gt;expo-animation&lt;/code&gt;&lt;/a&gt;: covered in the animation section.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-examples" rel="noopener noreferrer"&gt;&lt;code&gt;expo-examples&lt;/code&gt;&lt;/a&gt;: points the agent at Expo's roughly 70 official &lt;code&gt;with-*&lt;/code&gt; example projects (Stripe, Clerk, Supabase, OpenAI, maps, SQLite, Skia, NativeWind and more), so it copies a working integration instead of inventing one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Going native and migrating&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-module" rel="noopener noreferrer"&gt;&lt;code&gt;expo-module&lt;/code&gt;&lt;/a&gt;: writing native modules and views with the Expo Modules API in Swift and Kotlin.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-dom" rel="noopener noreferrer"&gt;&lt;code&gt;expo-dom&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-web-to-native" rel="noopener noreferrer"&gt;&lt;code&gt;expo-web-to-native&lt;/code&gt;&lt;/a&gt;: running web code inside native screens, and porting a whole Next.js, Vite or CRA app to iOS and Android.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-brownfield" rel="noopener noreferrer"&gt;&lt;code&gt;expo-brownfield&lt;/code&gt;&lt;/a&gt;: embedding React Native screens in an existing native app.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-upgrade" rel="noopener noreferrer"&gt;&lt;code&gt;expo-upgrade&lt;/code&gt;&lt;/a&gt;: SDK upgrades and dependency fixes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Shipping with EAS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/eas-app-stores" rel="noopener noreferrer"&gt;&lt;code&gt;eas-app-stores&lt;/code&gt;&lt;/a&gt;: build and submit to TestFlight, the App Store and Google Play.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/eas-update" rel="noopener noreferrer"&gt;&lt;code&gt;eas-update&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/eas-update-insights" rel="noopener noreferrer"&gt;&lt;code&gt;eas-update-insights&lt;/code&gt;&lt;/a&gt;: over-the-air updates, then crash rates and adoption per update.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/eas-workflows" rel="noopener noreferrer"&gt;&lt;code&gt;eas-workflows&lt;/code&gt;&lt;/a&gt;: CI/CD YAML in &lt;code&gt;.eas/workflows/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/eas-hosting" rel="noopener noreferrer"&gt;&lt;code&gt;eas-hosting&lt;/code&gt;&lt;/a&gt;: deploying Expo web builds and API routes.&lt;/li&gt;
&lt;li&gt;Plus &lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-dev-client" rel="noopener noreferrer"&gt;&lt;code&gt;expo-dev-client&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/eas-observe" rel="noopener noreferrer"&gt;&lt;code&gt;eas-observe&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/eas-simulator" rel="noopener noreferrer"&gt;&lt;code&gt;eas-simulator&lt;/code&gt;&lt;/a&gt; (cloud simulators, marked experimental) and &lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-app-clip" rel="noopener noreferrer"&gt;&lt;code&gt;expo-app-clip&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  React Native
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/callstackincubator/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;callstackincubator/agent-skills&lt;/a&gt; (from Callstack, the React Native consultancy): &lt;a href="https://github.com/callstackincubator/agent-skills/tree/main/skills/react-native-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;react-native-best-practices&lt;/code&gt;&lt;/a&gt; covers FPS, time to interactive, bundle size, memory leaks, re-renders and Hermes. &lt;a href="https://github.com/callstackincubator/agent-skills/tree/main/skills/upgrading-react-native" rel="noopener noreferrer"&gt;&lt;code&gt;upgrading-react-native&lt;/code&gt;&lt;/a&gt; applies template diffs and handles CocoaPods and Gradle changes, which is the most painful job in React Native. There's also &lt;a href="https://github.com/callstackincubator/agent-skills/tree/main/skills/react-navigation" rel="noopener noreferrer"&gt;&lt;code&gt;react-navigation&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/callstackincubator/agent-skills/tree/main/skills/create-react-native-library" rel="noopener noreferrer"&gt;&lt;code&gt;create-react-native-library&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/callstackincubator/agent-skills/tree/main/skills/github-actions" rel="noopener noreferrer"&gt;&lt;code&gt;github-actions&lt;/code&gt;&lt;/a&gt; for simulator and emulator CI builds, and brownfield migration skills.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/react-native-skills" rel="noopener noreferrer"&gt;&lt;code&gt;react-native-skills&lt;/code&gt;&lt;/a&gt; (official, Vercel): React Native and Expo performance, covering list performance, animations and native modules.&lt;/li&gt;
&lt;li&gt;Related skills from other sections: &lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-expo" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-expo&lt;/code&gt;&lt;/a&gt; for auth, Dodo's &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/mobile-checkout" rel="noopener noreferrer"&gt;&lt;code&gt;mobile-checkout&lt;/code&gt;&lt;/a&gt; for payments and Emil's &lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/animate-expo" rel="noopener noreferrer"&gt;&lt;code&gt;animate-expo&lt;/code&gt;&lt;/a&gt; for motion.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  9. AI, LLMs and deep learning
&lt;/h2&gt;



&lt;p&gt;This category splits in two: skills for building apps on top of models, and skills for training models.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenRouter (building on many models)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills" rel="noopener noreferrer"&gt;OpenRouterTeam/skills&lt;/a&gt;&lt;/strong&gt; (official, OpenRouter). I route most of my agents through OpenRouter, so this is the repo I check first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-typescript-sdk" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-typescript-sdk&lt;/code&gt;&lt;/a&gt;: the reference for calling 300+ models through the TypeScript SDK and the &lt;code&gt;callModel&lt;/code&gt; pattern.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-models" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-models&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-benchmarks" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-benchmarks&lt;/code&gt;&lt;/a&gt;: query live model pricing, context lengths and capabilities, and benchmark rankings. Use these instead of letting the agent guess model IDs from memory.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/create-headless-agent" rel="noopener noreferrer"&gt;&lt;code&gt;create-headless-agent&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/create-agent-tui" rel="noopener noreferrer"&gt;&lt;code&gt;create-agent-tui&lt;/code&gt;&lt;/a&gt;: scaffold an agent in TypeScript with &lt;code&gt;@openrouter/agent&lt;/code&gt;, either headless (CLIs, API servers, queue workers) or with a terminal UI.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-analytics" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-analytics&lt;/code&gt;&lt;/a&gt;: answers questions about your own spend, model mix, latency and tokens.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-oauth" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-oauth&lt;/code&gt;&lt;/a&gt;: "Sign In with OpenRouter" with OAuth PKCE, so users bring their own model credits.&lt;/li&gt;
&lt;li&gt;Media: &lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-images" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-images&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-video" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-video&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-tts" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-tts&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-stt" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-stt&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used OpenRouter for the &lt;a href="https://ihatereading.in/blogs/how-to-convert-blog-lists-into-instagram-carousels-nano-banana-openrouter" rel="noopener noreferrer"&gt;blog-to-carousel pipeline&lt;/a&gt;, and the images skill covers the same API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anthropic's own AI skills
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/claude-api" rel="noopener noreferrer"&gt;&lt;code&gt;claude-api&lt;/code&gt;&lt;/a&gt; (official, Anthropic): reference for the Claude API and Anthropic SDK, covering model IDs, streaming, tool use, MCP, caching and token counting.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/mcp-builder" rel="noopener noreferrer"&gt;&lt;code&gt;mcp-builder&lt;/code&gt;&lt;/a&gt; (official, Anthropic): a guide to building good MCP servers that give models well-designed tools.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/skill-creator" rel="noopener noreferrer"&gt;&lt;code&gt;skill-creator&lt;/code&gt;&lt;/a&gt; (official, Anthropic): creates and edits skills and runs evals on them. Use it to write your own skills for anything missing from this list.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hugging Face (training, evals and local models)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/huggingface/skills/tree/main/skills" rel="noopener noreferrer"&gt;huggingface/skills&lt;/a&gt;&lt;/strong&gt; (official, Hugging Face). Hugging Face wrote up &lt;a href="https://huggingface.co/blog/hf-skills-training" rel="noopener noreferrer"&gt;getting Claude to fine-tune an open-source LLM&lt;/a&gt; with these skills.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/huggingface/skills/tree/main/skills/huggingface-llm-trainer" rel="noopener noreferrer"&gt;&lt;code&gt;huggingface-llm-trainer&lt;/code&gt;&lt;/a&gt;: trains or fine-tunes language and vision models with TRL or Unsloth on Hugging Face Jobs, covering SFT, DPO, GRPO and reward modeling.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/huggingface/skills/tree/main/skills/trl-training" rel="noopener noreferrer"&gt;&lt;code&gt;trl-training&lt;/code&gt;&lt;/a&gt;: writing and debugging post-training code with TRL directly.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/huggingface/skills/tree/main/skills/huggingface-vision-trainer" rel="noopener noreferrer"&gt;&lt;code&gt;huggingface-vision-trainer&lt;/code&gt;&lt;/a&gt;: object detection and image classification fine-tuning.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/huggingface/skills/tree/main/skills/huggingface-community-evals" rel="noopener noreferrer"&gt;&lt;code&gt;huggingface-community-evals&lt;/code&gt;&lt;/a&gt;: evals with inspect-ai and lighteval on local hardware.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/huggingface/skills/tree/main/skills/huggingface-local-models" rel="noopener noreferrer"&gt;&lt;code&gt;huggingface-local-models&lt;/code&gt;&lt;/a&gt;: picking GGUF models and quantizations for llama.cpp on CPU, Mac Metal, CUDA or ROCm.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/huggingface/skills/tree/main/skills/transformers-js" rel="noopener noreferrer"&gt;&lt;code&gt;transformers-js&lt;/code&gt;&lt;/a&gt;: running models in JavaScript and the browser.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/huggingface/skills/tree/main/skills/huggingface-datasets" rel="noopener noreferrer"&gt;&lt;code&gt;huggingface-datasets&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/huggingface/skills/tree/main/skills/huggingface-gradio" rel="noopener noreferrer"&gt;&lt;code&gt;huggingface-gradio&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/huggingface/skills/tree/main/skills/huggingface-spaces" rel="noopener noreferrer"&gt;&lt;code&gt;huggingface-spaces&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/huggingface/skills/tree/main/skills/hf-cli" rel="noopener noreferrer"&gt;&lt;code&gt;hf-cli&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/huggingface/skills/tree/main/skills/huggingface-best" rel="noopener noreferrer"&gt;&lt;code&gt;huggingface-best&lt;/code&gt;&lt;/a&gt; for choosing a model by benchmark.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  LLM app patterns and fine-tuning theory (community)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/wshobson/agents" rel="noopener noreferrer"&gt;wshobson/agents&lt;/a&gt; has two plugin folders worth installing whole:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-application-dev/skills" rel="noopener noreferrer"&gt;&lt;code&gt;llm-application-dev&lt;/code&gt;&lt;/a&gt;:&lt;/strong&gt; &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-application-dev/skills/rag-implementation" rel="noopener noreferrer"&gt;&lt;code&gt;rag-implementation&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-application-dev/skills/embedding-strategies" rel="noopener noreferrer"&gt;&lt;code&gt;embedding-strategies&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-application-dev/skills/hybrid-search-implementation" rel="noopener noreferrer"&gt;&lt;code&gt;hybrid-search-implementation&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-application-dev/skills/llm-evaluation" rel="noopener noreferrer"&gt;&lt;code&gt;llm-evaluation&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-application-dev/skills/prompt-engineering-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;prompt-engineering-patterns&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-finetuning/skills" rel="noopener noreferrer"&gt;&lt;code&gt;llm-finetuning&lt;/code&gt;&lt;/a&gt;:&lt;/strong&gt; &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-finetuning/skills/finetuning-method-selection" rel="noopener noreferrer"&gt;&lt;code&gt;finetuning-method-selection&lt;/code&gt;&lt;/a&gt; starts by asking whether to fine-tune at all, then routes to SFT, DPO or GRPO. &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-finetuning/skills/lora-qlora-recipes" rel="noopener noreferrer"&gt;&lt;code&gt;lora-qlora-recipes&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-finetuning/skills/dataset-curation" rel="noopener noreferrer"&gt;&lt;code&gt;dataset-curation&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/llm-finetuning/skills/eval-harness-first" rel="noopener noreferrer"&gt;&lt;code&gt;eval-harness-first&lt;/code&gt;&lt;/a&gt; cover the rest.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/Jeffallan/claude-skills" rel="noopener noreferrer"&gt;Jeffallan/claude-skills&lt;/a&gt; adds &lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/rag-architect" rel="noopener noreferrer"&gt;&lt;code&gt;rag-architect&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/fine-tuning-expert" rel="noopener noreferrer"&gt;&lt;code&gt;fine-tuning-expert&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to understand what these skills are configuring under the hood, start with &lt;a href="https://ihatereading.in/blogs/how-large-language-models-work-tokens-attention-transformers" rel="noopener noreferrer"&gt;how large language models work&lt;/a&gt;, which walks through tokens, attention and transformers with code.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Servers and cloud functions: Hono, Express, Workers, Vercel
&lt;/h2&gt;



&lt;h3&gt;
  
  
  Hono
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/honojs/skills/tree/main/skills" rel="noopener noreferrer"&gt;honojs/skills&lt;/a&gt; (official, Hono): &lt;a href="https://github.com/honojs/skills/tree/main/skills/hono" rel="noopener noreferrer"&gt;&lt;code&gt;hono&lt;/code&gt;&lt;/a&gt; covers routing, middleware, validation, testing and streaming, and triggers whenever code imports from &lt;code&gt;hono&lt;/code&gt;. &lt;a href="https://github.com/honojs/skills/tree/main/skills/hono-jsx" rel="noopener noreferrer"&gt;&lt;code&gt;hono-jsx&lt;/code&gt;&lt;/a&gt; covers server-rendered UI with &lt;code&gt;hono/jsx&lt;/code&gt;, built with Vite.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hono is my default for small APIs. I once put &lt;a href="https://ihatereading.in/t/one-honojs-file-for-entire-web-scraping-api" rel="noopener noreferrer"&gt;an entire web scraping API in one Hono file&lt;/a&gt;, and that's exactly the kind of project the &lt;code&gt;hono&lt;/code&gt; skill is built for.&lt;/p&gt;

&lt;h3&gt;
  
  
  Express
&lt;/h3&gt;

&lt;p&gt;There's no official Express skill. Two good options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/javascript-typescript/skills/nodejs-backend-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;nodejs-backend-patterns&lt;/code&gt;&lt;/a&gt; (community, wshobson/agents): production Node.js services with Express or Fastify, covering middleware, error handling, auth, database integration and API design.&lt;/li&gt;
&lt;li&gt;Dodo's &lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/framework-adapters" rel="noopener noreferrer"&gt;&lt;code&gt;framework-adapters&lt;/code&gt;&lt;/a&gt; (official): if all you need is payment routes in Express or Hono, it has official route handlers for both.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloudflare Workers
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/cloudflare/skills/tree/main/skills" rel="noopener noreferrer"&gt;cloudflare/skills&lt;/a&gt;&lt;/strong&gt; (official, Cloudflare):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/cloudflare/skills/tree/main/skills/workers-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;workers-best-practices&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/cloudflare/skills/tree/main/skills/wrangler" rel="noopener noreferrer"&gt;&lt;code&gt;wrangler&lt;/code&gt;&lt;/a&gt;: writing Workers and running the Wrangler CLI.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cloudflare/skills/tree/main/skills/durable-objects" rel="noopener noreferrer"&gt;&lt;code&gt;durable-objects&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/cloudflare/skills/tree/main/skills/agents-sdk" rel="noopener noreferrer"&gt;&lt;code&gt;agents-sdk&lt;/code&gt;&lt;/a&gt;: stateful coordination and Cloudflare's Agents SDK.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cloudflare/skills/tree/main/skills/nextjs-on-cloudflare" rel="noopener noreferrer"&gt;&lt;code&gt;nextjs-on-cloudflare&lt;/code&gt;&lt;/a&gt;: running Next.js on Workers, including choosing between vinext and OpenNext.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cloudflare/skills/tree/main/skills/web-perf" rel="noopener noreferrer"&gt;&lt;code&gt;web-perf&lt;/code&gt;&lt;/a&gt;: Core Web Vitals and Lighthouse audits. It works on any site, not just Cloudflare ones.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Serverless functions on your BaaS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vercel:&lt;/strong&gt; &lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/deploy-to-vercel" rel="noopener noreferrer"&gt;&lt;code&gt;deploy-to-vercel&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/vercel-optimize" rel="noopener noreferrer"&gt;&lt;code&gt;vercel-optimize&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase Edge Functions:&lt;/strong&gt; covered by the main &lt;a href="https://github.com/supabase/agent-skills/tree/main/skills/supabase" rel="noopener noreferrer"&gt;&lt;code&gt;supabase&lt;/code&gt;&lt;/a&gt; skill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firebase:&lt;/strong&gt; &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-app-hosting-basics" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-app-hosting-basics&lt;/code&gt;&lt;/a&gt; for SSR apps, and &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/extension-to-functions-codebase" rel="noopener noreferrer"&gt;&lt;code&gt;extension-to-functions-codebase&lt;/code&gt;&lt;/a&gt; for converting Firebase Extensions into Cloud Functions code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neon:&lt;/strong&gt; &lt;a href="https://github.com/neondatabase/agent-skills/tree/main/skills/neon-functions" rel="noopener noreferrer"&gt;&lt;code&gt;neon-functions&lt;/code&gt;&lt;/a&gt; runs long-running Node.js HTTP functions on your Neon branch, with &lt;code&gt;DATABASE_URL&lt;/code&gt; injected automatically.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  11. Rust
&lt;/h2&gt;



&lt;p&gt;There's no official skill from the Rust project, but the community work here is serious.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/actionbook/rust-skills/tree/main/skills" rel="noopener noreferrer"&gt;actionbook/rust-skills&lt;/a&gt;&lt;/strong&gt; (community): the most thorough Rust set I found. It's organized as numbered modules that trigger on actual compiler errors. &lt;a href="https://github.com/actionbook/rust-skills/tree/main/skills/m01-ownership" rel="noopener noreferrer"&gt;&lt;code&gt;m01-ownership&lt;/code&gt;&lt;/a&gt; fires on borrow-checker errors like E0382 and E0597, &lt;a href="https://github.com/actionbook/rust-skills/tree/main/skills/m06-error-handling" rel="noopener noreferrer"&gt;&lt;code&gt;m06-error-handling&lt;/code&gt;&lt;/a&gt; covers &lt;code&gt;Result&lt;/code&gt;, &lt;code&gt;anyhow&lt;/code&gt; and &lt;code&gt;thiserror&lt;/code&gt;, and &lt;a href="https://github.com/actionbook/rust-skills/tree/main/skills/m07-concurrency" rel="noopener noreferrer"&gt;&lt;code&gt;m07-concurrency&lt;/code&gt;&lt;/a&gt; covers &lt;code&gt;Send&lt;/code&gt;/&lt;code&gt;Sync&lt;/code&gt;, channels, mutexes and Tokio. &lt;a href="https://github.com/actionbook/rust-skills/tree/main/skills/unsafe-checker" rel="noopener noreferrer"&gt;&lt;code&gt;unsafe-checker&lt;/code&gt;&lt;/a&gt; reviews unsafe code and FFI, and &lt;a href="https://github.com/actionbook/rust-skills/tree/main/skills/rust-router" rel="noopener noreferrer"&gt;&lt;code&gt;rust-router&lt;/code&gt;&lt;/a&gt; sends each question to the right module.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/trailofbits/skills" rel="noopener noreferrer"&gt;trailofbits/skills&lt;/a&gt;&lt;/strong&gt; (from Trail of Bits, the security firm): &lt;a href="https://github.com/trailofbits/skills/tree/main/plugins/rust-review/skills/rust-review" rel="noopener noreferrer"&gt;&lt;code&gt;rust-review&lt;/code&gt;&lt;/a&gt; is a security review covering unsafe boundaries, concurrency hazards, panics that can cause denial of service, and FFI safety. The same repo has &lt;a href="https://github.com/trailofbits/skills/tree/main/plugins/testing-handbook-skills/skills/cargo-fuzz" rel="noopener noreferrer"&gt;&lt;code&gt;cargo-fuzz&lt;/code&gt;&lt;/a&gt; for fuzzing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/systems-programming/skills" rel="noopener noreferrer"&gt;wshobson/agents&lt;/a&gt;&lt;/strong&gt; (community): &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/systems-programming/skills/rust-async-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;rust-async-patterns&lt;/code&gt;&lt;/a&gt; for Tokio and async traits, and &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/systems-programming/skills/memory-safety-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;memory-safety-patterns&lt;/code&gt;&lt;/a&gt; for RAII, ownership and smart pointers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/rust-engineer" rel="noopener noreferrer"&gt;&lt;code&gt;rust-engineer&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; (community, Jeffallan/claude-skills): a general-purpose skill for idiomatic Rust, lifetimes, traits and async with Tokio.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;My suggestion:&lt;/strong&gt; install &lt;code&gt;rust-router&lt;/code&gt; plus the numbered modules if you're learning, and add &lt;code&gt;rust-review&lt;/code&gt; before anything with &lt;code&gt;unsafe&lt;/code&gt; goes to production.&lt;/p&gt;




&lt;h2&gt;
  
  
  12. System design and API design
&lt;/h2&gt;



&lt;p&gt;These skills don't write features. They make the agent think before it writes them, which is where most expensive mistakes happen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API design&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/backend-development/skills/api-design-principles" rel="noopener noreferrer"&gt;&lt;code&gt;api-design-principles&lt;/code&gt;&lt;/a&gt; (community, wshobson/agents): REST and GraphQL design for new APIs and spec reviews.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/api-designer" rel="noopener noreferrer"&gt;&lt;code&gt;api-designer&lt;/code&gt;&lt;/a&gt; (community, Jeffallan/claude-skills): resource modeling, versioning, pagination and error-handling standards, plus OpenAPI specs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/documentation-generation/skills/openapi-spec-generation" rel="noopener noreferrer"&gt;&lt;code&gt;openapi-spec-generation&lt;/code&gt;&lt;/a&gt; (community, wshobson/agents): OpenAPI 3.1 specs from code or design-first, for docs and SDK generation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;System design and architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/architecture-designer" rel="noopener noreferrer"&gt;&lt;code&gt;architecture-designer&lt;/code&gt;&lt;/a&gt; (community, Jeffallan/claude-skills): high-level architecture, diagrams and Architecture Decision Records.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/backend-development/skills/architecture-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;architecture-patterns&lt;/code&gt;&lt;/a&gt; (community, wshobson/agents): Clean Architecture, Hexagonal Architecture and Domain-Driven Design.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/backend-development/skills/microservices-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;microservices-patterns&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/microservices-architect" rel="noopener noreferrer"&gt;&lt;code&gt;microservices-architect&lt;/code&gt;&lt;/a&gt;: service boundaries, event-driven communication, resilience, and breaking up a monolith.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/backend-development/skills/cqrs-implementation" rel="noopener noreferrer"&gt;&lt;code&gt;cqrs-implementation&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/backend-development/skills/saga-orchestration" rel="noopener noreferrer"&gt;&lt;code&gt;saga-orchestration&lt;/code&gt;&lt;/a&gt;: separate read and write models, and distributed transactions without two-phase commit.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/observability-monitoring/skills/distributed-tracing" rel="noopener noreferrer"&gt;&lt;code&gt;distributed-tracing&lt;/code&gt;&lt;/a&gt;: tracing requests across services with Jaeger and Tempo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A fair warning: for a solo project, most of these will push you toward more architecture than you need. Use them to review a design, not to generate one. A monolith on one server gets you further than people think.&lt;/p&gt;




&lt;h2&gt;
  
  
  13. Docker and Kubernetes
&lt;/h2&gt;



&lt;h3&gt;
  
  
  Docker
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/docker/skills/tree/main/skills" rel="noopener noreferrer"&gt;docker/skills&lt;/a&gt;&lt;/strong&gt; (official, Docker):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/docker/skills/tree/main/skills/docker-build-strategies" rel="noopener noreferrer"&gt;&lt;code&gt;docker-build-strategies&lt;/code&gt;&lt;/a&gt;: writing and optimizing Dockerfiles, including multi-stage builds, smaller images, faster builds and production hardening.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/docker/skills/tree/main/skills/docker-compose-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;docker-compose-patterns&lt;/code&gt;&lt;/a&gt;: wiring services together and adding a database to local dev.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/docker/skills/tree/main/skills/docker-project-foundations" rel="noopener noreferrer"&gt;&lt;code&gt;docker-project-foundations&lt;/code&gt;&lt;/a&gt;: Dockerizing a project from scratch.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/docker/skills/tree/main/skills/docker-destructive-guardrails" rel="noopener noreferrer"&gt;&lt;code&gt;docker-destructive-guardrails&lt;/code&gt;&lt;/a&gt;: loads before any command that deletes or resets state. This is the one I'd insist on, because "clean up Docker" is how agents wipe volumes.&lt;/li&gt;
&lt;li&gt;Docker's agent tooling: &lt;a href="https://github.com/docker/skills/tree/main/skills/docker-agent-config" rel="noopener noreferrer"&gt;&lt;code&gt;docker-agent-config&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/docker/skills/tree/main/skills/docker-agent-run" rel="noopener noreferrer"&gt;&lt;code&gt;docker-agent-run&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/docker/skills/tree/main/skills/docker-agent-deploy" rel="noopener noreferrer"&gt;&lt;code&gt;docker-agent-deploy&lt;/code&gt;&lt;/a&gt;, and the &lt;a href="https://github.com/docker/skills/tree/main/skills/docker-sandboxes-lifecycle" rel="noopener noreferrer"&gt;&lt;code&gt;docker-sandboxes-lifecycle&lt;/code&gt;&lt;/a&gt; family for running coding agents in isolated microVMs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sandboxes for agents are a whole topic of their own. I covered the wider space in &lt;a href="https://ihatereading.in/t/companys-building-ai-agent-sandbox-sdks-and-apis" rel="noopener noreferrer"&gt;AI agent sandbox SDKs and APIs&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes
&lt;/h3&gt;

&lt;p&gt;No official Kubernetes skill exists that I could find, and Kubernetes is where model hallucinations are most dangerous: deprecated API versions, missing resource limits, privileged pods.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/LukasNiessen/kubernetes-skill" rel="noopener noreferrer"&gt;LukasNiessen/kubernetes-skill&lt;/a&gt; (community): a single &lt;a href="https://github.com/LukasNiessen/kubernetes-skill/blob/main/SKILL.md" rel="noopener noreferrer"&gt;&lt;code&gt;SKILL.md&lt;/code&gt;&lt;/a&gt; built to stop exactly those mistakes: insecure workload defaults, resource starvation, network exposure, privilege sprawl, fragile rollouts and API drift.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/kubernetes-operations/skills" rel="noopener noreferrer"&gt;&lt;code&gt;kubernetes-operations&lt;/code&gt;&lt;/a&gt; (community, wshobson/agents): &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/kubernetes-operations/skills/k8s-manifest-generator" rel="noopener noreferrer"&gt;&lt;code&gt;k8s-manifest-generator&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/kubernetes-operations/skills/k8s-security-policies" rel="noopener noreferrer"&gt;&lt;code&gt;k8s-security-policies&lt;/code&gt;&lt;/a&gt; (NetworkPolicy and RBAC), &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/kubernetes-operations/skills/helm-chart-scaffolding" rel="noopener noreferrer"&gt;&lt;code&gt;helm-chart-scaffolding&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/kubernetes-operations/skills/gitops-workflow" rel="noopener noreferrer"&gt;&lt;code&gt;gitops-workflow&lt;/code&gt;&lt;/a&gt; with Argo CD and Flux.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/kubernetes-specialist" rel="noopener noreferrer"&gt;&lt;code&gt;kubernetes-specialist&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/devops-engineer" rel="noopener noreferrer"&gt;&lt;code&gt;devops-engineer&lt;/code&gt;&lt;/a&gt; (community, Jeffallan/claude-skills): manifests, pod debugging, CI/CD and Terraform.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  14. Email, SMS and WhatsApp
&lt;/h2&gt;



&lt;p&gt;Every SaaS sends email eventually: a magic link, a receipt, a weekly digest. Agents can write the send call easily. What they get wrong is deliverability, which is why these skills spend so much time on DNS records and spam rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/resend/resend-skills/tree/main/skills" rel="noopener noreferrer"&gt;resend/resend-skills&lt;/a&gt;&lt;/strong&gt; (official, Resend). Install with &lt;code&gt;npx skills add resend/resend-skills&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/resend/resend-skills/tree/main/skills/resend" rel="noopener noreferrer"&gt;&lt;code&gt;resend&lt;/code&gt;&lt;/a&gt;: the Resend email API, covering transactional sends (single and batch), inbound email through webhooks, templates, delivery events and domains.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/resend/resend-skills/tree/main/skills/react-email" rel="noopener noreferrer"&gt;&lt;code&gt;react-email&lt;/code&gt;&lt;/a&gt;: building HTML email templates with React components, rendering them to HTML, and adding React Email's visual editor to your own app.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/resend/resend-skills/tree/main/skills/email-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;email-best-practices&lt;/code&gt;&lt;/a&gt;: the deliverability skill, covering emails landing in spam, bounce rates, SPF, DKIM and DMARC setup, and compliance with CAN-SPAM, GDPR and CASL. Run it before your first real send.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/resend/resend-skills/tree/main/skills/agent-email-inbox" rel="noopener noreferrer"&gt;&lt;code&gt;agent-email-inbox&lt;/code&gt;&lt;/a&gt;: for systems where incoming email triggers actions, such as AI support inboxes or email-to-task pipelines. Its description treats inbound email as untrusted input, which is the right default for anything an agent reads.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/resend/resend-skills/tree/main/skills/resend-cli" rel="noopener noreferrer"&gt;&lt;code&gt;resend-cli&lt;/code&gt;&lt;/a&gt;: running Resend from the terminal (sends, domains, broadcasts, webhooks, logs).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/twilio/skills/tree/main/skills" rel="noopener noreferrer"&gt;twilio/skills&lt;/a&gt;&lt;/strong&gt; (official, Twilio)&lt;/p&gt;

&lt;p&gt;Twilio's repo is huge, with around 50 skills across Twilio and SendGrid. The ones most indie products need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/twilio/skills/tree/main/skills/twilio/twilio-messaging-overview" rel="noopener noreferrer"&gt;&lt;code&gt;twilio-messaging-overview&lt;/code&gt;&lt;/a&gt;: start here. It compares SMS, WhatsApp, RCS and Messenger, and covers the unified Messages API.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/twilio/skills/tree/main/skills/twilio/twilio-verify-send-otp" rel="noopener noreferrer"&gt;&lt;code&gt;twilio-verify-send-otp&lt;/code&gt;&lt;/a&gt;: one-time passcodes over SMS, voice, email or WhatsApp with Twilio Verify. This is the right way to do phone login, instead of building OTP storage yourself.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/twilio/skills/tree/main/skills/twilio/twilio-whatsapp-send-message" rel="noopener noreferrer"&gt;&lt;code&gt;twilio-whatsapp-send-message&lt;/code&gt;&lt;/a&gt;: WhatsApp's 24-hour service window, template approval and sandbox testing. WhatsApp is how a lot of Indian businesses actually talk to customers, so this one matters if you build for them.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/twilio/skills/tree/main/skills/twilio/twilio-sms-send-message" rel="noopener noreferrer"&gt;&lt;code&gt;twilio-sms-send-message&lt;/code&gt;&lt;/a&gt;: SMS and MMS error codes, and a checklist for messages being filtered or blocked.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/twilio/skills/tree/main/skills/twilio/twilio-webhook-architecture" rel="noopener noreferrer"&gt;&lt;code&gt;twilio-webhook-architecture&lt;/code&gt;&lt;/a&gt;: inbound events, status callbacks and signature validation.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/twilio/skills/tree/main/skills/sendgrid/twilio-sendgrid-email-send" rel="noopener noreferrer"&gt;&lt;code&gt;twilio-sendgrid-email-send&lt;/code&gt;&lt;/a&gt;: transactional and bulk email through SendGrid, if you're on SendGrid instead of Resend.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  15. Voice AI and audio
&lt;/h2&gt;



&lt;p&gt;Voice agents are one of the fastest-moving areas right now, which makes official skills more valuable than usual. Model names, latency settings and pricing change month to month. I compared the main platforms in &lt;a href="https://ihatereading.in/blogs/ai-voice-agents-for-smb-receptionists-vapi-vs-retell-vs-elevenlabs" rel="noopener noreferrer"&gt;AI voice agents for SMB receptionists&lt;/a&gt;, and looked at a real use case in &lt;a href="https://ihatereading.in/blogs/ai-agents-for-recruiting-how-voice-first-sourcing-is-replacing-boolean-search" rel="noopener noreferrer"&gt;voice-first recruiting&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/elevenlabs/skills" rel="noopener noreferrer"&gt;elevenlabs/skills&lt;/a&gt;&lt;/strong&gt; (official, ElevenLabs). Install with &lt;code&gt;npx skills add elevenlabs/skills&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/elevenlabs/skills/tree/main/agents" rel="noopener noreferrer"&gt;&lt;code&gt;agents&lt;/code&gt;&lt;/a&gt;: building voice AI agents, such as voice assistants, customer service bots and interactive characters.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/elevenlabs/skills/tree/main/speech-engine" rel="noopener noreferrer"&gt;&lt;code&gt;speech-engine&lt;/code&gt;&lt;/a&gt;: adding real-time voice conversations to your own agent runtime, with WebSocket and WebRTC clients.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/elevenlabs/skills/tree/main/text-to-speech" rel="noopener noreferrer"&gt;&lt;code&gt;text-to-speech&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/elevenlabs/skills/tree/main/speech-to-text" rel="noopener noreferrer"&gt;&lt;code&gt;speech-to-text&lt;/code&gt;&lt;/a&gt;: voiceovers in 90+ languages, and transcription and subtitles with Scribe v2.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/elevenlabs/skills/tree/main/dubbing" rel="noopener noreferrer"&gt;&lt;code&gt;dubbing&lt;/code&gt;&lt;/a&gt;: translating audio and video while keeping the original speakers' voices.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/elevenlabs/skills/tree/main/music" rel="noopener noreferrer"&gt;&lt;code&gt;music&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/elevenlabs/skills/tree/main/sound-effects" rel="noopener noreferrer"&gt;&lt;code&gt;sound-effects&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/elevenlabs/skills/tree/main/voice-changer" rel="noopener noreferrer"&gt;&lt;code&gt;voice-changer&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/elevenlabs/skills/tree/main/voice-isolator" rel="noopener noreferrer"&gt;&lt;code&gt;voice-isolator&lt;/code&gt;&lt;/a&gt;: generated music and sound, voice conversion and noise removal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/livekit/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;livekit/agent-skills&lt;/a&gt;&lt;/strong&gt; (official, LiveKit)&lt;/p&gt;

&lt;p&gt;LiveKit's set is the most complete lifecycle for voice agents I found, from build to production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/livekit/agent-skills/tree/main/skills/building-livekit-agents" rel="noopener noreferrer"&gt;&lt;code&gt;building-livekit-agents&lt;/code&gt;&lt;/a&gt;: voice and chat agents with LiveKit Agents and LiveKit Cloud.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/livekit/agent-skills/tree/main/skills/reading-livekit-docs" rel="noopener noreferrer"&gt;&lt;code&gt;reading-livekit-docs&lt;/code&gt;&lt;/a&gt;: looks up current API signatures, CLI flags and model support instead of answering from memory.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/livekit/agent-skills/tree/main/skills/testing-livekit-agents" rel="noopener noreferrer"&gt;&lt;code&gt;testing-livekit-agents&lt;/code&gt;&lt;/a&gt;: turn-level tests in pytest or Vitest.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/livekit/agent-skills/tree/main/skills/writing-livekit-scenarios" rel="noopener noreferrer"&gt;&lt;code&gt;writing-livekit-scenarios&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/livekit/agent-skills/tree/main/skills/running-livekit-simulations" rel="noopener noreferrer"&gt;&lt;code&gt;running-livekit-simulations&lt;/code&gt;&lt;/a&gt;: simulated conversations to regression-test an agent before deploying.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/livekit/agent-skills/tree/main/skills/debugging-livekit-agents" rel="noopener noreferrer"&gt;&lt;code&gt;debugging-livekit-agents&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/livekit/agent-skills/tree/main/skills/operating-livekit-agents" rel="noopener noreferrer"&gt;&lt;code&gt;operating-livekit-agents&lt;/code&gt;&lt;/a&gt;: live debugging with &lt;code&gt;lk agent debugger&lt;/code&gt;, then deploys, rollbacks and secrets in production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Also in this space:&lt;/strong&gt; Twilio's &lt;a href="https://github.com/twilio/skills/tree/main/skills/twilio/twilio-voice-conversation-relay" rel="noopener noreferrer"&gt;&lt;code&gt;twilio-voice-conversation-relay&lt;/code&gt;&lt;/a&gt; for AI voice agents over phone calls, and OpenRouter's &lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-tts" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-tts&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-stt" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-stt&lt;/code&gt;&lt;/a&gt; if you'd rather keep one AI provider.&lt;/p&gt;




&lt;h2&gt;
  
  
  16. Web scraping and browser automation
&lt;/h2&gt;



&lt;p&gt;Scraping is half of what I build: lead lists, trend trackers, the research agents behind this blog. I've written about &lt;a href="https://ihatereading.in/t/firerawl-vs-scrapingbee-vs-scrapingapi-vs-ihatereading-scrapefast" rel="noopener noreferrer"&gt;how the scraping APIs compare&lt;/a&gt; and about &lt;a href="https://ihatereading.in/blogs/from-finding-clients-to-a-smart-saas-ai-scraping-agent-dashboard" rel="noopener noreferrer"&gt;the agent dashboard we run our scrapers from&lt;/a&gt;. These skills are the agent-side version of that work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/firecrawl/skills/tree/main/skills" rel="noopener noreferrer"&gt;firecrawl/skills&lt;/a&gt;&lt;/strong&gt; (official, Firecrawl). Install with &lt;code&gt;npx skills add firecrawl/skills&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The repo is split three ways, which is a nice pattern for any skill repo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Core (do it now):&lt;/strong&gt; &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/core/firecrawl" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl&lt;/code&gt;&lt;/a&gt; handles any live-web task through the Firecrawl CLI. The focused ones are &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/core/firecrawl-search" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-search&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/core/firecrawl-scrape" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-scrape&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/core/firecrawl-map" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-map&lt;/code&gt;&lt;/a&gt; (list a site's URLs), &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/core/firecrawl-crawl" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-crawl&lt;/code&gt;&lt;/a&gt; (everything under &lt;code&gt;/docs&lt;/code&gt;) and &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/core/firecrawl-agent" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-agent&lt;/code&gt;&lt;/a&gt;, which navigates sites on its own to extract structured data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build (put it in your product):&lt;/strong&gt; &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/build/firecrawl-build" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-build&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/build/firecrawl-build-scrape" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-build-scrape&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/build/firecrawl-build-search" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-build-search&lt;/code&gt;&lt;/a&gt; integrate Firecrawl into your app's code rather than running it once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflows (finished jobs):&lt;/strong&gt; &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/workflows/firecrawl-lead-gen" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-lead-gen&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/workflows/firecrawl-lead-research" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-lead-research&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/workflows/firecrawl-deep-research" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-deep-research&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/workflows/firecrawl-market-research" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-market-research&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/workflows/firecrawl-seo-audit" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-seo-audit&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/workflows/firecrawl-website-design-clone" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-website-design-clone&lt;/code&gt;&lt;/a&gt;, which extracts any site's colors, fonts and spacing into a &lt;code&gt;DESIGN.md&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/browserbase/skills/tree/main/skills" rel="noopener noreferrer"&gt;browserbase/skills&lt;/a&gt;&lt;/strong&gt; (official, Browserbase). Install with &lt;code&gt;npx skills add browserbase/skills&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/browserbase/skills/tree/main/skills/browser" rel="noopener noreferrer"&gt;&lt;code&gt;browser&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/browserbase/skills/tree/main/skills/fetch" rel="noopener noreferrer"&gt;&lt;code&gt;fetch&lt;/code&gt;&lt;/a&gt;: drive a browser with natural language through a CLI, or grab a URL without a full browser session.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/browserbase/skills/tree/main/skills/functions" rel="noopener noreferrer"&gt;&lt;code&gt;functions&lt;/code&gt;&lt;/a&gt;: deploy browser automation as serverless cloud functions on a schedule or webhook.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/browserbase/skills/tree/main/skills/browser-to-api" rel="noopener noreferrer"&gt;&lt;code&gt;browser-to-api&lt;/code&gt;&lt;/a&gt;: turns a site's network traffic into a best-effort OpenAPI spec, which is often better than scraping HTML.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/browserbase/skills/tree/main/skills/ui-test" rel="noopener noreferrer"&gt;&lt;code&gt;ui-test&lt;/code&gt;&lt;/a&gt;: adversarial UI testing that reads your git diff and tests only what changed.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/browserbase/skills/tree/main/skills/add-webmcp" rel="noopener noreferrer"&gt;&lt;code&gt;add-webmcp&lt;/code&gt;&lt;/a&gt;: adds WebMCP tools to your own web app so agents can use it properly. If WebMCP is new to you, start with &lt;a href="https://ihatereading.in/blogs/webmcp-explained-through-a-sweet-shop" rel="noopener noreferrer"&gt;the sweet shop explainer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/browserbase/skills/tree/main/skills/safe-browser" rel="noopener noreferrer"&gt;&lt;code&gt;safe-browser&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/browserbase/skills/tree/main/skills/autobrowse" rel="noopener noreferrer"&gt;&lt;code&gt;autobrowse&lt;/code&gt;&lt;/a&gt;: a browser agent restricted to an allowlist of domains, and a loop that improves a browsing strategy until a task reliably passes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/vercel-labs/agent-browser" rel="noopener noreferrer"&gt;vercel-labs/agent-browser&lt;/a&gt;&lt;/strong&gt; (official, Vercel Labs)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-browser/tree/main/skills/agent-browser" rel="noopener noreferrer"&gt;&lt;code&gt;agent-browser&lt;/code&gt;&lt;/a&gt;: a browser automation CLI built for agents, covering navigation, forms, clicks, screenshots and extraction.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vercel-labs/agent-browser/tree/main/skill-data/dogfood" rel="noopener noreferrer"&gt;&lt;code&gt;dogfood&lt;/code&gt;&lt;/a&gt;: exploratory QA. It explores your app hunting for bugs and UX issues, which pairs well with the testing skills in section 4.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  17. Analytics, feature flags and error tracking
&lt;/h2&gt;



&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/PostHog/skills" rel="noopener noreferrer"&gt;PostHog/skills&lt;/a&gt;&lt;/strong&gt; (official, PostHog)&lt;/p&gt;

&lt;p&gt;PostHog has the largest single skill repo in this post: 339 &lt;code&gt;SKILL.md&lt;/code&gt; files when I counted, though some are packaged copies of the same skill. Most of them drive PostHog through its MCP server to analyze data, but the ones that matter most while you build are the instrumentation skills. Install with &lt;code&gt;/plugin marketplace add PostHog/skills&lt;/code&gt;, then pick plugins such as &lt;code&gt;posthog-integration&lt;/code&gt; or &lt;code&gt;posthog-feature-flags&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/instrument-product-analytics" rel="noopener noreferrer"&gt;&lt;code&gt;instrument-product-analytics&lt;/code&gt;&lt;/a&gt;: adds analytics events for meaningful user actions. It's meant to run after you build a feature or review a PR.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/instrument-error-tracking" rel="noopener noreferrer"&gt;&lt;code&gt;instrument-error-tracking&lt;/code&gt;&lt;/a&gt;: exception capture with stack traces.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/instrument-feature-flags" rel="noopener noreferrer"&gt;&lt;code&gt;instrument-feature-flags&lt;/code&gt;&lt;/a&gt;: wraps new functionality in flags for safe rollouts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/instrument-llm-analytics" rel="noopener noreferrer"&gt;&lt;code&gt;instrument-llm-analytics&lt;/code&gt;&lt;/a&gt;: traces every LLM generation with token counts. Pair it with &lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/exploring-llm-costs" rel="noopener noreferrer"&gt;&lt;code&gt;exploring-llm-costs&lt;/code&gt;&lt;/a&gt; to see spend by model, user or feature.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/creating-experiments" rel="noopener noreferrer"&gt;&lt;code&gt;creating-experiments&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/creating-surveys" rel="noopener noreferrer"&gt;&lt;code&gt;creating-surveys&lt;/code&gt;&lt;/a&gt;: A/B tests, and NPS or feedback surveys.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/investigating-error-issue" rel="noopener noreferrer"&gt;&lt;code&gt;investigating-error-issue&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/cleaning-up-stale-feature-flags" rel="noopener noreferrer"&gt;&lt;code&gt;cleaning-up-stale-feature-flags&lt;/code&gt;&lt;/a&gt;: debugging one error end to end, and removing old flags and the code that checks them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The habit worth stealing:&lt;/strong&gt; these instrumentation skills describe themselves as things to run after a feature is built. Put "run instrument-product-analytics and instrument-error-tracking" at the end of your feature checklist and every feature ships with tracking already in place.&lt;/p&gt;




&lt;h2&gt;
  
  
  18. More databases, caching and queues
&lt;/h2&gt;



&lt;p&gt;Section 7 covered Postgres and the big BaaS platforms. Every one of these also has an official skill repo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Convex:&lt;/strong&gt; &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;get-convex/agent-skills&lt;/a&gt; (official). Over 30 skills. Start with &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills/convex" rel="noopener noreferrer"&gt;&lt;code&gt;convex&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills/convex-quickstart" rel="noopener noreferrer"&gt;&lt;code&gt;convex-quickstart&lt;/code&gt;&lt;/a&gt;. Before launch, run &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills/convex-reviewer" rel="noopener noreferrer"&gt;&lt;code&gt;convex-reviewer&lt;/code&gt;&lt;/a&gt; for security, auth and validator checks, and &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills/convex-launch-readiness" rel="noopener noreferrer"&gt;&lt;code&gt;convex-launch-readiness&lt;/code&gt;&lt;/a&gt;, which its description calls "Lighthouse for your backend." There are also skills for &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills/convex-auth" rel="noopener noreferrer"&gt;&lt;code&gt;convex-auth&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills/convex-crons" rel="noopener noreferrer"&gt;&lt;code&gt;convex-crons&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills/convex-migrate" rel="noopener noreferrer"&gt;&lt;code&gt;convex-migrate&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/get-convex/agent-skills/tree/main/skills/convex-test" rel="noopener noreferrer"&gt;&lt;code&gt;convex-test&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MongoDB:&lt;/strong&gt; &lt;a href="https://github.com/mongodb/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;mongodb/agent-skills&lt;/a&gt; (official). &lt;a href="https://github.com/mongodb/agent-skills/tree/main/skills/mongodb-schema-design" rel="noopener noreferrer"&gt;&lt;code&gt;mongodb-schema-design&lt;/code&gt;&lt;/a&gt; covers patterns and anti-patterns, including migrating from SQL. &lt;a href="https://github.com/mongodb/agent-skills/tree/main/skills/mongodb-query-optimizer" rel="noopener noreferrer"&gt;&lt;code&gt;mongodb-query-optimizer&lt;/code&gt;&lt;/a&gt; handles indexing and slow queries, &lt;a href="https://github.com/mongodb/agent-skills/tree/main/skills/mongodb-connection" rel="noopener noreferrer"&gt;&lt;code&gt;mongodb-connection&lt;/code&gt;&lt;/a&gt; handles pools and timeouts, and &lt;a href="https://github.com/mongodb/agent-skills/tree/main/skills/mongodb-search-and-ai" rel="noopener noreferrer"&gt;&lt;code&gt;mongodb-search-and-ai&lt;/code&gt;&lt;/a&gt; covers Atlas full-text, vector and hybrid search.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redis:&lt;/strong&gt; &lt;a href="https://github.com/redis/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;redis/agent-skills&lt;/a&gt; (official). &lt;a href="https://github.com/redis/agent-skills/tree/main/skills/redis-core" rel="noopener noreferrer"&gt;&lt;code&gt;redis-core&lt;/code&gt;&lt;/a&gt; picks the right data structure and key naming. &lt;a href="https://github.com/redis/agent-skills/tree/main/skills/redis-connections" rel="noopener noreferrer"&gt;&lt;code&gt;redis-connections&lt;/code&gt;&lt;/a&gt; covers pooling, pipelining and avoiding slow commands like &lt;code&gt;KEYS&lt;/code&gt;. &lt;a href="https://github.com/redis/agent-skills/tree/main/skills/redis-semantic-cache" rel="noopener noreferrer"&gt;&lt;code&gt;redis-semantic-cache&lt;/code&gt;&lt;/a&gt; caches LLM responses by meaning, which cuts repeat LLM calls for similar questions. &lt;a href="https://github.com/redis/agent-skills/tree/main/skills/redis-search" rel="noopener noreferrer"&gt;&lt;code&gt;redis-search&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/redis/agent-skills/tree/main/skills/redis-security" rel="noopener noreferrer"&gt;&lt;code&gt;redis-security&lt;/code&gt;&lt;/a&gt; round it out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upstash:&lt;/strong&gt; &lt;a href="https://github.com/upstash/skills/tree/main/skills" rel="noopener noreferrer"&gt;upstash/skills&lt;/a&gt; (official). This is the serverless toolbox: &lt;a href="https://github.com/upstash/skills/tree/main/skills/upstash-redis-js" rel="noopener noreferrer"&gt;&lt;code&gt;upstash-redis-js&lt;/code&gt;&lt;/a&gt; for HTTP-based Redis on the edge, &lt;a href="https://github.com/upstash/skills/tree/main/skills/upstash-ratelimit-js" rel="noopener noreferrer"&gt;&lt;code&gt;upstash-ratelimit-js&lt;/code&gt;&lt;/a&gt; for rate limiting an API route (do this before you launch anything with an AI endpoint), &lt;a href="https://github.com/upstash/skills/tree/main/skills/upstash-qstash-js" rel="noopener noreferrer"&gt;&lt;code&gt;upstash-qstash-js&lt;/code&gt;&lt;/a&gt; for queues and scheduled jobs, &lt;a href="https://github.com/upstash/skills/tree/main/skills/upstash-workflow-js" rel="noopener noreferrer"&gt;&lt;code&gt;upstash-workflow-js&lt;/code&gt;&lt;/a&gt; for long-running workflows that survive serverless timeouts, and &lt;a href="https://github.com/upstash/skills/tree/main/skills/upstash-vector-js" rel="noopener noreferrer"&gt;&lt;code&gt;upstash-vector-js&lt;/code&gt;&lt;/a&gt; for embeddings and RAG.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Turso (SQLite):&lt;/strong&gt; &lt;a href="https://github.com/tursodatabase/agent-skills/tree/main/skills" rel="noopener noreferrer"&gt;tursodatabase/agent-skills&lt;/a&gt; (official). &lt;a href="https://github.com/tursodatabase/agent-skills/tree/main/skills/turso-db" rel="noopener noreferrer"&gt;&lt;code&gt;turso-db&lt;/code&gt;&lt;/a&gt; for the in-process database written in Rust (formerly libSQL), and &lt;a href="https://github.com/tursodatabase/agent-skills/tree/main/skills/turso-cloud" rel="noopener noreferrer"&gt;&lt;code&gt;turso-cloud&lt;/code&gt;&lt;/a&gt; for the managed version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PlanetScale:&lt;/strong&gt; &lt;a href="https://github.com/planetscale/skills" rel="noopener noreferrer"&gt;planetscale/skills&lt;/a&gt; (official). These are built around letting agents operate databases safely: &lt;a href="https://github.com/planetscale/skills/tree/main/planetscale-postgres-safety-review" rel="noopener noreferrer"&gt;&lt;code&gt;planetscale-postgres-safety-review&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/planetscale/skills/tree/main/planetscale-pscale-cli-automation" rel="noopener noreferrer"&gt;&lt;code&gt;planetscale-pscale-cli-automation&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/planetscale/skills/tree/main/planetscale-query-insights-and-tags" rel="noopener noreferrer"&gt;&lt;code&gt;planetscale-query-insights-and-tags&lt;/code&gt;&lt;/a&gt;, and &lt;a href="https://github.com/planetscale/skills/tree/main/planetscale-schema-recommendations-agent-loop" rel="noopener noreferrer"&gt;&lt;code&gt;planetscale-schema-recommendations-agent-loop&lt;/code&gt;&lt;/a&gt;, which turns schema recommendations into reviewed branches and pull requests without touching production.&lt;/p&gt;




&lt;h2&gt;
  
  
  19. Vue, Nuxt and Svelte
&lt;/h2&gt;



&lt;p&gt;Not everything is React. The two non-React frameworks with the best skill coverage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Svelte:&lt;/strong&gt; &lt;a href="https://github.com/sveltejs/ai-tools/tree/main/tools/skills" rel="noopener noreferrer"&gt;sveltejs/ai-tools&lt;/a&gt; (official, Svelte team). &lt;a href="https://github.com/sveltejs/ai-tools/tree/main/tools/skills/svelte-core-bestpractices" rel="noopener noreferrer"&gt;&lt;code&gt;svelte-core-bestpractices&lt;/code&gt;&lt;/a&gt; covers modern Svelte 5 code, including reactivity. &lt;a href="https://github.com/sveltejs/ai-tools/tree/main/tools/skills/svelte-code-writer" rel="noopener noreferrer"&gt;&lt;code&gt;svelte-code-writer&lt;/code&gt;&lt;/a&gt; gives the agent CLI tools to look up Svelte 5 docs and analyze components, and its description says to use it for any &lt;code&gt;.svelte&lt;/code&gt; file. Svelte 5 introduced runes, so older training data is a real risk here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vue and Nuxt:&lt;/strong&gt; &lt;a href="https://github.com/antfu/skills" rel="noopener noreferrer"&gt;antfu/skills&lt;/a&gt; (community, Anthony Fu). &lt;a href="https://github.com/antfu/skills/tree/main/skills/vue" rel="noopener noreferrer"&gt;&lt;code&gt;vue&lt;/code&gt;&lt;/a&gt; covers the Composition API, &lt;code&gt;&amp;lt;script setup&amp;gt;&lt;/code&gt; macros and reactivity, &lt;a href="https://github.com/antfu/skills/tree/main/skills/nuxt" rel="noopener noreferrer"&gt;&lt;code&gt;nuxt&lt;/code&gt;&lt;/a&gt; covers SSR, server routes and &lt;code&gt;useFetch&lt;/code&gt;, and &lt;a href="https://github.com/antfu/skills/tree/main/skills/pinia" rel="noopener noreferrer"&gt;&lt;code&gt;pinia&lt;/code&gt;&lt;/a&gt; covers stores. Clerk also has official &lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-vue-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-vue-patterns&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-nuxt-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-nuxt-patterns&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pnpm&lt;/strong&gt;, whatever framework you use: &lt;a href="https://github.com/antfu/skills/tree/main/skills/pnpm" rel="noopener noreferrer"&gt;&lt;code&gt;pnpm&lt;/code&gt;&lt;/a&gt; covers workspaces, catalogs, patches and overrides.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  20. Python, FastAPI and Go
&lt;/h2&gt;



&lt;p&gt;A lot of AI backend work is still Python. I covered the agent frameworks themselves in &lt;a href="https://ihatereading.in/blogs/python-ai-agent-sdks-in-2026-openai-agents-sdk-vs-pydantic-ai-vs-smolagents-vs-strands" rel="noopener noreferrer"&gt;Python AI SDKs compared&lt;/a&gt;. These skills cover the language and tooling around them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/trailofbits/skills/tree/main/plugins/modern-python/skills/modern-python" rel="noopener noreferrer"&gt;&lt;code&gt;modern-python&lt;/code&gt;&lt;/a&gt; (Trail of Bits): sets up projects with uv, ruff and ty, and migrates old pip or Poetry setups. If you install one Python skill, make it this one.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/python-development/skills" rel="noopener noreferrer"&gt;wshobson/agents &lt;code&gt;python-development&lt;/code&gt;&lt;/a&gt; (community): 16 focused skills, including &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/python-development/skills/async-python-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;async-python-patterns&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/python-development/skills/python-testing-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;python-testing-patterns&lt;/code&gt;&lt;/a&gt; (pytest, fixtures, mocking), &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/python-development/skills/uv-package-manager" rel="noopener noreferrer"&gt;&lt;code&gt;uv-package-manager&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/python-development/skills/python-project-structure" rel="noopener noreferrer"&gt;&lt;code&gt;python-project-structure&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/fastapi-expert" rel="noopener noreferrer"&gt;&lt;code&gt;fastapi-expert&lt;/code&gt;&lt;/a&gt; (community, Jeffallan/claude-skills): async APIs with FastAPI and Pydantic v2. The same repo has &lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/python-pro" rel="noopener noreferrer"&gt;&lt;code&gt;python-pro&lt;/code&gt;&lt;/a&gt; for type-safe Python 3.11+.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go:&lt;/strong&gt; &lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/golang-pro" rel="noopener noreferrer"&gt;&lt;code&gt;golang-pro&lt;/code&gt;&lt;/a&gt; (community) covers goroutines, gRPC or REST microservices and profiling with pprof, and wshobson's &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/systems-programming/skills/go-concurrency-patterns" rel="noopener noreferrer"&gt;&lt;code&gt;go-concurrency-patterns&lt;/code&gt;&lt;/a&gt; goes deeper on channels, sync primitives and context.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  21. Security and code review
&lt;/h2&gt;



&lt;p&gt;Agents write code fast, so they write vulnerabilities fast too. These skills are the second pair of eyes. If you're thinking about audits more formally, &lt;a href="https://ihatereading.in/blogs/ai-agent-auditing-and-compliance-in-2026-the-new-soc-2-for-autonomous-systems" rel="noopener noreferrer"&gt;AI agent auditing and compliance&lt;/a&gt; covers that side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/getsentry/skills/tree/main/skills" rel="noopener noreferrer"&gt;getsentry/skills&lt;/a&gt;&lt;/strong&gt; (official, Sentry's engineering team). These are Sentry's internal engineering skills, not Sentry SDK setup. Install with &lt;code&gt;claude plugin marketplace add getsentry/skills&lt;/code&gt;, then &lt;code&gt;claude plugin install sentry-skills@sentry-skills&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsentry/skills/tree/main/skills/find-bugs" rel="noopener noreferrer"&gt;&lt;code&gt;find-bugs&lt;/code&gt;&lt;/a&gt;: bugs, security issues and quality problems in your current branch's changes. It makes a good "before I push" check.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsentry/skills/tree/main/skills/security-review" rel="noopener noreferrer"&gt;&lt;code&gt;security-review&lt;/code&gt;&lt;/a&gt;: an OWASP-style review for injection, auth problems and similar.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsentry/skills/tree/main/skills/code-review" rel="noopener noreferrer"&gt;&lt;code&gt;code-review&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/getsentry/skills/tree/main/skills/code-simplifier" rel="noopener noreferrer"&gt;&lt;code&gt;code-simplifier&lt;/code&gt;&lt;/a&gt;: PR reviews following Sentry's practices, and cleanup that keeps behavior the same.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsentry/skills/tree/main/skills/gha-security-review" rel="noopener noreferrer"&gt;&lt;code&gt;gha-security-review&lt;/code&gt;&lt;/a&gt;: GitHub Actions workflows reviewed for exploitable patterns.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsentry/skills/tree/main/skills/skill-scanner" rel="noopener noreferrer"&gt;&lt;code&gt;skill-scanner&lt;/code&gt;&lt;/a&gt;: scans agent skills for security problems such as prompt injection. Run it on every community skill in this post before you install it. That's the safety advice from the start of this post, automated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/trailofbits/skills" rel="noopener noreferrer"&gt;trailofbits/skills&lt;/a&gt;&lt;/strong&gt; (from Trail of Bits, the security firm):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/trailofbits/skills/tree/main/plugins/differential-review/skills/differential-review" rel="noopener noreferrer"&gt;&lt;code&gt;differential-review&lt;/code&gt;&lt;/a&gt;: security-focused review of a set of code changes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/trailofbits/skills/tree/main/plugins/static-analysis/skills/semgrep" rel="noopener noreferrer"&gt;&lt;code&gt;semgrep&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/trailofbits/skills/tree/main/plugins/static-analysis/skills/codeql" rel="noopener noreferrer"&gt;&lt;code&gt;codeql&lt;/code&gt;&lt;/a&gt;: static analysis scans. The Semgrep skill presents its scan plan for your approval before running.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/trailofbits/skills/tree/main/plugins/supply-chain-risk-auditor/skills/supply-chain-risk-auditor" rel="noopener noreferrer"&gt;&lt;code&gt;supply-chain-risk-auditor&lt;/code&gt;&lt;/a&gt;: checks your dependencies for advisories and supply-chain risk.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/trailofbits/skills/tree/main/plugins/sharp-edges/skills/sharp-edges" rel="noopener noreferrer"&gt;&lt;code&gt;sharp-edges&lt;/code&gt;&lt;/a&gt;: finds error-prone APIs and dangerous configurations that make security mistakes easy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Also:&lt;/strong&gt; Better Auth's &lt;a href="https://github.com/better-auth/skills/tree/main/security" rel="noopener noreferrer"&gt;&lt;code&gt;security&lt;/code&gt;&lt;/a&gt; skill (rate limiting, CSRF, trusted origins, session cookies), Firebase's &lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-security-rules-auditor" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-security-rules-auditor&lt;/code&gt;&lt;/a&gt; from section 7, and Jeffallan's &lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/security-reviewer" rel="noopener noreferrer"&gt;&lt;code&gt;security-reviewer&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/Jeffallan/claude-skills/tree/main/skills/secure-code-guardian" rel="noopener noreferrer"&gt;&lt;code&gt;secure-code-guardian&lt;/code&gt;&lt;/a&gt; (community).&lt;/p&gt;




&lt;h2&gt;
  
  
  22. Git, CI/CD and infrastructure as code
&lt;/h2&gt;



&lt;p&gt;&lt;strong&gt;Git and pull requests&lt;/strong&gt;, from &lt;a href="https://github.com/getsentry/skills/tree/main/skills" rel="noopener noreferrer"&gt;getsentry/skills&lt;/a&gt; (official):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsentry/skills/tree/main/skills/commit" rel="noopener noreferrer"&gt;&lt;code&gt;commit&lt;/code&gt;&lt;/a&gt;: conventional commits with issue references.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsentry/skills/tree/main/skills/pr-writer" rel="noopener noreferrer"&gt;&lt;code&gt;pr-writer&lt;/code&gt;&lt;/a&gt;: PR titles and descriptions written for the reviewer.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsentry/skills/tree/main/skills/iterate-pr" rel="noopener noreferrer"&gt;&lt;code&gt;iterate-pr&lt;/code&gt;&lt;/a&gt;: loops on a PR until CI passes and high and medium review feedback is handled. This is the closest thing to "fix it until it's green" that I've found packaged as a skill.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CI/CD pipelines:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/wshobson/agents/tree/main/plugins/cicd-automation/skills/github-actions-templates" rel="noopener noreferrer"&gt;&lt;code&gt;github-actions-templates&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/cicd-automation/skills/deployment-pipeline-design" rel="noopener noreferrer"&gt;&lt;code&gt;deployment-pipeline-design&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/wshobson/agents/tree/main/plugins/cicd-automation/skills/secrets-management" rel="noopener noreferrer"&gt;&lt;code&gt;secrets-management&lt;/code&gt;&lt;/a&gt; (community, wshobson/agents): workflows for testing, building and deploying, multi-stage pipelines with approval gates, and secrets handling with Vault or AWS Secrets Manager.&lt;/li&gt;
&lt;li&gt;Platform-specific: Callstack's &lt;a href="https://github.com/callstackincubator/agent-skills/tree/main/skills/github-actions" rel="noopener noreferrer"&gt;&lt;code&gt;github-actions&lt;/code&gt;&lt;/a&gt; for React Native builds, and Expo's &lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/eas-workflows" rel="noopener noreferrer"&gt;&lt;code&gt;eas-workflows&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure as code:&lt;/strong&gt; &lt;a href="https://github.com/hashicorp/agent-skills" rel="noopener noreferrer"&gt;hashicorp/agent-skills&lt;/a&gt; (official, HashiCorp). Install single skills by path, for example &lt;code&gt;npx skills add hashicorp/agent-skills/plugins/terraform/skills/terraform-style-guide&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/hashicorp/agent-skills/tree/main/plugins/terraform/skills/terraform-style-guide" rel="noopener noreferrer"&gt;&lt;code&gt;terraform-style-guide&lt;/code&gt;&lt;/a&gt;: HCL that follows HashiCorp's official conventions.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/hashicorp/agent-skills/tree/main/plugins/terraform/skills/terraform-test" rel="noopener noreferrer"&gt;&lt;code&gt;terraform-test&lt;/code&gt;&lt;/a&gt;: &lt;code&gt;.tftest.hcl&lt;/code&gt; tests with run blocks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/hashicorp/agent-skills/tree/main/plugins/terraform/skills/refactor-module" rel="noopener noreferrer"&gt;&lt;code&gt;refactor-module&lt;/code&gt;&lt;/a&gt;: splits a monolithic config into reusable modules.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/hashicorp/agent-skills/tree/main/plugins/terraform/skills/terraform-search-import" rel="noopener noreferrer"&gt;&lt;code&gt;terraform-search-import&lt;/code&gt;&lt;/a&gt;: finds existing cloud resources and bulk-imports them into Terraform. This is how you rescue infrastructure someone clicked together in a console.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/hashicorp/agent-skills/tree/main/plugins/terraform/skills/terraform-stacks" rel="noopener noreferrer"&gt;&lt;code&gt;terraform-stacks&lt;/code&gt;&lt;/a&gt;, plus Packer skills like &lt;a href="https://github.com/hashicorp/agent-skills/tree/main/plugins/packer/skills/aws-ami-builder" rel="noopener noreferrer"&gt;&lt;code&gt;aws-ami-builder&lt;/code&gt;&lt;/a&gt; for machine images.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  23. Marketing, SEO and growth
&lt;/h2&gt;



&lt;p&gt;Building is the easy part. These skills cover what comes after, and they're the ones I'd point most indie hackers to first, since distribution is usually the actual bottleneck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills" rel="noopener noreferrer"&gt;coreyhaines31/marketingskills&lt;/a&gt;&lt;/strong&gt; (community, by Corey Haines). Around 50 marketing skills. Install with &lt;code&gt;npx skills add coreyhaines31/marketingskills&lt;/code&gt;, or pick a few with &lt;code&gt;--skill&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SEO:&lt;/strong&gt; &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/seo-audit" rel="noopener noreferrer"&gt;&lt;code&gt;seo-audit&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/programmatic-seo" rel="noopener noreferrer"&gt;&lt;code&gt;programmatic-seo&lt;/code&gt;&lt;/a&gt; (template pages at scale), &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/schema" rel="noopener noreferrer"&gt;&lt;code&gt;schema&lt;/code&gt;&lt;/a&gt; (JSON-LD) and &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/ai-seo" rel="noopener noreferrer"&gt;&lt;code&gt;ai-seo&lt;/code&gt;&lt;/a&gt;, for getting cited in AI answers. That last one is the same problem I covered in &lt;a href="https://ihatereading.in/t/aeo-in-2026-the-complete-answer-engine-optimization-guide-for-technical-founders" rel="noopener noreferrer"&gt;the AEO guide&lt;/a&gt; and &lt;a href="https://ihatereading.in/blogs/ai-visibility-checkers-explained-geo-new-and-is-agentic" rel="noopener noreferrer"&gt;AI visibility checkers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Launch and distribution:&lt;/strong&gt; &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/launch" rel="noopener noreferrer"&gt;&lt;code&gt;launch&lt;/code&gt;&lt;/a&gt; (Product Hunt and go-to-market), &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/directory-submissions" rel="noopener noreferrer"&gt;&lt;code&gt;directory-submissions&lt;/code&gt;&lt;/a&gt; (pair it with our &lt;a href="https://ihatereading.in/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them" rel="noopener noreferrer"&gt;list of 393 SaaS directories&lt;/a&gt;), &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/cold-email" rel="noopener noreferrer"&gt;&lt;code&gt;cold-email&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/lead-magnets" rel="noopener noreferrer"&gt;&lt;code&gt;lead-magnets&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conversion and pricing:&lt;/strong&gt; &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/copywriting" rel="noopener noreferrer"&gt;&lt;code&gt;copywriting&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/cro" rel="noopener noreferrer"&gt;&lt;code&gt;cro&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/pricing" rel="noopener noreferrer"&gt;&lt;code&gt;pricing&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/paywalls" rel="noopener noreferrer"&gt;&lt;code&gt;paywalls&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/onboarding" rel="noopener noreferrer"&gt;&lt;code&gt;onboarding&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile:&lt;/strong&gt; &lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/aso" rel="noopener noreferrer"&gt;&lt;code&gt;aso&lt;/code&gt;&lt;/a&gt; for App Store and Google Play listings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Firecrawl's &lt;a href="https://github.com/firecrawl/skills/tree/main/skills/workflows/firecrawl-seo-audit" rel="noopener noreferrer"&gt;&lt;code&gt;firecrawl-seo-audit&lt;/code&gt;&lt;/a&gt; from section 16 is a good companion, because it crawls the live site rather than reasoning from your code. And if you're producing content at volume, read &lt;a href="https://ihatereading.in/blogs/how-we-write-100-seo-blogs-a-day-for-under-10-without-getting-hit-by-googles-scaled-content-penalty" rel="noopener noreferrer"&gt;how we write 100+ SEO blogs a day&lt;/a&gt; before you point an agent at a keyword list.&lt;/p&gt;




&lt;h2&gt;
  
  
  24. Documents and office files
&lt;/h2&gt;



&lt;p&gt;Sometimes the output isn't code: an invoice PDF, a client report in Word, a pitch deck, a spreadsheet of leads. Anthropic's &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;anthropics/skills&lt;/a&gt; repo publishes the source for its document skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/pdf" rel="noopener noreferrer"&gt;&lt;code&gt;pdf&lt;/code&gt;&lt;/a&gt;: read, extract, merge, split, fill forms and watermark PDFs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/docx" rel="noopener noreferrer"&gt;&lt;code&gt;docx&lt;/code&gt;&lt;/a&gt;: create and edit Word documents and templates.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/pptx" rel="noopener noreferrer"&gt;&lt;code&gt;pptx&lt;/code&gt;&lt;/a&gt;: create, read and edit PowerPoint decks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/xlsx" rel="noopener noreferrer"&gt;&lt;code&gt;xlsx&lt;/code&gt;&lt;/a&gt;: spreadsheets in &lt;code&gt;.xlsx&lt;/code&gt;, &lt;code&gt;.csv&lt;/code&gt; and &lt;code&gt;.tsv&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/anthropics/skills/tree/main/skills/doc-coauthoring" rel="noopener noreferrer"&gt;&lt;code&gt;doc-coauthoring&lt;/code&gt;&lt;/a&gt;: a structured workflow for writing specs, proposals and decision docs together with Claude.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anthropic's docs note that the pre-built document skills aren't part of Claude Code itself, so installing them from this repo is how you get them there. Check the license in each skill folder before using them in a commercial product.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 20 skills I'd install first
&lt;/h2&gt;

&lt;p&gt;If this list is too much, start here. One per job, mostly official.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Repo&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/react-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;react-best-practices&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;vercel-labs/agent-skills&lt;/td&gt;
&lt;td&gt;Fixes the most common React performance mistakes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/anthropics/skills/tree/main/skills/frontend-design" rel="noopener noreferrer"&gt;&lt;code&gt;frontend-design&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;anthropics/skills&lt;/td&gt;
&lt;td&gt;Stops the default-template look&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines" rel="noopener noreferrer"&gt;&lt;code&gt;web-design-guidelines&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;vercel-labs/agent-skills&lt;/td&gt;
&lt;td&gt;Pre-ship UI and accessibility review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/ui-ux-pro-max" rel="noopener noreferrer"&gt;&lt;code&gt;ui-ux-pro-max&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;nextlevelbuilder/ui-ux-pro-max-skill&lt;/td&gt;
&lt;td&gt;Deeper UI/UX reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shadcn-ui/ui/tree/main/skills/shadcn" rel="noopener noreferrer"&gt;&lt;code&gt;shadcn&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;shadcn-ui/ui&lt;/td&gt;
&lt;td&gt;Correct shadcn components every time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/vercel/next.js/tree/canary/skills/next-dev-loop" rel="noopener noreferrer"&gt;&lt;code&gt;next-dev-loop&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;vercel/next.js&lt;/td&gt;
&lt;td&gt;Proves a Next.js change works at runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/anthropics/skills/tree/main/skills/webapp-testing" rel="noopener noreferrer"&gt;&lt;code&gt;webapp-testing&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;anthropics/skills&lt;/td&gt;
&lt;td&gt;The agent checks its own UI in a browser&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/emilkowalski/skills/tree/main/skills/animate" rel="noopener noreferrer"&gt;&lt;code&gt;animate&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;emilkowalski/skills&lt;/td&gt;
&lt;td&gt;Motion with intent, not decoration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/clerk/skills/tree/main/skills/clerk-setup" rel="noopener noreferrer"&gt;&lt;code&gt;clerk-setup&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;clerk/skills&lt;/td&gt;
&lt;td&gt;Auth set up with current APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/stripe/ai/tree/main/skills/stripe-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;stripe-best-practices&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;stripe/ai&lt;/td&gt;
&lt;td&gt;Picks the right Stripe API for the job&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/dodopayments/skills/tree/main/dodo-payments/dodo-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;dodo-best-practices&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;dodopayments/skills&lt;/td&gt;
&lt;td&gt;Merchant-of-record checkout and webhooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/polarsource/skills/blob/main/skills/polar-testing/SKILL.md" rel="noopener noreferrer"&gt;&lt;code&gt;polar-testing&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;polarsource/skills&lt;/td&gt;
&lt;td&gt;Sandbox testing before real money&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/supabase/agent-skills/tree/main/skills/supabase-postgres-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;supabase-postgres-best-practices&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;supabase/agent-skills&lt;/td&gt;
&lt;td&gt;Postgres rules for any Postgres&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/firebase/agent-skills/tree/main/skills/firebase-security-rules-auditor" rel="noopener noreferrer"&gt;&lt;code&gt;firebase-security-rules-auditor&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;firebase/agent-skills&lt;/td&gt;
&lt;td&gt;Catches open Firestore rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-overview" rel="noopener noreferrer"&gt;&lt;code&gt;expo-overview&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;expo/skills&lt;/td&gt;
&lt;td&gt;Routes every Expo task correctly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/callstackincubator/agent-skills/tree/main/skills/react-native-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;react-native-best-practices&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;callstackincubator/agent-skills&lt;/td&gt;
&lt;td&gt;React Native performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/OpenRouterTeam/skills/tree/main/skills/openrouter-typescript-sdk" rel="noopener noreferrer"&gt;&lt;code&gt;openrouter-typescript-sdk&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;OpenRouterTeam/skills&lt;/td&gt;
&lt;td&gt;300+ models through one SDK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/honojs/skills/tree/main/skills/hono" rel="noopener noreferrer"&gt;&lt;code&gt;hono&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;honojs/skills&lt;/td&gt;
&lt;td&gt;Small, fast APIs done right&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/docker/skills/tree/main/skills/docker-build-strategies" rel="noopener noreferrer"&gt;&lt;code&gt;docker-build-strategies&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;docker/skills&lt;/td&gt;
&lt;td&gt;Smaller, safer images&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/anthropics/skills/tree/main/skills/skill-creator" rel="noopener noreferrer"&gt;&lt;code&gt;skill-creator&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;anthropics/skills&lt;/td&gt;
&lt;td&gt;Write the skills nobody has made yet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The next five, from the later sections:&lt;/strong&gt; &lt;a href="https://github.com/getsentry/skills/tree/main/skills/find-bugs" rel="noopener noreferrer"&gt;&lt;code&gt;find-bugs&lt;/code&gt;&lt;/a&gt; before every push, &lt;a href="https://github.com/getsentry/skills/tree/main/skills/skill-scanner" rel="noopener noreferrer"&gt;&lt;code&gt;skill-scanner&lt;/code&gt;&lt;/a&gt; before installing any community skill, &lt;a href="https://github.com/resend/resend-skills/tree/main/skills/email-best-practices" rel="noopener noreferrer"&gt;&lt;code&gt;email-best-practices&lt;/code&gt;&lt;/a&gt; before your first real email, &lt;a href="https://github.com/PostHog/skills/tree/main/skills/omnibus/instrument-product-analytics" rel="noopener noreferrer"&gt;&lt;code&gt;instrument-product-analytics&lt;/code&gt;&lt;/a&gt; after every feature, and &lt;a href="https://github.com/upstash/skills/tree/main/skills/upstash-ratelimit-js" rel="noopener noreferrer"&gt;&lt;code&gt;upstash-ratelimit-js&lt;/code&gt;&lt;/a&gt; before any AI endpoint goes public.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use skills without making things worse
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Install per project, not globally.&lt;/strong&gt; Every installed skill puts its description in context, at around 100 tokens each. Fifty skills you don't need is 5,000 tokens of noise and more chances for the wrong skill to fire. Put framework skills in the project's &lt;code&gt;.claude/skills/&lt;/code&gt; and keep only general ones (design, testing) in &lt;code&gt;~/.claude/skills/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer official when both exist.&lt;/strong&gt; They track releases. Community skills are great for gaps (Rust, Kubernetes, system design), but check when they were last updated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read before you install.&lt;/strong&gt; Skills can run scripts. Open the &lt;code&gt;SKILL.md&lt;/code&gt; and the &lt;code&gt;scripts/&lt;/code&gt; folder of anything community-made.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update them.&lt;/strong&gt; Manually installed skills don't auto-update. &lt;code&gt;npx skills update&lt;/code&gt; refreshes them, and plugin installs update through Claude Code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pair skills with MCP when the vendor offers both.&lt;/strong&gt; Skills teach the agent how; MCP servers let it act. Clerk, Expo, Stripe and Hugging Face all ship both, and the Expo README explains the split well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write your own for your stack.&lt;/strong&gt; The &lt;a href="https://ihatereading.in/t/cursor-codex-claude-code-prompts-collection" rel="noopener noreferrer"&gt;prompts collection for Cursor, Codex and Claude Code&lt;/a&gt; is a good source of rules to turn into skills with &lt;code&gt;skill-creator&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where to go from here
&lt;/h2&gt;

&lt;p&gt;Pick the three categories you work in most, install the official skills for them, and run your next feature through &lt;code&gt;webapp-testing&lt;/code&gt; or &lt;code&gt;next-dev-loop&lt;/code&gt; before you call it done. That's the shortest path from "the agent wrote it" to "the agent proved it works."&lt;/p&gt;

&lt;p&gt;For the bigger lists, &lt;a href="https://github.com/VoltAgent/awesome-agent-skills" rel="noopener noreferrer"&gt;VoltAgent/awesome-agent-skills&lt;/a&gt; collects skills from official dev teams and the community, and &lt;a href="https://github.com/wshobson/agents" rel="noopener noreferrer"&gt;wshobson/agents&lt;/a&gt; and &lt;a href="https://github.com/Jeffallan/claude-skills" rel="noopener noreferrer"&gt;Jeffallan/claude-skills&lt;/a&gt; cover almost every language.&lt;/p&gt;

&lt;p&gt;Everything we've open-sourced ourselves is in the &lt;a href="https://ihatereading.in/blogs/ihatereading-open-source-projects" rel="noopener noreferrer"&gt;iHateReading open-source projects&lt;/a&gt; post. New tools and skill repos go into the &lt;a href="https://ihatereading.in/magazine" rel="noopener noreferrer"&gt;monthly magazine&lt;/a&gt; as they land.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Convert Long Blog Lists Into Instagram Carousels With Nano Banana, AI HTML, and OpenRouter</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Fri, 09 Oct 2026 10:01:47 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/how-to-convert-long-blog-lists-into-instagram-carousels-with-nano-banana-ai-html-and-openrouter-2c2e</link>
      <guid>https://dev.to/shreyvijayvargiya/how-to-convert-long-blog-lists-into-instagram-carousels-with-nano-banana-ai-html-and-openrouter-2c2e</guid>
      <description>&lt;p&gt;You can write a hundred solid blogs and still lose the week to Canva.&lt;/p&gt;

&lt;p&gt;That is the real bottleneck for developer sites with a big archive. The writing is done. The distribution is not. Instagram wants short hooks, dense slides, and a consistent visual system. Your markdown folder wants H2s, code blocks, and 2,000-word essays. Bridging those two formats by hand does not scale.&lt;/p&gt;

&lt;p&gt;This post is how we turned that gap into an admin workflow: load the blog list into a table, pick a row, then generate a carousel with either &lt;strong&gt;Google Nano Banana images through OpenRouter&lt;/strong&gt;, &lt;strong&gt;AI HTML slides&lt;/strong&gt; you export locally, or the same mental model as an &lt;strong&gt;AI React code generator&lt;/strong&gt; when you want component-based slides instead of PNGs.&lt;/p&gt;

&lt;p&gt;The live tool sits at &lt;a href="https://ihatereading.in/ig-post-creator" rel="noopener noreferrer"&gt;/ig-post-creator&lt;/a&gt;. The ideas below are the design behind it, so you can rebuild the same pattern on your own stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem is not "more content"
&lt;/h2&gt;

&lt;p&gt;We already publish from a static markdown catalog under &lt;code&gt;blogs-content/&lt;/code&gt;. Each file has title, slug, description, tags, and a body with &lt;code&gt;##&lt;/code&gt; sections. That same catalog powers &lt;a href="https://ihatereading.in/blog" rel="noopener noreferrer"&gt;/blog&lt;/a&gt;, &lt;a href="https://ihatereading.in/articles.json" rel="noopener noreferrer"&gt;/articles.json&lt;/a&gt;, and the blog sitemap.&lt;/p&gt;

&lt;p&gt;What we did not have was a second view of that catalog: one built for Instagram production.&lt;/p&gt;

&lt;p&gt;Without that view, every post becomes a one-off design job. You open the essay, invent a carousel structure, rewrite the copy for mobile, pick colors, export slides, and forget which blogs you already turned into posts. After twenty articles the system collapses into a spreadsheet you never update.&lt;/p&gt;

&lt;p&gt;So the product is not "an image model." The product is &lt;strong&gt;an admin table of blogs with a generate button&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Build the admin table from your blog list
&lt;/h2&gt;

&lt;p&gt;Start from the same source of truth you already trust for SEO.&lt;/p&gt;

&lt;p&gt;For each markdown blog, derive a row:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Column&lt;/th&gt;
&lt;th&gt;Where it comes from&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Title / hook&lt;/td&gt;
&lt;td&gt;Blog title, shortened for IG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;First tag, or a simple heuristic (AI, SaaS, Blog)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sections&lt;/td&gt;
&lt;td&gt;Every &lt;code&gt;##&lt;/code&gt; heading in the body&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slide count&lt;/td&gt;
&lt;td&gt;One slide per H2 (plus cover/CTA if you want)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Status&lt;/td&gt;
&lt;td&gt;Idea vs Generated (localStorage is enough at first)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blog URL&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/blogs/{slug}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On iHateReading, &lt;code&gt;loadBlogCarouselIdeas()&lt;/code&gt; walks the newest markdown posts, strips frontmatter, splits on &lt;code&gt;##&lt;/code&gt;, and returns JSON the admin UI can filter. The page loads that list server-side, then refreshes from &lt;code&gt;/api/instagram/blog-carousel-ideas&lt;/code&gt; so the table stays current when new blogs land.&lt;/p&gt;

&lt;p&gt;That mapping rule matters more than the UI chrome:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One H2 ≈ one carousel slide.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Long essays become carousels without a second outline. If a post has six sections, you get six teaching slides. If it has three, you get three. You stop inventing structure every time.&lt;/p&gt;

&lt;p&gt;If you are still building the content engine that feeds this table, the pipeline in &lt;a href="https://ihatereading.in/blogs/how-we-write-100-seo-blogs-a-day-for-under-10-without-getting-hit-by-googles-scaled-content-penalty" rel="noopener noreferrer"&gt;How we write 100 SEO blogs a day for under $10&lt;/a&gt; is the upstream half. This post is the downstream half: archive → Instagram.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Give every row two output modes
&lt;/h2&gt;

&lt;p&gt;Once a blog is selected, the admin should ask one question: &lt;strong&gt;how do you want the slides rendered?&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mode A — AI images (Nano Banana via OpenRouter)
&lt;/h3&gt;

&lt;p&gt;Google's image models ship under the Nano Banana family. &lt;a href="https://blog.google/innovation-and-ai/technology/ai/nano-banana-2/" rel="noopener noreferrer"&gt;Nano Banana 2&lt;/a&gt; is Gemini 3.1 Flash Image: fast, good text rendering, native aspect ratios. OpenRouter exposes those models through a dedicated &lt;a href="https://openrouter.ai/docs/api/api-reference/images/generate-an-image" rel="noopener noreferrer"&gt;Image API&lt;/a&gt; at &lt;code&gt;POST /api/v1/images&lt;/code&gt;, so you keep one API key and can swap models later.&lt;/p&gt;

&lt;p&gt;Our path looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read the full blog markdown for the selected slug.&lt;/li&gt;
&lt;li&gt;Ask a planning model (chat completions, JSON mode) to turn each section into an IG-native slide plan: short headline, 2–3 word bullets, visual direction. No URLs on the image — link goes in the caption.&lt;/li&gt;
&lt;li&gt;For each slide, call OpenRouter images with a 4:5 prompt (&lt;code&gt;1080 × 1350&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Preview the carousel in the admin, then download the PNGs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In code, the image call is boring on purpose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://openrouter.ai/api/v1/images&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OPENROUTER_API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;HTTP-Referer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://ihatereading.in/ig-post-creator&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-Title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;iHateReading IG Post Creator&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;google/gemini-3.1-flash-lite-image&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Nano Banana 2 Lite&lt;/span&gt;
    &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;slidePrompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;aspect_ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;4:5&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use Lite when you are batching a long list. Step up to Flash or Pro when a single carousel needs sharper type. Google's own &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/ultimate-prompting-guide-for-nano-banana" rel="noopener noreferrer"&gt;prompting guide for Nano Banana&lt;/a&gt; is worth reading once so you stop writing vague "make a nice carousel" prompts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mode B — AI HTML slides (cheap, local export)
&lt;/h3&gt;

&lt;p&gt;Image APIs cost money and take time. For drafts, or for days when you only need structure, generate &lt;strong&gt;HTML slides&lt;/strong&gt; instead.&lt;/p&gt;

&lt;p&gt;OpenRouter chat returns JSON slides with layouts (&lt;code&gt;cover&lt;/code&gt;, &lt;code&gt;explain&lt;/code&gt;, &lt;code&gt;steps&lt;/code&gt;, &lt;code&gt;code&lt;/code&gt;, &lt;code&gt;cta&lt;/code&gt;). The admin renders those as React DOM nodes styled for Instagram. Export uses &lt;code&gt;html-to-image&lt;/code&gt; (or any DOM-to-PNG path) so you still leave with files you can post.&lt;/p&gt;

&lt;p&gt;This mode is the same idea as AI HTML generators: the model writes structure and copy, the browser paints pixels. You keep brand CSS in your app instead of hoping the image model remembers your fonts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mode C — AI React code generator as the slide engine
&lt;/h3&gt;

&lt;p&gt;If you already ship an &lt;a href="https://ihatereading.in/blogs/react-ai-code-generator" rel="noopener noreferrer"&gt;AI React code generator&lt;/a&gt; — prompt in, Tailwind component out — you can treat each carousel slide as a component, not a bitmap.&lt;/p&gt;

&lt;p&gt;That path looks like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Prompt: "Return a single React + Tailwind slide component for this H2 and excerpt. Fixed 1080×1350 frame. No external images."&lt;/li&gt;
&lt;li&gt;Preview the component in an iframe or React Live sandbox.&lt;/li&gt;
&lt;li&gt;Screenshot or rasterize for Instagram, or keep the component library for Stories / web embeds later.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We wrote about building that generator with Next.js and the Vercel AI SDK in &lt;a href="https://ihatereading.in/blogs/ai-react-tailwind-code-generator-app" rel="noopener noreferrer"&gt;AI React Tailwind Code Generator App&lt;/a&gt;. For IG, you do not need a full IDE product. You need a constrained prompt, a fixed canvas size, and a download step. Same architecture, narrower job.&lt;/p&gt;

&lt;p&gt;Pick the mode per row:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nano Banana images&lt;/strong&gt; when the post needs a strong visual brand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML slides&lt;/strong&gt; when you want speed and zero image spend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React components&lt;/strong&gt; when you want reusable slide kits across channels.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Wire OpenRouter once, reuse it everywhere
&lt;/h2&gt;

&lt;p&gt;Do not scatter provider SDKs across the admin.&lt;/p&gt;

&lt;p&gt;One key (&lt;code&gt;OPENROUTER_API_KEY&lt;/code&gt;), two endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;https://openrouter.ai/api/v1/chat/completions&lt;/code&gt; for planning copy and HTML slide JSON&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;https://openrouter.ai/api/v1/images&lt;/code&gt; for Nano Banana / Gemini image models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That split matches how OpenRouter &lt;a href="https://openrouter.ai/blog/announcements/image-api/" rel="noopener noreferrer"&gt;announced the unified Image API&lt;/a&gt;: chat for text, images for pixels. It also matches how we already use OpenRouter elsewhere — for example in the &lt;a href="https://ihatereading.in/blogs/ai-automated-reddit-trend-scraper-that-saved-us-1000-month-on-content-creation" rel="noopener noreferrer"&gt;AI automated Reddit trend scraper&lt;/a&gt; — so ops stays one billing page and one key rotation.&lt;/p&gt;

&lt;p&gt;Practical rules that saved us retries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep image generation on the server. Keys never reach the browser.&lt;/li&gt;
&lt;li&gt;Cap slides (six to eight) so a bad prompt cannot burn a full day of credits.&lt;/li&gt;
&lt;li&gt;Store "Generated" status in localStorage first. Promote to a real DB only when multiple people share the queue.&lt;/li&gt;
&lt;li&gt;Soft CTA only on the last slide. Every earlier slide should teach.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The carousel brief that actually works on Instagram
&lt;/h2&gt;

&lt;p&gt;Whether you generate images, HTML, or React, the content brief is the same.&lt;/p&gt;

&lt;p&gt;For each section of the blog:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hook line&lt;/strong&gt; — under ~8 words, readable at thumb size&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two or three bullets&lt;/strong&gt; — facts, not paragraphs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One visual cue&lt;/strong&gt; — sketch panel, code card, or product UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No URLs on the slide&lt;/strong&gt; — put the link in the caption / bio&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then close with a soft CTA: "Full write-up on iHateReading" beats "BUY NOW" for a developer audience.&lt;/p&gt;

&lt;p&gt;If the source post is distribution-heavy — directories, launches, free traffic — pull hooks from pieces like &lt;a href="https://ihatereading.in/blogs/how-to-get-free-traffic-to-your-website-in-2026-the-complete-free-to-paid-growth-playbook" rel="noopener noreferrer"&gt;How to Get Free Traffic to Your Website in 2026&lt;/a&gt; or the &lt;a href="https://ihatereading.in/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them" rel="noopener noreferrer"&gt;393 SaaS directories&lt;/a&gt; essay. The admin table makes that reuse mechanical: pick the row, generate, post.&lt;/p&gt;

&lt;p&gt;For the agent-tooling side of wiring models and tools cleanly, the &lt;a href="https://ihatereading.in/roadmap/ai-agent-development" rel="noopener noreferrer"&gt;AI Agent Developer Roadmap&lt;/a&gt; still applies. This admin is a thin agent: tools are &lt;code&gt;list_blogs&lt;/code&gt;, &lt;code&gt;plan_slides&lt;/code&gt;, &lt;code&gt;render_image&lt;/code&gt;, &lt;code&gt;export_png&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we are not automating yet
&lt;/h2&gt;

&lt;p&gt;Honest scope:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We do not auto-post to Instagram from this admin. Publishing still needs a human eye.&lt;/li&gt;
&lt;li&gt;We do not claim Nano Banana replaces a designer for brand campaigns. It replaces the blank-canvas hour for educational carousels.&lt;/li&gt;
&lt;li&gt;We do not generate captions that sound like ads. The blog already has the voice; the carousel compresses it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The win is throughput. A catalog of a hundred posts becomes a queue you can clear in batches: ten carousels a week from essays you already wrote, without opening Canva ten times.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build order if you are starting from zero
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Static blog list&lt;/strong&gt; you can read from disk or an API (markdown is enough).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Admin table&lt;/strong&gt; with search, category, and Generated status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter chat&lt;/strong&gt; that returns slide JSON from one blog body.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML preview + &lt;code&gt;html-to-image&lt;/code&gt; export&lt;/strong&gt; so you can ship before paying for images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter Image API + Nano Banana&lt;/strong&gt; for the rows that need real artwork.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional React generator&lt;/strong&gt; if you want component slides for web and IG both.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want the monthly roundup of tools and posts in this lane, the &lt;a href="https://ihatereading.in/magazine" rel="noopener noreferrer"&gt;iHateReading Magazine&lt;/a&gt; is the digest. If you want the creator itself, open &lt;a href="https://ihatereading.in/ig-post-creator" rel="noopener noreferrer"&gt;/ig-post-creator&lt;/a&gt; and start from the Blogs tab.&lt;/p&gt;

&lt;p&gt;More to come as we add caption drafts and a shared Generated queue.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
ShreyZ&lt;/p&gt;

</description>
      <category>instagram</category>
      <category>ai</category>
      <category>openrouter</category>
      <category>content</category>
    </item>
    <item>
      <title>Text is Slow: Ask for a Page for AI Agent</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Mon, 05 Oct 2026 16:13:47 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/text-is-slow-ask-for-a-page-for-ai-agent-391j</link>
      <guid>https://dev.to/shreyvijayvargiya/text-is-slow-ask-for-a-page-for-ai-agent-391j</guid>
      <description>&lt;p&gt;Andrej Karpathy &lt;a href="https://x.com/karpathy/status/2105819303471976479" rel="noopener noreferrer"&gt;made a simple point on X &lt;/a&gt;: as AI does more of the work, our job moves to oversight and understanding, and plain text is often the slowest way to understand anything. He suggests a ladder of output formats: controlled-language text, diagrams, interactive HTML pages and explainer videos. He also says code is now cheap enough to build large, throwaway software that you use once.&lt;/p&gt;

&lt;p&gt;That idea is easy to agree with and easy to forget. This guide makes it practical. Below are five real cases you can set up today in Claude Code, Cursor or Claude, each with a prompt you can copy. Then there are five more ideas for later.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The rule behind every example&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Every case follows the same loop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Take &lt;strong&gt;text you already have&lt;/strong&gt; (a course, a diff, logs, a transcript).&lt;/li&gt;
&lt;li&gt;Ask the model for &lt;strong&gt;one self-contained HTML file&lt;/strong&gt; with the data embedded.&lt;/li&gt;
&lt;li&gt;Open it in a browser. Read it. Throw it away, or keep it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Keep the file self-contained. No build step, no server, no external data. That one rule makes it work the same in every tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Use case 1: Course blogs into interactive storytelling lessons&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4POb9a4AAjGyn%3Fformat%3Djpg%26name%3Dsmall" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4POb9a4AAjGyn%3Fformat%3Djpg%26name%3Dsmall" alt="Image" width="680" height="326"&gt;&lt;/a&gt;Course Blog into Interactive lesson using AI &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Course content is usually long text. Students skim it and forget it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Turn each lesson into a scroll-based story with a diagram, a small interaction and a quick check.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Read &lt;a href="http://lesson-03.md" rel="noopener noreferrer"&gt;lesson-03.md&lt;/a&gt;. Create lesson-03.html as one file. Make a scroll story: one idea per screen, an SVG diagram for the main concept, one interactive element (a slider, toggle or click-through), and three quiz questions at the end. Write the text in simple technical English: short sentences, active voice. Dark theme.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Where to run it:&lt;/strong&gt; Claude Code or Cursor, with a loop over the lessons folder. Ask for the same layout every time so the course looks consistent. Check the facts in each lesson yourself before you ship, because a polished page makes a wrong claim look right.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Use case 2: Pull request previews from a commit or diff&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4PRPQb0AAqbdR%3Fformat%3Djpg%26name%3Dsmall" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4PRPQb0AAqbdR%3Fformat%3Djpg%26name%3Dsmall" alt="Image" width="680" height="368"&gt;&lt;/a&gt;Git difference into Visual PR preview&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; A diff shows what changed, not what it means. Reviewers read hundreds of lines to find the one risky change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Generate a visual preview for each pull request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt (in Cursor or Claude Code, inside the repo):&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Run git diff main...HEAD. Create pr-preview.html as one file. Include: a plain-English summary in five lines, a diagram of the files and functions that changed and how they connect, before and after snippets for the three most important changes, and a list of risks and things to test.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Open the file next to the real diff. Use it as a map, not as a replacement for reading the code. For a team setup, add the file as a CI artifact so every PR has a link. The model can miss a bug, so treat the "risks" list as a starting point.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Use case 3: Daily agent reports for teams&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4PUOlbEAEhz_H%3Fformat%3Djpg%26name%3Dsmall" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4PUOlbEAEhz_H%3Fformat%3Djpg%26name%3Dsmall" alt="Image" width="679" height="332"&gt;&lt;/a&gt;Daily agent report for the teams&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; You run several agents. Each one writes a long log. The person who needs the result, such as a manager, a client or the parents of a student using a learning agent, will not read raw logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; One interactive daily report.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here are today's logs from five agents (logs/*.json). Create daily-report.html as one file with the data embedded. Show: a top card with what got done, what failed and what needs a human decision; a timeline per agent; a filter by agent; and a "why" panel that opens on click. Use plain, calm language for a non-technical reader.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Where to run it:&lt;/strong&gt; A scheduled script collects the logs, calls Claude, writes the file and emails or hosts it. Because the data is embedded, the page works offline when opened from an email attachment. For anything about children, show only what the parents need and do not include private details by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Use case 4: YouTube videos into lessons and explainers&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4PWqGaIAA0kff%3Fformat%3Djpg%26name%3Dsmall" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4PWqGaIAA0kff%3Fformat%3Djpg%26name%3Dsmall" alt="Image" width="680" height="369"&gt;&lt;/a&gt;YouTube videos into interactive examples&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; The best teaching is locked in long videos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Archive the transcript, then turn it into a page. &lt;a href="https://github.com/shreyvijayvargiya/tubelog" rel="noopener noreferrer"&gt;TubeLog&lt;/a&gt; saves each video's transcript as a Markdown file, which is the ideal input.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Read videos/&amp;lt;channel&amp;gt;/&amp;lt;video-id&amp;gt;.md. Create an HTML explainer with: five key ideas as cards, a diagram of the main process, a glossary of terms, and a link back to the original video. Stay inside the transcript. Do not add facts that the speaker did not say.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That last line matters. If you want a video instead, ask for a scene plan and Manim or Remotion code, one scene at a time. Always read the script before you render.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Use case 5: Codebase onboarding tour&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4PYz4aQAAqriN%3Fformat%3Djpg%26name%3Dsmall" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHT4PYz4aQAAqriN%3Fformat%3Djpg%26name%3Dsmall" alt="Image" width="680" height="412"&gt;&lt;/a&gt;Codebase onboarding tour with architechture map&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; A new developer opens a repo with 300 files and no idea where to start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; An interactive map of the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Explore this repo. Create onboarding.html as one file. Show an architecture diagram where each box is clickable and opens a panel with what the module does, its key files and how to run its tests. Add a "follow one request" walkthrough from the entry point to the database. Add a first-week reading order.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Where to run it:&lt;/strong&gt; Claude Code is best here because it can read the whole repo. Regenerate the file when the architecture changes. Click a few boxes and compare them to the code, since models sometimes describe files they only skimmed.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Five more ideas to try&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;API docs explorer:&lt;/strong&gt; Turn an OpenAPI file into a page where you can edit a request and see a sample response.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident postmortem:&lt;/strong&gt; Turn logs and chat into a timeline with a cause diagram.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meeting transcript to action page:&lt;/strong&gt; Decisions, owners and deadlines as a checklist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract or policy explainer:&lt;/strong&gt; Plain-English version with the risky clauses highlighted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Research paper explainer:&lt;/strong&gt; The method as an interactive diagram with a glossary.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Implementation Tools&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code:&lt;/strong&gt; Best for repos, logs and many files at once. Give it a folder and a target filename.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor:&lt;/strong&gt; Best when you are already in the editor. Use agent mode and open the HTML file in the browser pane or your browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude (chat):&lt;/strong&gt; Best for one-off pages. Upload the text and ask for an HTML artefact, then publish or download it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Text is the default, not the best option. &lt;/p&gt;

&lt;p&gt;For each task that ends with "someone has to understand this," ask for a diagram, an interactive page or an explainer. &lt;/p&gt;

&lt;p&gt;Start with one case today. Pick the one you hit most often, paste the prompt, and see how much faster you understand the result.&lt;/p&gt;

&lt;p&gt;More to come in the next one&lt;/p&gt;

&lt;p&gt;Shrey&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Build an AI Agent System That Researches 100 Blogs a Day (RSS, Google News, Reddit, YouTube)</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Sun, 04 Oct 2026 07:38:28 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/how-to-build-an-ai-agent-system-that-researches-100-blogs-a-day-rss-google-news-reddit-youtube-43lm</link>
      <guid>https://dev.to/shreyvijayvargiya/how-to-build-an-ai-agent-system-that-researches-100-blogs-a-day-rss-google-news-reddit-youtube-43lm</guid>
      <description>&lt;h2&gt;
  
  
  AI blog research pipeline — overview
&lt;/h2&gt;

&lt;p&gt;We watch more than ten YouTube videos a day for iHateReading. On top of that come dozens of company blogs, a few subreddits, and a news feed. All of it ends up as posts on Rust, JavaScript, React, Node, Cloudflare, Vercel, AI, OpenRouter, Stripe, payments, testing, and whatever else is on the plate.&lt;/p&gt;

&lt;p&gt;Reading that much by hand stops working fast. So we turned the research side into a system. Scrapers collect the material, an LLM decides what to look for, a memory stops us paying for the same page twice, and a person reviews what comes out.&lt;/p&gt;

&lt;p&gt;This article explains what each source gives you, how to fetch it, where it breaks, what it costs, and how the same pipeline becomes a monthly content-ideas dashboard you can sell.&lt;/p&gt;

&lt;h2&gt;
  
  
  At a glance — quotable facts
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;AI blog content pipeline&lt;/strong&gt; for high volume research usually combines RSS feeds, Google News RSS, Reddit or OAuth APIs, YouTube transcripts via &lt;code&gt;yt-dlp&lt;/code&gt;, an LLM query layer, and a URL hash store so you never pay twice for the same page. RSS is the cheapest source: one HTTP request and an XML parse, with no browser rendering. Google News search feeds use URLs like &lt;code&gt;https://news.google.com/rss/search?q=anthropic&amp;amp;hl=en-US&amp;amp;gl=US&amp;amp;ceid=US:en&lt;/code&gt; but items often need redirect resolution and terms restrict commercial reuse. For &lt;strong&gt;deduplicate scraped URLs with hashing&lt;/strong&gt;, normalise URLs (strip &lt;code&gt;utm_*&lt;/code&gt;, sort query params, lowercase host) before SHA-256, and store content hashes to skip unchanged pages. A &lt;strong&gt;content ideas dashboard SaaS&lt;/strong&gt; sells daily scored topics and format tags (Comparison, Glossary, FAQ, Explanatory), not auto-published articles — shared niche research keeps unit economics sane at roughly $60–$530/month stack cost before client revenue.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this system covers
&lt;/h2&gt;

&lt;p&gt;This is the research and ideation layer. It finds topics, pulls source material, and produces structured briefs. Writing, review, and publishing live in &lt;a href="https://ihatereading.in/blogs/how-we-write-100-seo-blogs-a-day-for-under-10-without-getting-hit-by-googles-scaled-content-penalty" rel="noopener noreferrer"&gt;How We Write 100+ SEO Blogs a Day for Under $10&lt;/a&gt;, which covers the CRM-table writing pipeline and the review step.&lt;/p&gt;

&lt;p&gt;Before any architecture, one warning about volume. Google's spam policy on scaled content targets &lt;a href="https://witscode.com/blogs/google-august-2026-spam-update" rel="noopener noreferrer"&gt;large numbers of pages made mainly to manipulate rankings, whatever tool produced them&lt;/a&gt;. A page written by AI from real sources and checked by a person is fine. A thousand templated near-duplicates are not. So every draft in our system starts from real source material, carries a category and a format tag, and gets a human pass before it ships.&lt;/p&gt;

&lt;p&gt;The category is the topic (Rust, React, AI, Payments). The format tag is one of &lt;strong&gt;Comparison&lt;/strong&gt;, &lt;strong&gt;Glossary&lt;/strong&gt;, &lt;strong&gt;FAQ&lt;/strong&gt;, or &lt;strong&gt;Explanatory&lt;/strong&gt;, and it picks the prompt template the writer uses later.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture
&lt;/h2&gt;

&lt;p&gt;The system is an AI agent in the practical sense: a loop, some tools, a model, memory, and evaluation. &lt;a href="https://ihatereading.in/blogs/agent-harnessing-what-is-an-agent-harness" rel="noopener noreferrer"&gt;Agent Harnessing: The Part of Building AI Agents Nobody Talks About&lt;/a&gt; covers that framing. For blog research it looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxehvfw23rfg5l14hps8v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxehvfw23rfg5l14hps8v.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Goal ("trending AI news this week")
        │
        ▼
  LLM query layer ──► search queries
        │
        ▼
  Source tools:  RSS │ Google News │ Reddit │ YouTube │ LinkedIn/X
        │
        ▼
  Memory (URL hash store) ── skip if already scraped
        │
        ▼
  LLM: summarise, classify (category + format), score
        │
        ▼
  Ideas / briefs ──► human review ──► writer pipeline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each source gets its own scraper, because each one breaks in its own way. Here they are, easiest to hardest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source 1: RSS feeds
&lt;/h2&gt;

&lt;p&gt;Most public blogs publish an RSS or Atom feed, one URL that lists recent posts as XML. Ours is at &lt;a href="https://ihatereading.in/rss.xml" rel="noopener noreferrer"&gt;ihatereading.in/rss.xml&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Fetching a feed takes one HTTP request with &lt;code&gt;fetch&lt;/code&gt; or &lt;code&gt;axios&lt;/code&gt; and an XML parse. No JavaScript rendering, no login. RSS is the cheapest and most reliable source by a wide margin.&lt;/p&gt;

&lt;p&gt;What works for us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep the feed list as data.&lt;/strong&gt; A table with feed URL, category, and polling interval lets you add a site without a deploy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Poll gently.&lt;/strong&gt; Hourly suits most blogs, daily suits slow ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send conditional requests.&lt;/strong&gt; Pass the &lt;code&gt;ETag&lt;/code&gt; or &lt;code&gt;Last-Modified&lt;/code&gt; value from the last fetch, and the server can answer with an empty &lt;code&gt;304 Not Modified&lt;/code&gt; when nothing changed. &lt;a href="https://specification.website/spec/performance/conditional-requests/" rel="noopener noreferrer"&gt;Conditional requests&lt;/a&gt; save bandwidth on both ends, and most feed servers support them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat the feed as an index.&lt;/strong&gt; Many feeds carry only a summary. Store the item link, then fetch the full page only for items that pass your relevance filter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We run 300+ feeds this way for the iHateReading Magazine. The list is in &lt;a href="https://ihatereading.in/blogs/300-websites-to-stay-updated-in-software" rel="noopener noreferrer"&gt;300+ websites to stay updated in Software&lt;/a&gt;, and third-party reads are on &lt;a href="https://ihatereading.in/explore" rel="noopener noreferrer"&gt;Explore&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source 2: Google News
&lt;/h2&gt;

&lt;p&gt;Google News is the best source for "what happened this week" topics. You can get it two ways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A paid news API.&lt;/strong&gt; Google no longer offers an official News API, so "Google News API" in practice means a &lt;a href="https://cloro.dev/blog/google-news-api/" rel="noopener noreferrer"&gt;third-party service that structures the results&lt;/a&gt; for you. You pay per request or per record. It needs the least upkeep, but plans still come with quotas, so don't expect unlimited calls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RSS and scraping.&lt;/strong&gt; Google News exposes search and topic feeds as RSS. A search feed looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://news.google.com/rss/search?q=anthropic&amp;amp;hl=en-US&amp;amp;gl=US&amp;amp;ceid=US:en
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;q&lt;/code&gt; is your query. &lt;code&gt;hl&lt;/code&gt;, &lt;code&gt;gl&lt;/code&gt;, and &lt;code&gt;ceid&lt;/code&gt; set language and region. Parse it like any other feed. Two catches:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Items link to Google redirect URLs, not the publisher's page. Resolving one costs an extra request, so resolve only the items that pass your filter.&lt;/li&gt;
&lt;li&gt;Google publishes the feed for personal use in a feed reader. &lt;a href="https://www.octoparse.com/blog/google-news-api" rel="noopener noreferrer"&gt;It carries a notice restricting it to personal, non-commercial use&lt;/a&gt;. If you plan to sell something built on it, read the terms first, or use a licensed API.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Scraping the Google News website itself gets blocked quickly. That is where scheduling and rotating IPs come in (see the proxy section below).&lt;/p&gt;

&lt;h2&gt;
  
  
  Source 3: Reddit
&lt;/h2&gt;

&lt;p&gt;Reddit is where developers ask the questions they can't find answers to: what confuses them, what they're comparing, which threads get upvoted. That makes it the best raw material for FAQ and Comparison posts. We built ours in &lt;a href="https://ihatereading.in/blogs/ai-automated-reddit-trend-scraper-that-saved-us-1000-month-on-content-creation" rel="noopener noreferrer"&gt;AI-Automated Reddit Trend Scraper that saved us $1000/month on Content Creation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The old trick was appending &lt;code&gt;.json&lt;/code&gt; to a subreddit URL or using the &lt;code&gt;/rss&lt;/code&gt; feeds. Don't count on either. Reports conflict: &lt;a href="https://www.redditapis.com/blogs/reddit-json-endpoint-dead-2026" rel="noopener noreferrer"&gt;one analysis says the endpoints still work but are rate-limited, filtered by User-Agent, and unreliable at volume&lt;/a&gt;, while other tool authors say unauthenticated JSON access was shut off in 2026. Test from your own server before you build on it.&lt;/p&gt;

&lt;p&gt;If you go ahead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Set a descriptive User-Agent.&lt;/strong&gt; A blank or generic one is the most common self-inflicted block.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Back off on 429s&lt;/strong&gt; with exponential delays, not retry loops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use the official OAuth API&lt;/strong&gt; for anything you depend on. Its limits are documented.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run on intervals.&lt;/strong&gt; A trend scraper doesn't need second-level freshness. Every 15 to 60 minutes per subreddit is enough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add proxies last.&lt;/strong&gt; Datacenter IPs get blocked fast, and residential ones cost more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Save score, comment count, and post age with the text. The votes are the signal: 40 comments in two hours beats 2,000 upvotes on a year-old thread.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source 4: YouTube transcripts
&lt;/h2&gt;

&lt;p&gt;YouTube gives you ideas, plus long spoken explanations that turn into written posts well. The flow: find a video URL, pull the transcript, hand it to the model.&lt;/p&gt;

&lt;p&gt;We use &lt;code&gt;yt-dlp&lt;/code&gt; for the transcript. It's a command-line tool you install with &lt;code&gt;pip&lt;/code&gt; or &lt;code&gt;brew&lt;/code&gt;, and Node can call it as a child process. These flags skip the video and fetch captions only, as &lt;a href="https://www.elektroda.com/qa,youtube-subtitles-download.html" rel="noopener noreferrer"&gt;this subtitle guide&lt;/a&gt; shows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# list available subtitle tracks&lt;/span&gt;
yt-dlp &lt;span class="nt"&gt;--list-subs&lt;/span&gt; &lt;span class="s2"&gt;"VIDEO_URL"&lt;/span&gt;

&lt;span class="c"&gt;# manual captions if they exist, no video download&lt;/span&gt;
yt-dlp &lt;span class="nt"&gt;--skip-download&lt;/span&gt; &lt;span class="nt"&gt;--write-subs&lt;/span&gt; &lt;span class="nt"&gt;--sub-langs&lt;/span&gt; en &lt;span class="nt"&gt;--sub-format&lt;/span&gt; &lt;span class="s2"&gt;"srt/best"&lt;/span&gt; &lt;span class="s2"&gt;"VIDEO_URL"&lt;/span&gt;

&lt;span class="c"&gt;# otherwise fall back to auto-generated captions&lt;/span&gt;
yt-dlp &lt;span class="nt"&gt;--skip-download&lt;/span&gt; &lt;span class="nt"&gt;--write-auto-subs&lt;/span&gt; &lt;span class="nt"&gt;--sub-langs&lt;/span&gt; en &lt;span class="nt"&gt;--sub-format&lt;/span&gt; &lt;span class="s2"&gt;"srt/best"&lt;/span&gt; &lt;span class="s2"&gt;"VIDEO_URL"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Try manual captions first. They're cleaner.&lt;/p&gt;

&lt;p&gt;Language isn't a problem either. A Hindi video gives a Hindi transcript, and the LLM can summarise it and write the post in English in one pass.&lt;/p&gt;

&lt;p&gt;Wrap this in a small endpoint that takes a video link and returns the transcript, and the agent can call it like any other tool. We build these the way we did in &lt;a href="https://ihatereading.in/blogs/one-honojs-file-for-entire-web-scraping-api" rel="noopener noreferrer"&gt;One honojs file for entire web scraping API&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source 5: LinkedIn, X, and Instagram
&lt;/h2&gt;

&lt;p&gt;These are the hardest sources, so use them sparingly.&lt;/p&gt;

&lt;p&gt;The official APIs are stable but rate-limited, often pricey, and some need an approved app. Scraping works at small scale with careful pacing and rotating proxies, but it breaks whenever a layout changes, and each platform's terms of service need checking.&lt;/p&gt;

&lt;p&gt;We use them for signals only, like which topics a niche is talking about this week, and never as the main source of article text. RSS, news, and transcripts give cleaner material for far less money.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI query layer
&lt;/h2&gt;

&lt;p&gt;Collecting data is the easy half. Finding the right data is harder. "Latest AI news" isn't one query, and a hand-written keyword list misses most of what a reader cares about. An LLM is better at trying many angles.&lt;/p&gt;

&lt;p&gt;The steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Give the agent a goal, like "find the latest trending YouTube videos on AI".&lt;/li&gt;
&lt;li&gt;The LLM writes a few focused queries: "top AI news", "latest AI trending", "OpenAI trending news", "Anthropic latest".&lt;/li&gt;
&lt;li&gt;Each query runs against a search surface: web search, YouTube search, or Google News.&lt;/li&gt;
&lt;li&gt;A scraping step reads each results page and pulls out the URLs.&lt;/li&gt;
&lt;li&gt;Each URL goes to the right tool by domain: YouTube links to the transcript endpoint, Reddit links to the Reddit scraper, news links to the article fetcher.&lt;/li&gt;
&lt;li&gt;The LLM summarises each result, tags it with a category and format, and drops anything off-topic.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lock the query generator to an output schema. Ask for JSON with a query string, a target source, and a freshness window, and validate it before running anything. Models write good queries but drift from the format unless you enforce it.&lt;/p&gt;

&lt;p&gt;Use a cheap, fast model for the query step, since it's high volume and low risk. Save the stronger model for summarising and scoring, where mistakes cost more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory: store every URL as a hash
&lt;/h2&gt;

&lt;p&gt;Scraping the same page twice costs you twice, once for the fetch and again for the LLM tokens. Memory prevents that.&lt;/p&gt;

&lt;p&gt;We store each scraped URL under a hash key with the scrape time. Why a hash:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same URL always maps to the same key, so duplicates can't sneak in.&lt;/li&gt;
&lt;li&gt;A key-value read is effectively constant time. No list scans.&lt;/li&gt;
&lt;li&gt;A key plus a small JSON value is all the schema you need.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Normalise before hashing. Lowercase the host, strip tracking parameters like &lt;code&gt;utm_*&lt;/code&gt;, sort the query parameters, and drop fragments. Skip this and &lt;code&gt;?utm_source=x&lt;/code&gt; makes every page look new.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createHash&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node:crypto&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;urlKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;searchParams&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;()]&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;utm_&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;searchParams&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;searchParams&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;createHash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sha256&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;digest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// value stored per key&lt;/span&gt;
&lt;span class="c1"&gt;// { url, firstSeen, lastScraped, etag?, contentHash?, ttlHours }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The stored timestamp drives a re-scrape policy based on how the content behaves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;News and Reddit threads:&lt;/strong&gt; re-check within hours or a day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blog posts and docs:&lt;/strong&gt; wait longer, and re-check with the stored &lt;code&gt;ETag&lt;/code&gt; so unchanged pages cost nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Static pages&lt;/strong&gt; (a published paper, an old announcement): scrape once, cache, never fetch again.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep a second hash of the page content. If the URL is old but the content hash changed, there's a real update worth processing. If it didn't change, skip the LLM call. That one habit cuts the biggest cost line in the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scheduling and IP rotation
&lt;/h2&gt;

&lt;p&gt;Give every source its own schedule and spread requests out. Bursts get blocked, and steady trickles mostly don't.&lt;/p&gt;

&lt;p&gt;For sources that block datacenter traffic, rotating proxies give each request or session a fresh IP, so no single address hits a rate limit. Watch the bill. &lt;a href="https://www.zyte.com/learn/how-much-do-rotating-proxies-cost/" rel="noopener noreferrer"&gt;Residential rotating proxies commonly cost $3 to $20+ per GB&lt;/a&gt;, and some budget providers advertise lower entry prices. You pay for bandwidth, so the biggest saving is not using proxies where you don't need them. RSS, Google News RSS, and transcripts mostly run without.&lt;/p&gt;

&lt;p&gt;If you'd rather not run this layer, a managed scraping API handles proxies, retries, and rendering. We compared the options in &lt;a href="https://ihatereading.in/blogs/firecrawl-vs-scrapingbee-vs-scrapingapi-vs-ihatereading-scrapefast" rel="noopener noreferrer"&gt;Firecrawl Alternatives: ScrapeFast vs Firecrawl vs ScrapingBee vs ScraperAPI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  From pipeline to product: a content-ideas dashboard
&lt;/h2&gt;

&lt;p&gt;Most funded startups need a steady stream of content and have nobody to find the topics. A pipeline that scrapes, scores, and tags ideas every day solves that, and it's a recurring need, which is why it works as a subscription.&lt;/p&gt;

&lt;p&gt;The dashboard has four parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Niche setup per client:&lt;/strong&gt; competitors, keywords, and target subreddits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A daily idea feed.&lt;/strong&gt; Each card shows the topic, category, format tag (Comparison, Glossary, FAQ, Explanatory), source links, and a suggested angle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A content calendar&lt;/strong&gt; built from the feed, so the team keeps publishing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An agent interface&lt;/strong&gt; on top, so a user can ask "what should we publish on Thursday?" instead of reading a table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We sell ideas and planning, not auto-published articles. The client's team still writes or reviews, and the dashboard takes over the research. We took the same route for lead generation in &lt;a href="https://ihatereading.in/blogs/from-finding-clients-to-a-smart-saas-ai-scraping-agent-dashboard" rel="noopener noreferrer"&gt;From Finding Clients to a Smart SaaS: Building an AI Scraping Agent Dashboard&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it costs to run (planning ranges, not invoices)
&lt;/h3&gt;

&lt;p&gt;These are planning assumptions for one niche pipeline shared across clients. Measure your own before pricing anything.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Line item&lt;/th&gt;
&lt;th&gt;What it covers&lt;/th&gt;
&lt;th&gt;Monthly range (USD)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hosting and database&lt;/td&gt;
&lt;td&gt;API, scheduled workers, key-value or Postgres store&lt;/td&gt;
&lt;td&gt;$20 to $100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proxies&lt;/td&gt;
&lt;td&gt;Only for blocked sources, roughly 10 to 30 GB&lt;/td&gt;
&lt;td&gt;$10 to $100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM usage&lt;/td&gt;
&lt;td&gt;Query generation, classification, summaries, idea cards&lt;/td&gt;
&lt;td&gt;$30 to $200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Optional paid news or scraping API&lt;/td&gt;
&lt;td&gt;Replaces the fragile parts of scraping&lt;/td&gt;
&lt;td&gt;$0 to $100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email, auth, payments&lt;/td&gt;
&lt;td&gt;Login, digests, billing&lt;/td&gt;
&lt;td&gt;$0 to $30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total shared stack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;about $60 to $530&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hosting is the line you control most. Our own site stays under $100 a month at 10k visitors, and &lt;a href="https://ihatereading.in/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors" rel="noopener noreferrer"&gt;we wrote up how&lt;/a&gt;. The LLM line is the one the URL and content hashes protect, since every skipped page is a skipped call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing.&lt;/strong&gt; Tools in this space publish self-serve tiers; &lt;a href="https://www.frase.io/vs/marketmuse" rel="noopener noreferrer"&gt;Frase lists $49, $129, and $299 per month&lt;/a&gt;. A done-for-you idea feed with a calendar can sit between $99 and $299.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unit economics.&lt;/strong&gt; The research cost is shared by every client in a niche, because the same Reddit threads and news items serve all of them. Ten clients on one niche at $99 to $299 is about $990 to $2,990 a month in revenue against roughly $60 to $530 in shared cost. Cost per client drops as you add clients in the same niche and climbs if every client needs a different one. So keep your niches few.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get the dashboard for your brand
&lt;/h2&gt;

&lt;p&gt;We're opening this up to a few more brands. If you want a content-ideas dashboard for your company or product, email &lt;strong&gt;&lt;a href="mailto:shreyvijayvargiya26@gmail.com"&gt;shreyvijayvargiya26@gmail.com&lt;/a&gt;&lt;/strong&gt; with the subject line "Content dashboard" and include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your niche, in one line.&lt;/li&gt;
&lt;li&gt;Five competitor or reference sites.&lt;/li&gt;
&lt;li&gt;The channels you publish on today.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We'll send back a sample idea feed for your niche. You can also find us on X at &lt;a href="https://x.com/treyvijay" rel="noopener noreferrer"&gt;@treyvijay&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;p&gt;Build the RSS fetcher first. It's the cheapest source and it teaches you the rest of the loop. Add the URL hash store before you add anything that costs money per call, then Google News, then the transcript endpoint. Leave Reddit and the social platforms for last, because they break the most. Keep a person reading what comes out the other end.&lt;/p&gt;

&lt;p&gt;For a monthly digest of what we're reading and building, see the &lt;a href="https://ihatereading.in/magazine" rel="noopener noreferrer"&gt;iHateReading Magazine&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;More to come in the next one.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Shrey&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Jev, Explained Like You're Five (Then Like You're Actually Building With It)</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Tue, 22 Sep 2026 10:36:06 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/jev-explained-like-youre-five-then-like-youre-actually-building-with-it-4kg4</link>
      <guid>https://dev.to/shreyvijayvargiya/jev-explained-like-youre-five-then-like-youre-actually-building-with-it-4kg4</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Originally published on &lt;a href="https://ihatereading.in/blogs/jev-explained-like-youre-five" rel="noopener noreferrer"&gt;iHateReading&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every few months, an AI lab ships something that isn't trying to be a better chatbot, and those are usually the launches worth actually stopping for. On September 15, 2026, a small San Francisco lab called &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" rel="noopener noreferrer"&gt;TypeSafe AI&lt;/a&gt; came out of stealth with exactly that kind of launch: a model called &lt;strong&gt;Jev&lt;/strong&gt;, and a new category they're calling &lt;strong&gt;System One models&lt;/strong&gt;. It doesn't chat. It doesn't write code. It doesn't generate a single word of text. And a decent chunk of the AI engineering internet spent the following week arguing about whether that's a gimmick or the missing piece nobody noticed was missing.&lt;/p&gt;

&lt;p&gt;We got early access this week, so let's actually walk through what it is — starting stupid simple, then all the way down to how you'd wire it into something real.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jev, explained like you're five
&lt;/h2&gt;

&lt;p&gt;Imagine you have a friend who is &lt;em&gt;incredibly&lt;/em&gt; fast at answering yes-or-no questions, or "pick one of these three things" questions. Not slow-and-thoughtful fast — instant. You show them a messy pile of information, ask them ten quick questions about it at once, and they answer all ten before you've finished reading the last one. They never make up an answer that wasn't one of your choices. And they tell you how sure they are, every single time.&lt;/p&gt;

&lt;p&gt;That friend is bad at writing you an essay. Ask them to explain something in their own words and they just stare at you — that's not their job. But for "which pile does this go in," "is this true or false," or "how bad is this on a scale of 1 to 3," they're basically unbeatable, and they barely cost you anything to ask.&lt;/p&gt;

&lt;p&gt;That's Jev. It's not a smaller ChatGPT. It's a completely different shape of tool, built to sit inside software and make small decisions, over and over, extremely fast and extremely cheap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Okay, now for real: what is Jev
&lt;/h2&gt;

&lt;p&gt;Jev is TypeSafe AI's first public &lt;strong&gt;System One model&lt;/strong&gt; — a new class of AI model built to return typed, probability-scored decisions instead of generated text. You send it a block of information (they call this the &lt;strong&gt;state&lt;/strong&gt;) plus a set of &lt;strong&gt;questions&lt;/strong&gt; with fixed possible answers, and it returns an answer to every question, each with a confidence score, in one fast pass. Nothing to parse. Nothing that can technically go off-script, because the set of valid answers was defined by you before the model ever saw the input.&lt;/p&gt;

&lt;p&gt;The name is a reference to Daniel Kahneman's &lt;em&gt;Thinking, Fast and Slow&lt;/em&gt; — the distinction between fast, intuitive "System 1" judgment and slow, deliberate "System 2" reasoning. TypeSafe's bet, laid out in their &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" rel="noopener noreferrer"&gt;launch post&lt;/a&gt;, is that most of the decisions software actually needs aren't the slow, deliberate kind chat models are built for — they're small, fast, repeated judgments, and nobody had built a frontier model specifically for that job until now.&lt;/p&gt;

&lt;p&gt;"Jev" itself is named after the 19th-century economist William Stanley Jevons, of Jevons-paradox fame — the observation that making something more efficient tends to &lt;em&gt;increase&lt;/em&gt; total consumption of it, not decrease it, because cheaper access unlocks new uses. TypeSafe is explicitly betting that making a "decision" cost a fraction of a cent will create demand for decisions nobody would have paid an LLM to make.&lt;/p&gt;

&lt;p&gt;Developer Flavio Copes put the core idea about as plainly as it gets in his &lt;a href="https://flaviocopes.com/jev" rel="noopener noreferrer"&gt;deep-dive on the model&lt;/a&gt;: Jev is basically a smart &lt;code&gt;if&lt;/code&gt; statement — the kind of conditional you'd reach for the moment the condition you actually care about is a judgment call rather than something code can compute directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who built it, and why it matters that they did
&lt;/h2&gt;

&lt;p&gt;Jev comes from TypeSafe AI, founded by Diogo Almeida, who spent time at OpenAI working on the instruction-following research that became part of ChatGPT's foundation. According to &lt;a href="https://www.mindstudio.ai/blog/jev-system-one-model-launch" rel="noopener noreferrer"&gt;MindStudio's writeup&lt;/a&gt; of the launch, TypeSafe emerged from two years of stealth work with roughly $40 million in seed funding behind it, led by DCVC.&lt;/p&gt;

&lt;p&gt;That pedigree matters for one reason: this isn't a hobby project or a fine-tuned wrapper around an existing model. TypeSafe built a new architecture, a new "parallel sampler," and a new training method from scratch, specifically because they decided the chat-model paradigm was structurally wrong for automation. Almeida's framing, straight from the announcement, is worth sitting with: language models have been "superhuman at chat for years," so why hasn't that translated into anywhere near as much real automation? His answer is that generating text one token at a time, meant to be read by a human, is the wrong shape for a decision meant to be consumed by code.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Jev actually works under the hood
&lt;/h2&gt;

&lt;p&gt;Here's where it gets genuinely interesting for anyone who builds software.&lt;/p&gt;

&lt;h3&gt;
  
  
  The training method: RLCD
&lt;/h3&gt;

&lt;p&gt;Most chat models today are trained with &lt;strong&gt;RLHF&lt;/strong&gt; (Reinforcement Learning from Human Feedback) or &lt;strong&gt;RLVR&lt;/strong&gt; (Reinforcement Learning with Verifiable Rewards) — both of which optimize for outputs that a human rater or a verifier would approve of. Jev is trained with something TypeSafe calls &lt;strong&gt;Reinforcement Learning for Calibrated Decisions (RLCD)&lt;/strong&gt;, which optimizes for something different entirely: probabilities that are &lt;em&gt;epistemically honest&lt;/em&gt;. A model that's 90% confident should be right roughly 90% of the time it says that — not overconfident, not randomly inconsistent between similar inputs.&lt;/p&gt;

&lt;p&gt;That distinction sounds academic until you realize what it fixes. Ask a normal LLM to rate its own confidence and, per TypeSafe's own comparison table, it "tends to be overconfident and inconsistent" — which means if a model can actually do a task correctly 95% of the time but never signals when it's in the remaining 5%, your code can't safely automate around it. You'd be trusting a coin that doesn't know when it's about to land wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three primitives: Noul, Choice, Score
&lt;/h3&gt;

&lt;p&gt;Every question you send Jev is one of three types, a breakdown Flavio Copes' guide lays out clearly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Noul&lt;/strong&gt; — a yes/no question. Returns a single probability from 0 to 1 that the answer is "yes."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choice&lt;/strong&gt; — pick one option from a fixed list you define. Returns the selected option, a full probability distribution across every option, and a confidence score.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score&lt;/strong&gt; — a position on an ordered scale you describe (say, three levels of bug severity). Returns a probability-weighted score across the levels, plus the full distribution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A request looks roughly like this (paraphrased from the public docs, not copied verbatim):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"jev-latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"state"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"ticket"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Export button crashes the settings page in Safari. Works fine in Chrome."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"questions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"choice"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"instructions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"What kind of ticket is `ticket`?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"criteria"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"bug_report"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Something is broken or behaving wrong"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"feature_request"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Asks for something that does not exist yet"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"billing"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Charges, invoices, refunds"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"severity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"instructions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"How severe is the issue?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"criteria"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Cosmetic, no impact on functionality"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Broken feature, workaround exists"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Blocking issue, no workaround"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And back comes a fully typed answer for both questions — plus, according to TypeSafe's own numbers, in around 70 to 500 milliseconds, against 3 to 329 seconds for a typical frontier LLM doing comparable work, and at $0.042 per million input tokens with output tokens free (because there's barely any output to generate in the first place). That pricing framing — "$42 per billion tokens" — is TypeSafe's own way of putting it on their homepage.&lt;/p&gt;

&lt;h3&gt;
  
  
  The practical limits worth knowing before you design around it
&lt;/h3&gt;

&lt;p&gt;A few concrete numbers matter once you're actually sketching a request rather than just reading about the concept. The state and every question together share a combined budget in the tens of thousands of tokens, and the state plus your single longest question needs to fit inside roughly 32,000 tokens — call it somewhere around 150,000 characters of plain English if you're mentally budgeting. A Choice question can offer up to 255 distinct options, and a Score can have anywhere from 2 to 10 ordered levels. None of these are limits you'll bump into for a typical support-ticket or lead-scoring question, but they matter the moment you try to feed Jev an entire document, a full conversation history, or a genuinely long list of candidate categories.&lt;/p&gt;

&lt;p&gt;It's also worth knowing that Jev currently reads text only — plain strings, JSON objects, or arrays of text. No images, audio, or video yet, which rules out a chunk of the "classify this upload" use cases people will inevitably try first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why parallel sampling is the actual unlock
&lt;/h3&gt;

&lt;p&gt;A normal LLM generates one token at a time, each conditioned on the last — that's why a longer answer takes proportionally longer. Jev's architecture evaluates every question against the same state &lt;em&gt;independently and in parallel&lt;/em&gt;, so adding a fourth or fifth question barely moves the response time. This is the detail that makes the whole "ask everything at once" workflow pattern make sense, which we'll come back to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three usage patterns worth stealing before you write your first Jev question
&lt;/h2&gt;

&lt;p&gt;Before getting into the DIY architecture sketch, it's worth covering the practical patterns that early adopters — and TypeSafe's own documentation, per Flavio Copes' extensive write-up — keep converging on. These matter regardless of whether you ever touch Jev directly, because they're really patterns about &lt;em&gt;how to think about cheap, parallel decisions&lt;/em&gt; in general.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Ask everything at once ("speculative fan-out").&lt;/strong&gt; Because every question in a request runs in parallel against the same state, and each additional question only costs its own extra tokens rather than a whole new round trip, the right instinct with Jev is the opposite of how you'd design an LLM workflow. Instead of asking one question, waiting, then deciding what to ask next, you front-load every independent question you might conceivably need — including ones whose answer will only matter for some inputs — and let your code decide afterward which answers to actually use. One published cookbook example batched thirteen questions into a single call and came out roughly 12x cheaper and 10x faster than asking them one at a time, mostly because the shared context only had to be sent once instead of thirteen times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Compose decisions in code, don't ask one giant question.&lt;/strong&gt; If a real-world judgment depends on several independent factors — say, ticket priority depending on severity, customer frustration, and how much detail the report includes — the temptation is to ask Jev one big "how urgent is this?" question. The pattern that works better is asking three separate, narrow Score questions and then combining them yourself with weights you control:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="mf"&gt;0.6&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;normalized&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;answers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;severity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="mf"&gt;0.3&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;normalized&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;answers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frustration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;normalized&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;answers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;report_quality&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The advantage isn't just accuracy — it's that when the resulting ranking doesn't match what your team would actually decide, you adjust a coefficient and rerun, instead of rewriting a prompt and hoping the new phrasing doesn't quietly break something else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Gate actions on confidence, not just the answer.&lt;/strong&gt; A Choice or Score response always comes back with a &lt;code&gt;confidence&lt;/code&gt; value alongside the actual answer — computed from how concentrated or spread-out the underlying probability distribution is. The practical pattern is a three-tier gate: act automatically above a high threshold, ask for human confirmation in a middle band, and route to a person entirely below a low threshold. Where exactly those thresholds sit is genuinely domain-specific — TypeSafe's own docs use 0.5 as an example "needs review" floor and 0.9 before letting a destructive action proceed unconfirmed, but those are illustrative starting points, not universal defaults. You're meant to run Jev against your own labeled data first and tune from there.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if you wanted to build something like this yourself?
&lt;/h2&gt;

&lt;p&gt;You obviously can't rebuild TypeSafe's proprietary architecture over a weekend — RLCD and their parallel sampler are genuinely novel research. But the &lt;em&gt;shape&lt;/em&gt; of what they built is something any decent engineer can reason about, and honestly, sketching it out is the fastest way to actually understand why it's fast.&lt;/p&gt;

&lt;p&gt;Picture a much dumber, DIY version:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fix your answer space in advance.&lt;/strong&gt; Instead of asking an LLM "what should happen here?" and parsing free text back, you predefine every possible answer as an enum, before the model ever sees the input. This alone removes an entire category of failure — the model literally cannot return something outside your schema, because you're not asking it to generate a string, you're asking it to choose or score.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch every independent question into one call.&lt;/strong&gt; If you're already paying for one model invocation with the full context loaded, asking five unrelated questions about that same context is nearly free compared to five separate round trips. This is the same intuition behind function-calling batches, just pushed further because there's no sequential text generation cost per extra question.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Turn every output into a probability, not a label.&lt;/strong&gt; Instead of returning &lt;code&gt;"category": "billing"&lt;/code&gt;, return a distribution across every category you defined. This is genuinely the biggest mental shift — a naive classifier gives you an answer; a calibrated one gives you an answer &lt;em&gt;and&lt;/em&gt; how much to trust it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Train (or at least evaluate) against calibration, not just accuracy.&lt;/strong&gt; A model that's right 90% of the time but never tells you which 10% it's guessing on is far less useful in production than one that's right 85% of the time but honestly flags its own uncertainty. This is the part that actually requires real ML research to do well — you can fake steps 1 through 3 with a system prompt and a JSON schema on top of any existing LLM today, but getting genuinely calibrated confidence out of it is a much harder, much more interesting problem, and it's the part TypeSafe spent two years in stealth actually solving.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to feel this difference yourself without waiting on Jev access, the closest thing available right now is forcing structured outputs on an existing model — the &lt;a href="https://vercel.com/i/what-is-jev" rel="noopener noreferrer"&gt;Vercel AI SDK's evaluation function&lt;/a&gt; actually supports this exact comparison, letting you run the same typed questions through GPT or Claude via an adapter alongside TypeSafe's own model, so you can see the gap in latency, cost, and self-reported confidence directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cool alternative example: someone already shipped a real tool with it
&lt;/h2&gt;

&lt;p&gt;Within days of launch, a developer named Tamara Tran published &lt;a href="https://github.com/tamaratran/fast-jev-compaction" rel="noopener noreferrer"&gt;&lt;code&gt;fast-jev-compaction&lt;/code&gt;&lt;/a&gt; — a genuinely clever open-source Claude Code plugin, and one of the clearest "this is what Jev is actually for" examples floating around right now.&lt;/p&gt;

&lt;p&gt;The problem it solves: when a long coding-agent session runs out of context, most tools compact it by asking an LLM to &lt;em&gt;summarize&lt;/em&gt; the old messages. Summaries are lossy — a specific file path, an exact error string, or a constraint mentioned twelve turns ago can quietly vanish, and you don't find out until the agent breaks something it "forgot" about.&lt;/p&gt;

&lt;p&gt;Tran's plugin does something different. Instead of summarizing, it asks Jev two simple yes/no questions about every old tool call in the transcript: &lt;em&gt;should this call stay, given everything else in the conversation, and separately, should its result stay verbatim.&lt;/em&gt; Anything that should stay, stays exactly as written — never rewritten, never paraphrased. Anything Jev is confident is no longer needed gets dropped or truncated. Nothing is ever hallucinated back into existence, because nothing is being regenerated — only kept or removed.&lt;/p&gt;

&lt;p&gt;The technical details are worth appreciating: the tool sends Jev the &lt;em&gt;entire&lt;/em&gt; conversation state on every batch, splits questions across multiple parallel requests to stay under Jev's context window, and lets you tune a &lt;code&gt;keepThreshold&lt;/code&gt; for how conservative the pruning should be. Since its launch it's already picked up over 3,000 GitHub stars and more than 170 forks — a strong early signal that "delete precisely, never summarize lossily" is a real pain point Jev happens to be unusually well-suited for.&lt;/p&gt;

&lt;p&gt;It's a small tool, but it's a genuinely good illustration of the core idea: nobody needed Jev to &lt;em&gt;write&lt;/em&gt; anything here. They needed a fast, cheap, trustworthy yes/no on a few hundred old tool calls, over and over, every time a session got long. That's the whole category.&lt;/p&gt;

&lt;h2&gt;
  
  
  What people are actually building with it right now
&lt;/h2&gt;

&lt;p&gt;It's been less than a week since launch, so none of this is "production case study" territory yet — but the range of early experiments says a lot about where developers instinctively reach for this kind of model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Games and real-time loops.&lt;/strong&gt; TypeSafe's own launch demos included a Doom bot making roughly ten decisions a second purely from structured game state (at an estimated $7/hour), and a Wikiracing bot navigating Wikipedia's link graph by choosing among hundreds of options per step without ever picking a link that didn't exist. &lt;a href="https://www.mindstudio.ai/blog/jev-system-one-model-launch" rel="noopener noreferrer"&gt;MindStudio's coverage&lt;/a&gt; also describes a Subway Surfers-style dodge/jump/duck demo and a simulated drone navigating an obstacle course from structured position and distance data — the common thread being tasks that need split-second reactions, not conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Routing and triage.&lt;/strong&gt; The most commonly proposed production use so far is intent routing — put Jev in front of a support inbox, an agent pipeline, or a helpdesk, and let it decide &lt;em&gt;which&lt;/em&gt; handler, model, or human a request should go to, before anything expensive gets involved. LangChain shipped a &lt;a href="https://www.langchain.com/blog/building-a-harness-with-jev" rel="noopener noreferrer"&gt;native integration&lt;/a&gt; for exactly this within days of launch, exposing Jev through a &lt;code&gt;TypeSafeClassifier&lt;/code&gt; that plugs into existing chains alongside every other model provider LangChain already supports.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data labeling at a scale that used to be uneconomical.&lt;/strong&gt; &lt;a href="https://www.datacamp.com/blog/system-one-models-jev" rel="noopener noreferrer"&gt;DataCamp's writeup&lt;/a&gt; cites an early benchmark where Jev classified over a thousand research papers across two dozen topics for a fraction of a dollar, at roughly a quarter-second per paper — the kind of bulk classification job that was technically possible with a full LLM before, just rarely worth the bill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verification, not just generation.&lt;/strong&gt; A quieter but arguably more interesting pattern is using Jev to check work an LLM already did, rather than to do the original task. One proposed workflow starts with an existing pipeline that generates episode summaries with a full LLM, then runs each individual claim in that summary back through Jev against the original transcript, asking a simple "does the transcript actually support this claim" Noul for every sentence. The generative model still does the writing; Jev becomes the cheap, fast fact-check layer sitting after it, flagging anything with low confidence for a human to look at before it ships. The same shape works for code review — running a handful of Score and Noul questions per changed file in a pull request (security risk, complexity, whether the commit message actually describes the change) and combining them into a risk score in code, rather than asking a full LLM to "review this PR" and parsing prose back out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Turning free text into features for ordinary machine learning.&lt;/strong&gt; This one's less flashy but genuinely practical: instead of using Jev's output directly as a decision, you use a batch of Jev questions to turn unstructured text into a set of numeric columns — then feed those columns into a classical model like a gradient-boosted tree. One published example started with eighteen questions and, across a few rounds of refinement, grew to nearly forty, producing dozens of usable numeric features from raw text without hand-engineering any of them.&lt;/p&gt;

&lt;p&gt;There's also a real thread of people documenting their own builds on X as they get early access. Roman, who &lt;a href="https://x.com/romanbuildsaas/status/2100891604735099103" rel="noopener noreferrer"&gt;posts regularly about building SaaS products in public&lt;/a&gt;, walked through wiring Jev into a working project within his first day of access — the kind of build-log thread that's genuinely more useful than a launch demo, because it shows the rough edges too. Moritz Kremb &lt;a href="https://x.com/moritzkremb/status/2100895894287839255" rel="noopener noreferrer"&gt;shared his own hands-on look&lt;/a&gt; at getting a real use case running with it, and Sydney Runkle — an engineer at Pydantic, a company whose entire job is structured, type-safe data — &lt;a href="https://x.com/sydneyrunkle/status/2100754364545761643" rel="noopener noreferrer"&gt;weighed in on the launch&lt;/a&gt; with the kind of plain-language framing that made the rounds precisely because it cut through the "revolutionary" marketing language and explained, simply, what problem this actually solves for people already fighting with structured output from regular LLMs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jev versus the tools you're already using
&lt;/h2&gt;

&lt;p&gt;It genuinely doesn't compete with ChatGPT, Cursor, or Claude Code — it's built to sit &lt;em&gt;inside&lt;/em&gt; them, not replace them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What you give it&lt;/th&gt;
&lt;th&gt;What comes back&lt;/th&gt;
&lt;th&gt;Its job&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ChatGPT&lt;/td&gt;
&lt;td&gt;A prompt or conversation&lt;/td&gt;
&lt;td&gt;Generated text&lt;/td&gt;
&lt;td&gt;General assistant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor / Claude Code&lt;/td&gt;
&lt;td&gt;A coding goal + repo access&lt;/td&gt;
&lt;td&gt;File edits, commands, results&lt;/td&gt;
&lt;td&gt;Coding agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jev&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;State + typed questions&lt;/td&gt;
&lt;td&gt;Choices, scores, probabilities&lt;/td&gt;
&lt;td&gt;A decision primitive&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A coding agent could call Jev before running a risky shell command, to classify it as read-only, reversible, or destructive — and only proceed automatically above a confidence threshold you set. A support platform could use Jev to decide whether a ticket needs a database lookup, a full LLM response, or a human, before spending money on the expensive path. The generative model still writes; Jev just decides &lt;em&gt;which&lt;/em&gt; path gets taken, extremely fast, and (crucially) tells your code exactly how sure it is.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost and speed numbers, and why the gap matters more than it looks
&lt;/h2&gt;

&lt;p&gt;The headline numbers — 40x to 200x faster, and dramatically cheaper per call — are easy to read as marketing hyperbole, and TypeSafe itself is upfront that their published multiples sit at the high end of what you'd see in the real world. But the underlying mechanism behind the gap is real, not just clever pricing.&lt;/p&gt;

&lt;p&gt;A frontier LLM generating a structured JSON response still has to generate every output token sequentially, and it's priced against both input &lt;em&gt;and&lt;/em&gt; output tokens — output tokens typically running several times more expensive than input. Jev skips text generation almost entirely, which is exactly why TypeSafe can offer output tokens for free: there's barely anything to meter. That's not a discount decision, it's a structural consequence of the architecture.&lt;/p&gt;

&lt;p&gt;Here's the arithmetic worked out simply, since the raw multiples don't mean much without it. A typical support-ticket triage question, state plus a handful of typed questions, runs around 300 tokens in TypeSafe's own published examples. At $0.042 per million input tokens, that's roughly $0.0000126 per call — call it $1.26 to triage 100,000 tickets of similar size. Run that same volume through a general-purpose frontier LLM at typical structured-output pricing and you're looking at a bill that's easily 20-50x higher, before you even account for the extra latency of waiting on sequential token generation for each one.&lt;/p&gt;

&lt;p&gt;Where this actually shows up isn't in one flashy demo — it's in workflows that make the &lt;em&gt;same kind&lt;/em&gt; of decision thousands or millions of times. A company running a classification step over every row of a large dataset, or a routing check on every single support message, is the exact shape of workload where shaving 40x off cost and latency compounds into something that changes what's economically viable to automate at all — rather than a one-off call where the difference barely registers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Jev genuinely breaks
&lt;/h2&gt;

&lt;p&gt;No credible writeup of this launch skips the limitations, and TypeSafe itself publishes a running list of what the current model handles badly. The honest version, worth knowing before you reach for it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It cannot do arithmetic reliably.&lt;/strong&gt; Counting characters, comparing numeric values, or reasoning about dates as text are all weak spots — that logic belongs in your code, not in a Jev question.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It reads the question you wrote, not the one you meant.&lt;/strong&gt; Precision in your &lt;code&gt;criteria&lt;/code&gt; matters enormously; vague instructions produce vague, low-confidence answers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It cannot write anything.&lt;/strong&gt; No summaries, no explanations, no generated replies — if the task needs prose, you still need a real LLM alongside it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Score is not a precise measurement.&lt;/strong&gt; It's a probability-weighted position on a scale you defined, useful for thresholds and ranking, not for reconstructing an exact numeric magnitude — a 1.4 doesn't mean "40% of the way from level 1 to level 2" in any rigorous sense.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indirection tanks accuracy.&lt;/strong&gt; Double negatives, a property nested inside a property, anything that needs the model to hop through several logical steps to reach the actual answer, all perform noticeably worse than a question that points straight at the relevant part of the state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A typed answer isn't automatically a correct one.&lt;/strong&gt; A Choice will always return one of the options you allowed it to — that's the whole guarantee — but it can still confidently pick the wrong one. Schema correctness and semantic correctness are genuinely two separate problems, and treating "it returned valid JSON" as "it got the right answer" is the single most common early mistake people report.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you need to count how many items in a list match some fuzzy condition — "how many of these five reviews are actually positive" — the fix isn't to ask Jev to count. It's to ask one Noul per item ("is this specific review positive?") and sum the results yourself in code. The counting stays in code; the judgment stays with the model.&lt;/p&gt;

&lt;p&gt;None of that undercuts the core idea — it just draws the actual boundary of where a "decision model" is the right tool versus where you still need a model that can reason and write.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this actually matters if you're building B2B or SaaS products
&lt;/h2&gt;

&lt;p&gt;For anyone running the kind of AI-agent stack we've written about before — scoring leads, triaging inbound messages, or &lt;a href="https://ihatereading.in/blogs/smallest-ai-agent" rel="noopener noreferrer"&gt;deciding what a scraped signal is actually worth&lt;/a&gt; before spending an LLM call on it — Jev's whole pitch is directly relevant. A huge share of what people currently pay full LLM prices for isn't generation at all; it's classification wearing a chat model's clothing. Is this lead worth a follow-up? Which of our five categories does this ticket belong to? Is this shell command safe to run unattended? None of those questions need a paragraph back — they need a fast, cheap, trustworthy answer with a confidence score attached, which is exactly the gap that a guardrail layer like the kind covered in &lt;a href="https://ihatereading.in/blogs/whole-fight-for-ai-sandbox" rel="noopener noreferrer"&gt;our piece on the fight over AI agent sandboxing&lt;/a&gt; keeps running into: agents need a cheap way to check their own actions before they take them, not just after.&lt;/p&gt;

&lt;p&gt;If even a third of what your agent stack currently spends on full LLM calls is secretly a classification task, this is worth thirty minutes in the playground to find out.&lt;/p&gt;

&lt;p&gt;There's a simple back-of-envelope way to check before you spend that thirty minutes: pull last month's AI provider invoice, and go line by line asking "did this call return a piece of writing someone read, or did it return a label, a route, a yes/no, or a score that code then acted on." Anything in the second bucket is a candidate. Most teams running AI-heavy products for more than a few months are surprised by how large that second bucket actually is — inbox triage, lead scoring, moderation flags, and routing decisions all tend to hide inside a chat-completion API call long after nobody's reading the "chat" part of the response anymore.&lt;/p&gt;

&lt;p&gt;It's also worth being honest about what doesn't change. Jev doesn't reduce how much you spend on the actual generative work — the emails your product writes, the code your agent produces, the summaries your dashboard shows. It only touches the decisions sitting around that generative work, deciding whether it should run at all, and on what. For a product that's mostly generation with very little routing or classification in between, the realistic saving is small no matter how good the per-call multiple looks on a slide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two ways to close this out
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you build things:&lt;/strong&gt; this is worth an actual afternoon, not a bookmark. Sign up for early access, don't touch the example prompts, and instead paste in one real, boring, recurring decision your own code already hardcodes badly — a support-routing rule, a spam filter, a "is this command safe" check. Run it beside your existing logic for a week before you let it touch anything. The unglamorous decisions are exactly where this model is built to live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're skeptical (reasonably):&lt;/strong&gt; the fair critique isn't that Jev doesn't work — early, independent writeups from Flavio Copes, DataCamp, and LangChain all corroborate the basic mechanics. The fair critique is that "40x-200x faster" only matters for the slice of your AI spend that's actually classification dressed up as chat completion. For a lot of products, that slice is smaller than the headline number wants you to assume. Measure your own workload before you believe either extreme.&lt;/p&gt;

&lt;p&gt;Either way, System One models are a genuinely new shape of tool, not a rebrand of something that already existed — and the fact that a real open-source project shipped useful, non-trivial code on top of it within days of a waitlist-gated early access period is a better signal than any launch benchmark could be.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>SaaS Directories in 2026: The Complete Submission Playbook</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Mon, 21 Sep 2026 01:32:05 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/saas-directories-in-2026-the-complete-submission-playbook-2ic6</link>
      <guid>https://dev.to/shreyvijayvargiya/saas-directories-in-2026-the-complete-submission-playbook-2ic6</guid>
      <description>&lt;h1&gt;
  
  
  SaaS Directories in 2026: The Complete Submission Playbook
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Primary keyword: SaaS directories. Long-tail targets: free SaaS directories to submit in 2026, SaaS directory submission strategy, dofollow SaaS directories list, best SaaS launch directories for indie hackers, Product Hunt alternatives for SaaS launch, how to submit your SaaS to directories.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You ship a product, you post it on X, you tell your five closest indie hacker friends, and then you sit there refreshing analytics waiting for something to happen. Most solo founders skip the boring middle step that actually compounds: getting your product listed everywhere a buyer, a search engine, or an AI model might go looking for it.&lt;/p&gt;

&lt;p&gt;That's what a SaaS directory does. Not a growth hack, not a hidden trick — just a listing on a page that a human, a crawler, or a language model visits when someone asks "what tool should I use for X." Do it on five random sites and nothing happens. Do it systematically, on the right sites, with the right information, and it becomes one of the few distribution channels that keeps paying you back a year after you stopped thinking about it.&lt;/p&gt;

&lt;p&gt;We maintain a &lt;a href="https://ihatereading.in/saas-directories" rel="noopener noreferrer"&gt;database of 393 SaaS directories&lt;/a&gt; — filterable by category, fee type, and domain rank — because we got tired of re-Googling "best SaaS directories" every time we shipped something new. This is the long version of what we've learned running products through that list: which directories are worth the ten minutes, which ones to skip, and how to actually build a submission system instead of doing it once in a panic the week before launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why SaaS directories still matter in 2026
&lt;/h2&gt;

&lt;p&gt;The honest pitch for directories used to be simple: free backlink, maybe some referral traffic. That's still true, but it's no longer the whole story, and treating it as the whole story is why a lot of founders under-invest here.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;They're still a real backlink source.&lt;/strong&gt; A profile on a directory with real domain authority passes link equity to your site the same way it did five years ago. It's slower than a feature in a major publication, but it's also something you fully control and can execute on your own schedule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They're becoming a citation source for AI answer engines.&lt;/strong&gt; When someone asks ChatGPT, Perplexity, or Gemini "what's the best tool for X," those systems pull from a citation ecosystem — and a striking amount of that ecosystem is a small number of repeat sources. One analysis of millions of citation links found that over 35% of LLM citations for B2B SaaS products trace back to just ten sources, with Reddit and G2 dominating that list. Directories with real traffic and real reviews are exactly the kind of source that shows up in that citation pool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They build co-citation patterns.&lt;/strong&gt; The more often your product appears listed alongside competitors on directories like SaaSHub, AlternativeTo, or StackShare, the more consistently AI systems learn your product belongs in that category — which matters more than any single listing on its own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They're a compounding, permanent asset&lt;/strong&gt;, unlike a social post that disappears from anyone's feed within hours or an ad that stops working the second you stop paying for it. A directory listing sits there, gets indexed, and keeps working with zero ongoing spend once it's live.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that means directories replace a real distribution strategy. They're one input, not the whole system — but they're a cheap, controllable one, and most solo founders leave it half-finished.&lt;/p&gt;

&lt;h2&gt;
  
  
  The old "submit to 300 directories" advice is dead
&lt;/h2&gt;

&lt;p&gt;If you search this topic, you'll find plenty of lists claiming "250+ directories" or "500+ sites to submit to." Technically true, mostly useless. A large share of those sites are general web directories sitting at low domain authority with essentially no real traffic, and submitting to dozens of them in a weekend does not build meaningful SEO value the way it might have a decade ago.&lt;/p&gt;

&lt;p&gt;Worse, it can actively work against you. Google's link-quality systems are specifically tuned to discount, and in some cases penalize, patterns that look like automated mass submission rather than genuine, gradual listing activity. A cluster of forty low-quality directory links created in a single afternoon reads as spam behavior, not organic growth — even if every individual listing is harmless on its own.&lt;/p&gt;

&lt;p&gt;The shift that matters for 2026: quality and relevance beat raw count. A handful of relevant, well-trafficked directories does more for you than a hundred generic ones. One recent breakdown of startup directory submissions put it plainly — the strategic placement in a smaller number of high-quality, niche-relevant directories real humans actually browse is where the actual lift comes from, not the mass-submission approach that stopped working years ago.&lt;/p&gt;

&lt;p&gt;That's also the whole reason a filterable, curated database is more useful than a raw list of names. Filtering by domain rank and category before you submit anything saves you from spending an entire evening on sites that will never move a single metric.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tiering your directory list before you submit anything
&lt;/h2&gt;

&lt;p&gt;Not every directory deserves the same amount of your time. Before you open a single submission form, sort your target list into three tiers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tier 1 — the high-authority general platforms.&lt;/strong&gt; These are the sites almost every SaaS product should be on regardless of niche: G2, Capterra, Crunchbase, Product Hunt, AlternativeTo, SaaSHub, Trustpilot, and similar domain-rank-90-plus platforms. They take longer to fill out properly (some require a review count or verification step) but the backlink and discovery value is worth the extra time. In our own database, entries like Google Business Profile, Trustpilot, and Behance sit at a domain rank around 96–100 — this is the tier those numbers describe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tier 2 — general SaaS databases and launch platforms.&lt;/strong&gt; Broader catalogues where buyers browse and compare software by category or use case, plus the launch-day platforms (Product Hunt alternatives, Show HN, BetaList). Most are free, sit on solid-authority domains, and take only minutes to fill in — genuinely some of the easiest wins on the whole list once Tier 1 is handled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tier 3 — niche and vertical directories.&lt;/strong&gt; Directories scoped to your exact category — AI tool directories if you're building an AI product, dev-tool directories if you're shipping for developers, design-tool directories if that's your audience. Lower raw traffic individually, but the audience-to-submission-effort ratio is often the best of the three tiers, because the people browsing a niche directory already have buying intent for exactly your category.&lt;/p&gt;

&lt;p&gt;Work through them in that order. Tier 1 first because the backlinks and review platforms take longest to set up and matter most; Tier 2 next because it's the highest volume of quick wins; Tier 3 last, spread across the weeks after launch as an ongoing habit rather than a one-time sprint.&lt;/p&gt;

&lt;h2&gt;
  
  
  A submission plan that doesn't burn a weekend
&lt;/h2&gt;

&lt;p&gt;Spreading submissions out is not just about sanity — it also looks more natural to search engines than a sudden burst of new referring domains appearing overnight. A reasonable pace: three to five directory submissions a week, sustained over a month or two, rather than forty in two days.&lt;/p&gt;

&lt;p&gt;A four-week structure that works for most solo launches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Week 1 — the anchors.&lt;/strong&gt; Crunchbase, G2, Capterra, and your launch-platform submission (Product Hunt or an alternative, scheduled two to three weeks ahead if you're going for a real launch day). These take the longest to set up properly and matter most for both backlink value and legitimacy signals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 2 — the Gartner-family and general-directory cluster.&lt;/strong&gt; GetApp and Software Advice sit in the same network as Capterra, so once you've filled out one properly, the other two are a near-identical copy-paste. Add AlternativeTo and SaaSHub here too — both are specifically built around comparison and "alternatives to X" search intent, which is some of the highest-commercial-intent traffic a directory can send you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 3 — launch-community and review platforms.&lt;/strong&gt; BetaList (if you're still pre-launch or want to build a waitlist), Indie Hackers, Trustpilot, and any deal marketplace relevant to your pricing model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 4 onward — niche and vertical directories.&lt;/strong&gt; This becomes an ongoing weekly habit rather than a finish line: two or three relevant niche listings a week for as long as your category has new ones worth joining.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Track it in a simple sheet: directory name, date submitted, live URL once approved, whether the link is dofollow, and whether it shows up indexed in Google Search Console a few weeks later. That last column matters more than people think — a listing that never gets indexed isn't doing anything for you no matter how high the directory's domain rank looks on paper.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a strong submission actually needs
&lt;/h2&gt;

&lt;p&gt;Most submissions fail to convert because the founder treats the form like a chore instead of a landing page. Before you touch a single directory, put together one reusable asset kit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A tagline under 60 characters&lt;/strong&gt; that states what the product does without marketing filler — "Invoice automation for freelance designers," not "Revolutionizing the future of freelance finance."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A 150–300 word description&lt;/strong&gt; written for a skimmer, not a reader — lead with the problem, name the specific audience, and end with the concrete outcome. Vague marketing language actively hurts you here: directory editors (and increasingly, AI systems parsing the listing) extract facts, not adjectives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Four to six real screenshots&lt;/strong&gt;, not a generic hero image — directories that show the actual product interface convert browsers into clicks better than a polished marketing graphic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A logo on a transparent background&lt;/strong&gt;, sized for both light and dark directory themes so it doesn't render as a white box on a white card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A short demo clip or GIF&lt;/strong&gt;, thirty to sixty seconds, for the platforms that support media uploads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent NAP-style details&lt;/strong&gt; — same product name, same one-line description, same URL structure — across every listing. Directories and AI systems both treat inconsistency as a weak trust signal, the same way a business with three slightly different addresses online looks less credible than one with a single consistent listing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Build this kit once, store it in a folder, and every submission after that takes five to ten minutes instead of twenty, because you're pasting instead of writing from scratch each time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product Hunt and the launch-day platforms
&lt;/h2&gt;

&lt;p&gt;Product Hunt is still the single biggest one-day discovery event for a consumer or prosumer product, and it's still worth doing — but treat it as a spike channel, not your entire directory strategy. In 2026, hundreds of products launch there every single day, and a small indie product without an existing audience can get buried fast.&lt;/p&gt;

&lt;p&gt;The mechanics worth knowing before you commit a launch day to it: on an average launch, a large share of your upvotes — often 40 to 60 percent — come from your own existing audience rather than organic Product Hunt discovery, and first-hour velocity matters more to the algorithm than your total vote count by the end of the day. That's why a small pre-launch waitlist, even a few hundred genuinely interested people, tends to outperform a cold launch with zero warm audience.&lt;/p&gt;

&lt;p&gt;If Product Hunt doesn't fit your product or timing, there's a real ecosystem of alternatives that have grown specifically because Product Hunt has gotten more crowded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hacker News (Show HN)&lt;/strong&gt; — the standard for developer tools, APIs, and technical products, where a clean, jargon-free post and a frictionless demo matter far more than marketing copy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BetaList&lt;/strong&gt; — built for pre-launch products, ideal if you want to build a waitlist before you're ready for a full Product Hunt push.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indie Hackers&lt;/strong&gt; — less a directory, more a community, but "build in public" updates there convert into genuine early users because the audience understands the tradeoffs of building solo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Newer weekly and rolling-visibility platforms&lt;/strong&gt; — several launch platforms built in the last couple of years intentionally avoid the 24-hour-then-gone format, giving a listing sustained visibility for weeks instead of a single day.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern worth internalizing: don't view a launch as a single event you get one shot at. View it as the start of an ongoing habit of showing up in these communities every time you ship something genuinely worth talking about — a new feature, a pricing change, a milestone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistakes that quietly waste the whole exercise
&lt;/h2&gt;

&lt;p&gt;A handful of mistakes show up over and over in how founders run directory submissions, and each one quietly caps how much value the effort returns.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Submitting to volume over relevance.&lt;/strong&gt; Forty low-authority general directories add noise to your backlink profile without meaningfully improving it. A DR 40 directory that's the actual bookmark of your exact audience is worth more than a DR 70 directory that lists everything from dropshipping stores to enterprise SaaS with no real curation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy-pasting the same three-sentence description everywhere.&lt;/strong&gt; Directories (and increasingly AI systems) can tell when a listing reads like it was pasted without customization for that specific audience. A small edit to the first sentence per platform — what problem this specific audience has, why this tool fits them — takes two minutes and meaningfully improves conversion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submitting once and walking away.&lt;/strong&gt; A listing left untouched for a year, with an outdated screenshot or a dead pricing link, is worse than no listing at all — it actively signals the product may be abandoned. Revisit your live listings when you ship something worth updating.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ignoring dofollow status entirely.&lt;/strong&gt; Not every directory link needs to be dofollow to be worth doing — a nofollow link from a high-traffic, high-relevance directory can still send real buyers your way — but if backlink value is the primary goal for a specific submission, check the link attribute before spending time on the form.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treating a launch-day platform as your entire strategy.&lt;/strong&gt; A Product Hunt spike without an evergreen directory presence behind it is a burst of traffic with nothing left the week after. The &lt;a href="https://ihatereading.in/saas-directories" rel="noopener noreferrer"&gt;directories that actually compound over time&lt;/a&gt; matter more, long-term, than any single launch-day leaderboard position.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never checking whether the listing actually indexed.&lt;/strong&gt; Submitting a form isn't the finish line. Check Google Search Console a few weeks later — a directory that never gets your listing indexed isn't returning anything on the time you spent filling it out, regardless of how impressive its homepage domain rank looks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to actually use a directory database instead of just bookmarking it
&lt;/h2&gt;

&lt;p&gt;This is the part most guides skip: having a list of 300+ directories in a spreadsheet doesn't help you if you never work through it methodically. Here's the workflow we use ourselves:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Filter before you submit anything.&lt;/strong&gt; Our own &lt;a href="https://ihatereading.in/saas-directories" rel="noopener noreferrer"&gt;SaaS directories page&lt;/a&gt; lets you filter by category — Profile / Directory, Social, Publication, Design, or Misc — and by fee type, free or paid, before you ever open a submission form. Start with free, high-rank entries in the category closest to your product; that alone usually cuts a 300-item list down to a manageable 30–40 you'll genuinely act on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sort by domain rank inside your filtered set&lt;/strong&gt;, not across the whole database. A DR 90+ general profile site (Google Business Profile, Trustpilot, G2) and a DR 40 niche AI-tools directory can both be worth your time — they're just worth it for different reasons, so don't discard the lower-DR one just because a higher number exists elsewhere on the list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch by similarity.&lt;/strong&gt; Several directories in the same family (the Capterra/GetApp/Software Advice cluster is the clearest example) ask for nearly identical information. Do those back-to-back so you're not re-loading context between forms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download and revisit quarterly.&lt;/strong&gt; A directory database like this one changes — new sites appear, old ones go stale. Export the CSV, keep it next to your submission tracker, and treat a fresh pass through it as a quarterly habit rather than a one-time launch task.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've already read our shorter &lt;a href="https://ihatereading.in/t/top-saas-directories" rel="noopener noreferrer"&gt;roundup of top SaaS directories&lt;/a&gt; from earlier this year, this is the deeper, more systematic version of the same idea — the full filterable database plus the actual process for working through it without wasting a weekend on low-value listings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every page in the SaaS directories system, and what each one is actually for
&lt;/h2&gt;

&lt;p&gt;The database isn't one flat list — it's split into a few different views depending on what you're trying to do in that moment. Bookmark the ones that match your workflow instead of always starting from the top:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ihatereading.in/saas-directories" rel="noopener noreferrer"&gt;/saas-directories&lt;/a&gt;&lt;/strong&gt; — the full database: all 393 sites, filterable live by category (Profile / Directory, Social, Publication, Design, Misc) and by fee type. Start here when you want the whole picture before narrowing down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ihatereading.in/saas-directories/free" rel="noopener noreferrer"&gt;/saas-directories/free&lt;/a&gt;&lt;/strong&gt; — the free-only slice of the database, for when you're prioritizing zero-cost submissions first, which is almost always where you should start a new launch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ihatereading.in/saas-directories/paid" rel="noopener noreferrer"&gt;/saas-directories/paid&lt;/a&gt;&lt;/strong&gt; — the paid-only slice, useful once you've cleared the free tier and are deciding which paid placements (skip-the-queue Product Hunt slots, premium directory tiers) are actually worth spending on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Individual directory detail pages&lt;/strong&gt; — every entry in the database, like &lt;a href="https://ihatereading.in/saas-directories/product-hunt" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt; or &lt;a href="https://ihatereading.in/saas-directories/g2" rel="noopener noreferrer"&gt;G2&lt;/a&gt;, opens its own page with the fee type, domain rank, category, and the direct submission link, so you're not hunting for the actual "submit here" URL yourself once you've picked a target.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSV export&lt;/strong&gt; — the full table is downloadable as a CSV (behind a free login) if you'd rather work through your submission list in a spreadsheet with your own tracker columns added, instead of tab-hopping the live filtered view.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ihatereading.in/databases-of-databases" rel="noopener noreferrer"&gt;/databases-of-databases&lt;/a&gt;&lt;/strong&gt; — the parent index that the SaaS directories database sits inside, alongside every other free aggregator we maintain: Universo, Cursor Rules, and more. Worth a look if directories solved a problem for you and you're wondering what else on the site works the same way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ihatereading.in/universo" rel="noopener noreferrer"&gt;/universo&lt;/a&gt;&lt;/strong&gt; — a separate curated collection of useful websites, domains, and developer tools, adjacent to but distinct from the SaaS directories list — more "generally useful sites for builders" than "places to submit your product."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ihatereading.in/topics/saas" rel="noopener noreferrer"&gt;/topics/saas&lt;/a&gt;&lt;/strong&gt; — the topic hub that collects every SaaS-focused article on the site in one place, if this playbook has you wanting more on the building and growth side rather than just the submission mechanics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you only bookmark one of these beyond the main database, make it the free-filtered view — it's the one you'll actually open first on every new launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where directories fit in the bigger growth picture
&lt;/h2&gt;

&lt;p&gt;Directories are one channel in a stack, not the whole stack. If you're mapping out a full launch plan, our guide to &lt;a href="https://ihatereading.in/t/15-micro-saas-ideas-actually-making-money-in-2026" rel="noopener noreferrer"&gt;validating and launching a micro-SaaS&lt;/a&gt; covers the distribution side beyond directories — build-in-public, Reddit, and the validation steps that should happen before you ever open a submission form. And if free traffic beyond directories is the goal, the &lt;a href="https://ihatereading.in/t/how-to-get-free-traffic-to-your-website-in-2026-the-complete-free-to-paid-growth-playbook" rel="noopener noreferrer"&gt;complete free-to-paid growth playbook&lt;/a&gt; walks through Reddit marketing, Hacker News launches, and Dev.to distribution in the same direct, no-fluff style.&lt;/p&gt;

&lt;p&gt;For the rest of our free tools and aggregators beyond just SaaS directories — Cursor rules, job boards, GitHub trending, website template collections — the &lt;a href="https://ihatereading.in/databases-of-databases" rel="noopener noreferrer"&gt;Databases of Databases index&lt;/a&gt; is the single page that rounds all of it up.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual numbers to expect
&lt;/h2&gt;

&lt;p&gt;Set expectations honestly going in. A directory submission push, done properly over four to six weeks across 30–50 relevant, high-rank sites, has been associated with domain authority lifts in the range of roughly 5 to 15 points over a three-to-six-month window — a meaningful swing for a metric that usually moves slowly through content alone. That's not a guarantee, and no single number here should be treated as gospel; it's a directional sense of what disciplined, quality-first submission work tends to produce, not a formula.&lt;/p&gt;

&lt;p&gt;Referral traffic from any single directory is usually modest — a trickle, not a flood — but it's buying-intent traffic. Someone browsing AlternativeTo is actively unhappy with a competitor and looking for a replacement. Someone searching G2 for your category has already decided they need a tool like yours. That's a very different visitor than someone who stumbled onto your landing page from a random social post, and it's worth more per visit even when the volume is small.&lt;/p&gt;

&lt;p&gt;Measure it with tools you likely already have open. UTM-tag every directory link before you submit it so referral traffic shows up cleanly in analytics instead of blending into "direct." Google Search Console tells you whether a listing actually got indexed and whether it's sending any impressions for your product name or category terms. And a basic backlink checker, run every couple of months, tells you whether your referring-domain count is actually growing in the direction your submission log says it should be. None of this needs to be fancy — a spreadsheet with five columns and a fifteen-minute monthly check-in catches almost every problem worth catching.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Are SaaS directories still worth it in 2026, or is this an outdated SEO tactic?&lt;/strong&gt;&lt;br&gt;
Yes, for a narrower reason than five years ago. The backlink value is still real for high-authority, relevant directories, but the bigger shift is that directories with genuine traffic and reviews have become part of the citation pool AI answer engines pull from when someone asks for a tool recommendation. Low-quality, irrelevant directories are the part of this tactic that's outdated — not directories as a category.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many SaaS directories should I actually submit to?&lt;/strong&gt;&lt;br&gt;
Fewer than the "250+ directory list" articles suggest. A focused set of 30 to 60 directories with real domain authority and audience relevance to your category delivers more than mass-submitting to hundreds of generic, low-traffic sites. Quality and category fit matter more than the raw count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to pay for directory listings to get value?&lt;/strong&gt;&lt;br&gt;
No — most of the highest-value directories (Product Hunt, AlternativeTo, SaaSHub, Crunchbase, and the general database at &lt;a href="https://ihatereading.in/saas-directories" rel="noopener noreferrer"&gt;ihatereading.in/saas-directories&lt;/a&gt;) offer a solid free tier. Paid placements usually buy you a faster review queue or a featured slot, not a fundamentally different backlink or discovery outcome. Treat paid slots as a launch-week accelerant, not a requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the difference between a dofollow and nofollow directory link, and does it matter?&lt;/strong&gt;&lt;br&gt;
A dofollow link passes SEO link equity to your site; a nofollow link doesn't, but can still send real referral traffic and visibility. If your goal for a specific submission is backlink value, check the link type before investing time in the form. If your goal is discovery or buying-intent traffic (AlternativeTo-style "looking for an alternative" visitors), a nofollow link on a high-traffic, relevant directory can still be worth the ten minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should I submit to every directory in a database, or filter first?&lt;/strong&gt;&lt;br&gt;
Filter first. A 393-site database is a resource to search through by category and fee type, not a checklist to complete top to bottom. Start with directories in your exact category and work outward from there — you'll get more done in an hour of focused, relevant submissions than in a full day of submitting to everything indiscriminately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How long before a directory listing actually helps my SEO or traffic?&lt;/strong&gt;&lt;br&gt;
Individually, a single listing's effect is usually small and slow — think weeks, not days, before it's indexed and contributing anything measurable. The compounding effect shows up after a sustained run of quality submissions over a month or two, not from any single directory on its own. Treat it as a background habit that pays off later, not an instant traffic switch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Product Hunt still worth doing if I don't have a big audience yet?&lt;/strong&gt;&lt;br&gt;
It's still worth doing, but set expectations accordingly. A cold launch with no warm audience typically underperforms because a large share of launch-day upvotes come from the founder's own network, and first-hour momentum matters more to the algorithm than the eventual total. If you don't have an audience yet, a smaller launch platform or Show HN post, paired with a few weeks of building a waitlist first, is often a better starting point than a cold Product Hunt launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Directory submissions won't replace a real product, real distribution, or real content — nothing does. But they're one of the few growth levers a solo founder can fully control on their own schedule, for free, with a payoff that keeps compounding long after the launch-week adrenaline wears off. The founders who get real value out of this channel aren't the ones who mass-submitted to 300 sites in a weekend; they're the ones who filtered down to the thirty or forty that actually matter for their category, built one reusable asset kit, and spread the work across a month instead of a panic-driven afternoon.&lt;/p&gt;

&lt;p&gt;Start with the &lt;a href="https://ihatereading.in/saas-directories" rel="noopener noreferrer"&gt;full filterable database&lt;/a&gt;, sort by category and fee type, and work through Tier 1 this week.&lt;/p&gt;

&lt;p&gt;Cheers&lt;br&gt;
Shrey&lt;/p&gt;

</description>
      <category>sass</category>
      <category>ai</category>
      <category>webdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>AI Operating System for SaaS Founders: The Skills, the Stack, and the Dashboard Behind It</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Tue, 15 Sep 2026 17:10:41 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/ai-operating-system-for-saas-founders-the-skills-the-stack-and-the-dashboard-behind-it-4g1m</link>
      <guid>https://dev.to/shreyvijayvargiya/ai-operating-system-for-saas-founders-the-skills-the-stack-and-the-dashboard-behind-it-4g1m</guid>
      <description>&lt;p&gt;Most "AI for founders" content stops at the prompt. Someone shares a clever prompt for competitor research, you copy it, it works once, and three weeks later you're rewriting the whole thing from memory because you never saved the structure.&lt;/p&gt;

&lt;p&gt;This guide is the opposite of that. It's the full system we actually run — end to end — across our own SaaS properties: the structured playbooks that replaced ad-hoc prompting, and the engineering stack underneath them that turns those playbooks into scheduled, logged, cost-tracked work instead of a chat window you have to babysit every morning.&lt;/p&gt;

&lt;p&gt;We're publishing the whole thing in one place, broken into categories, because the two halves only make sense together. A good playbook with no system to run it on is still manual labor. A good dashboard with no playbook behind it is just an expensive way to watch nothing happen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll get in this guide:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why ad-hoc AI prompting quietly breaks down for founders&lt;/li&gt;
&lt;li&gt;The operating system — structured playbooks for Validate, Build, Launch, Grow&lt;/li&gt;
&lt;li&gt;The engine room — the actual stack that runs those playbooks on a schedule&lt;/li&gt;
&lt;li&gt;The workspace — how we use a CRM when AI is doing the research&lt;/li&gt;
&lt;li&gt;How we build our CRM and connect it to AI workflows&lt;/li&gt;
&lt;li&gt;How we built an automated Reddit trend research workflow&lt;/li&gt;
&lt;li&gt;How internal linking connects the whole content system&lt;/li&gt;
&lt;li&gt;Proof this isn't theoretical — where it runs today&lt;/li&gt;
&lt;li&gt;The free resource — get the system map sent to your inbox&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Why we stopped relying on individual AI prompts
&lt;/h2&gt;

&lt;p&gt;The leverage story is real. Founders using AI tools day to day are genuinely cutting research time and shrinking MVP timelines, and that's a big part of why solo operators can now run products that would have needed a small team a few years ago, as &lt;a href="https://theentrepreneur.studio/blog/why-solo-founders-struggle-with-productivity-in-2026-and-how-ai-can-help" rel="noopener noreferrer"&gt;The Entrepreneur Studio's breakdown of solo founder productivity in 2026&lt;/a&gt; lays out.&lt;/p&gt;

&lt;p&gt;The part that doesn't get talked about enough is what happens after the honeymoon. &lt;a href="https://www.salesfully.com/single-post/why-generic-ai-prompts-are-losing-to-structured-corporate-context" rel="noopener noreferrer"&gt;Salesfully's look at enterprise AI rollouts&lt;/a&gt; found that teams relying on unstructured, one-off prompts run into meaningfully higher error and hallucination rates on anything with real complexity, compared to teams working from a grounded, repeatable process. For a founder, that shows up as an SEO audit that misses your actual site structure, a competitor breakdown that invents a feature your rival doesn't have, or a content calendar that reads like it was written for someone else's product.&lt;/p&gt;

&lt;p&gt;The underlying reason is structural, not a prompting-skill problem. As one workflow-design writeup put it, &lt;a href="https://andreinita.co/blog/from-prompt-to-system-ai-workflows-that-actually-run/" rel="noopener noreferrer"&gt;a prompt is a one-off interaction, while a system is repeatable leverage&lt;/a&gt; — and repeated manual prompting quietly creates its own cognitive debt. Every time you re-explain a task because you didn't save the version that worked, you pay a small tax. Do that across ten recurring founder workflows for a year and the tax is real hours you don't get back.&lt;/p&gt;

&lt;p&gt;We hit this ourselves before we thought about packaging anything. Running several SaaS properties at once means a constant stream of blog content, SEO audits, competitor checks, and lead research, and re-explaining "research this competitor" or "find SEO gaps" from scratch every time produced wildly inconsistent output. Some weeks it was excellent. Other weeks it drifted, because the instructions weren't consistent — the model hadn't changed, the process had.&lt;/p&gt;

&lt;p&gt;So we split the fix into two layers, because they solve two different problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What to ask for&lt;/strong&gt; — a structured set of playbooks, organized around how founders actually work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How it runs&lt;/strong&gt; — the engineering underneath that turns those playbooks into scheduled, logged, observable jobs instead of something you trigger by hand every morning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction ended up being important for us. We didn't need another collection of prompts. We needed a way to turn a task we repeat every week into something closer to a small internal product.&lt;/p&gt;

&lt;p&gt;The rest of this guide walks through both.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The playbooks we use across the founder lifecycle
&lt;/h2&gt;

&lt;p&gt;Every SaaS founder ends up doing roughly the same categories of work on a loop, just with a different product name swapped in each time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Validate&lt;/strong&gt; — understanding a market, a competitor, or an idea before committing real time to it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build&lt;/strong&gt; — scoping an MVP, pricing it, deciding what actually belongs in v1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Launch&lt;/strong&gt; — planning positioning, channels, and the first wave of distribution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grow&lt;/strong&gt; — SEO, content gaps, internal linking, AI-search visibility, lead research, ongoing audits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once it was obvious we were solving the same problem in each category over and over, the fix was to stop treating every task as a fresh conversation and instead build one structured workflow per task that could be reused across every property, every time, with consistent quality.&lt;/p&gt;

&lt;p&gt;This is also why the broader shift in AI tooling this year matters: the industry is moving away from treating a single strong prompt as the finished product, and toward &lt;a href="https://insights.reinventing.ai/articles/ai-agents-prompt-to-workflow-transformations-2026-05-20" rel="noopener noreferrer"&gt;treating prompts as one input inside a larger workflow system with defined stages and checkpoints&lt;/a&gt;. Structuring the work around the actual founder lifecycle — rather than a flat pile of disconnected templates — made it something you could pick up at whatever stage you're actually in.&lt;/p&gt;

&lt;p&gt;We're deliberate about keeping this curated rather than exhaustive. There are plenty of open collections of founder-facing AI workflows floating around GitHub and marketplaces, some genuinely good, most uneven, and most requiring you to sift through dozens of files to find the handful that apply to your actual stage. As generative AI keeps moving from novelty to baseline infrastructure, the value of raw, ungrounded prompting keeps dropping — the money isn't in the prompt text anymore, it's in the structure, the sequencing, and the judgment calls about what a founder actually needs at each stage, made once so you don't have to remake them every week.&lt;/p&gt;

&lt;p&gt;A system you've committed to — even in a small way — also tends to be the one you actually keep using, versus a free download that joins twelve other free downloads you never opened. The founders behind &lt;a href="https://dariastrategy.com/vlog/solo-founder-strategy-how-to-build-and-win" rel="noopener noreferrer"&gt;Ship or Die describe a version of this in their own solo-founder playbook&lt;/a&gt;: a small, public commitment is often the thing that keeps a solo operator from stalling out.&lt;/p&gt;

&lt;p&gt;If you want the packaged, ready-to-run version of this layer, it's what we sell as &lt;a href="https://sfo.buildsaas.dev/" rel="noopener noreferrer"&gt;SaaSFounderOS&lt;/a&gt; — you can see the current breakdown by stage there, or grab it directly on &lt;a href="https://shreyvijayvargiya.gumroad.com/l/founders-claude-seo-growth-skills" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The stack behind the workflows
&lt;/h2&gt;

&lt;p&gt;A playbook is only useful if something runs it without you opening a chat window every morning. This is the part most "AI for founders" content skips entirely, so we're covering it in more depth.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 What is actually running
&lt;/h3&gt;

&lt;p&gt;The stack is intentionally boring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A small backend&lt;/strong&gt; — a lightweight framework is enough; a full microservice architecture is not needed at this stage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ai-sdk.dev/docs/introduction" rel="noopener noreferrer"&gt;The Vercel AI SDK&lt;/a&gt;&lt;/strong&gt; — handles model calls, streaming, structured generation, and tool calling behind one consistent interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://openrouter.ai/" rel="noopener noreferrer"&gt;OpenRouter&lt;/a&gt;&lt;/strong&gt; — one integration point for multiple model providers, instead of maintaining separate SDKs for every model you want to try&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A database&lt;/strong&gt; — every job writes its output, status, model used, and token usage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cron jobs&lt;/strong&gt; — scheduled research and content tasks, not manual triggers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A dashboard&lt;/strong&gt; — the human-facing layer where you see what happened and what it cost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search and fetch tools&lt;/strong&gt; — used only by the specific tasks that genuinely need fresh external information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's enough for a surprisingly capable AI content and research operation. You don't need a vector database, a message queue, or a dozen microservices on day one, and you definitely don't need a "multi-agent swarm" because your blog needs three new topic ideas. Start with plain functions. Turn the ones that keep working into reusable, named workflows later.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 How the pieces connect
&lt;/h3&gt;

&lt;p&gt;At a high level, a content task flows through research (web, competitor sites, your own site data), into a model call routed through OpenRouter, into a structured output, into a database row, and finally into a dashboard where a human reviews it.&lt;/p&gt;

&lt;p&gt;That's the whole loop — one application, not a distributed system, and you can split pieces out later only if you have an actual reason to.&lt;/p&gt;

&lt;p&gt;The mental model worth keeping is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your application → AI SDK → OpenRouter → selected model → structured output → database → dashboard.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your application never needs to know how every individual provider's SDK works. If a model gets expensive for one task, or a new one performs better at classification, you change a configuration value rather than rebuilding the application.&lt;/p&gt;

&lt;p&gt;That separation became particularly useful once we started running different workflows. A content research job, a lead research job and a simple classification job don't need identical models, identical prompts or identical context.&lt;/p&gt;

&lt;p&gt;They just need to return predictable output to the same system.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 We don't use the same model for everything
&lt;/h3&gt;

&lt;p&gt;The mistake most people make here is asking "which AI model is best?" The better question is: &lt;strong&gt;which is the cheapest model that reliably completes this specific job?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Split work into roles rather than picking one model for everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;High-judgment work&lt;/strong&gt; — writing, strategy, nuanced editing, final recommendations — justifies a stronger, more expensive model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-volume work&lt;/strong&gt; — classification, tagging, summarization, duplicate detection, simple scoring — almost never needs your most capable model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fresh research&lt;/strong&gt; — the model is only as good as what it's fed; a cheap model with good source data will outperform an expensive model working from thin context every time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rough current pricing (this changes constantly, so treat it as a snapshot to sanity-check against, not something to build a budget on directly):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider Tier&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input $/1M tokens&lt;/th&gt;
&lt;th&gt;Output $/1M tokens&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;Claude Opus 5&lt;/td&gt;
&lt;td&gt;~$5.00&lt;/td&gt;
&lt;td&gt;~$25.00&lt;/td&gt;
&lt;td&gt;Judgment-heavy work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;Claude Sonnet 5&lt;/td&gt;
&lt;td&gt;~$3.00&lt;/td&gt;
&lt;td&gt;~$15.00&lt;/td&gt;
&lt;td&gt;Default drafting, SEO checks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;Claude Haiku 4.5&lt;/td&gt;
&lt;td&gt;~$1.00&lt;/td&gt;
&lt;td&gt;~$5.00&lt;/td&gt;
&lt;td&gt;Classification, tagging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;Mid-tier flagship&lt;/td&gt;
&lt;td&gt;~$2.00&lt;/td&gt;
&lt;td&gt;~$12.00&lt;/td&gt;
&lt;td&gt;General writing tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;Budget tier&lt;/td&gt;
&lt;td&gt;~$0.20&lt;/td&gt;
&lt;td&gt;~$1.20&lt;/td&gt;
&lt;td&gt;Bulk, low-stakes tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;Flash tier&lt;/td&gt;
&lt;td&gt;~$0.15–0.30&lt;/td&gt;
&lt;td&gt;~$0.60–1.20&lt;/td&gt;
&lt;td&gt;High-volume, cost-sensitive jobs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Route by task, not by habit — a writing task gets your stronger model, a classification task gets your cheapest reliable one, and a research task gets whatever model performs best once it has good source data underneath it.&lt;/p&gt;

&lt;p&gt;Making this a small config object rather than hardcoded model names means swapping providers later is a one-line change, not a rewrite.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.4 We log every AI job
&lt;/h3&gt;

&lt;p&gt;This is the part worth doing from day one, before the dashboard even looks good.&lt;/p&gt;

&lt;p&gt;Every AI job should write a row recording:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;task name&lt;/li&gt;
&lt;li&gt;workflow&lt;/li&gt;
&lt;li&gt;model&lt;/li&gt;
&lt;li&gt;input tokens&lt;/li&gt;
&lt;li&gt;output tokens&lt;/li&gt;
&lt;li&gt;cost&lt;/li&gt;
&lt;li&gt;duration&lt;/li&gt;
&lt;li&gt;status&lt;/li&gt;
&lt;li&gt;sources used&lt;/li&gt;
&lt;li&gt;output&lt;/li&gt;
&lt;li&gt;errors, if any&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once that exists, "how much did AI actually cost us this month?" stops being a guess and becomes a number you can pull up.&lt;/p&gt;

&lt;p&gt;A simple dashboard on top of that log is already useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;today's tasks&lt;/li&gt;
&lt;li&gt;today's spend&lt;/li&gt;
&lt;li&gt;monthly spend&lt;/li&gt;
&lt;li&gt;successful jobs&lt;/li&gt;
&lt;li&gt;failed jobs&lt;/li&gt;
&lt;li&gt;model usage&lt;/li&gt;
&lt;li&gt;workflow usage&lt;/li&gt;
&lt;li&gt;cost per workflow&lt;/li&gt;
&lt;li&gt;click-through into the actual report&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need it to be beautiful.&lt;/p&gt;

&lt;p&gt;You need it to be honest.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.5 AI finishing a task doesn't mean the task is correct
&lt;/h3&gt;

&lt;p&gt;None of this makes AI &lt;em&gt;correct&lt;/em&gt; — it makes AI &lt;em&gt;observable&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A task finishing with a "success" status means the function completed, not that the output was right.&lt;/p&gt;

&lt;p&gt;For anything that touches SEO, customer communication, financial information, or anything that could damage your reputation if it's wrong, keep a human review step between the model's output and publishing.&lt;/p&gt;

&lt;p&gt;Observability is what lets you catch drift early; it's not a substitute for review on the things that matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The CRM is where the AI work becomes useful
&lt;/h2&gt;

&lt;p&gt;Once your playbooks are running as scheduled jobs, they start producing business objects, not just documents.&lt;/p&gt;

&lt;p&gt;A research workflow might discover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a potential customer&lt;/li&gt;
&lt;li&gt;a competitor&lt;/li&gt;
&lt;li&gt;a pricing change&lt;/li&gt;
&lt;li&gt;a new content opportunity&lt;/li&gt;
&lt;li&gt;a Reddit discussion&lt;/li&gt;
&lt;li&gt;a sales lead&lt;/li&gt;
&lt;li&gt;a product request&lt;/li&gt;
&lt;li&gt;an SEO opportunity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If all of that ends up as Markdown files or rows in random spreadsheets, you've automated the research but not really automated the business.&lt;/p&gt;

&lt;p&gt;This is where a CRM becomes useful.&lt;/p&gt;

&lt;p&gt;We've built &lt;a href="https://saascrm.site/" rel="noopener noreferrer"&gt;SaaSCRM&lt;/a&gt; around this idea: the CRM shouldn't just be a place where a founder manually types leads into tables. It should be a workspace that both the founder and AI workflows can write into.&lt;/p&gt;

&lt;p&gt;A research agent can find a potential lead.&lt;/p&gt;

&lt;p&gt;A lead-research workflow can enrich it.&lt;/p&gt;

&lt;p&gt;A sales workflow can assign a status.&lt;/p&gt;

&lt;p&gt;A content workflow can create a follow-up task.&lt;/p&gt;

&lt;p&gt;And the founder can see the whole thing from one dashboard.&lt;/p&gt;

&lt;p&gt;That changes the role of the CRM from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"software I use to maintain customer records"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"the structured business workspace my automations can operate inside."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  5. How we actually build a CRM for a business
&lt;/h2&gt;

&lt;p&gt;One thing we learned while building SaaSCRM is that most CRM projects become unnecessarily complicated because they start with screens instead of the business model.&lt;/p&gt;

&lt;p&gt;Someone says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need a CRM."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then the project immediately becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;contacts&lt;/li&gt;
&lt;li&gt;companies&lt;/li&gt;
&lt;li&gt;deals&lt;/li&gt;
&lt;li&gt;pipelines&lt;/li&gt;
&lt;li&gt;tasks&lt;/li&gt;
&lt;li&gt;calendars&lt;/li&gt;
&lt;li&gt;dashboards&lt;/li&gt;
&lt;li&gt;reports&lt;/li&gt;
&lt;li&gt;permissions&lt;/li&gt;
&lt;li&gt;notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Six weeks later there are 50 screens, but nobody has answered the most important question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does this particular business actually need to track?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We prefer starting with the entities.&lt;/p&gt;

&lt;p&gt;For a software company, that might be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lead
Company
Contact
Deal
Task
Activity

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a manufacturing company it could instead be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Customer
Enquiry
Product
Quotation
Order
Delivery
Follow-up

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For an agency:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lead
Client
Project
Proposal
Invoice
Task
Campaign

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The database should follow the business rather than forcing every business into the same CRM vocabulary.&lt;/p&gt;

&lt;p&gt;That's why the way we approach SaaSCRM is closer to a reusable CRM foundation than a single fixed CRM.&lt;/p&gt;

&lt;p&gt;We build the common pieces once — authentication, database access, layouts, tables, forms, dashboards, filtering, search, charts, permissions and reusable UI components — and then shape the actual CRM around the business entities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Start with the data model
&lt;/h3&gt;

&lt;p&gt;Before building screens, we define:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What entities exist?
What fields do they have?
How are they related?
What actions can users perform?
What should AI be allowed to create or update?

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lead
 ├── name
 ├── email
 ├── company
 ├── source
 ├── status
 ├── notes
 └── assignedTo

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lead
  ↓
Contact
  ↓
Opportunity
  ↓
Deal
  ↓
Customer

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The UI is built around this model.&lt;/p&gt;

&lt;p&gt;This also makes it much easier to connect AI later because the agent knows what a "lead" actually means and what fields are allowed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Then build the reusable UI
&lt;/h3&gt;

&lt;p&gt;Instead of making every table from scratch, we keep reusable components for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;data tables&lt;/li&gt;
&lt;li&gt;filters&lt;/li&gt;
&lt;li&gt;search&lt;/li&gt;
&lt;li&gt;forms&lt;/li&gt;
&lt;li&gt;modals&lt;/li&gt;
&lt;li&gt;detail pages&lt;/li&gt;
&lt;li&gt;status badges&lt;/li&gt;
&lt;li&gt;dashboards&lt;/li&gt;
&lt;li&gt;charts&lt;/li&gt;
&lt;li&gt;activity timelines&lt;/li&gt;
&lt;li&gt;empty states&lt;/li&gt;
&lt;li&gt;loading states&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is one of the reasons a CRM foundation becomes valuable.&lt;/p&gt;

&lt;p&gt;When a new business needs a different entity, we're mostly configuring the existing building blocks rather than rebuilding the application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Then connect the AI layer
&lt;/h3&gt;

&lt;p&gt;This is where it gets interesting.&lt;/p&gt;

&lt;p&gt;Suppose an AI agent researches 50 companies.&lt;/p&gt;

&lt;p&gt;Instead of returning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Here are 50 companies I found...

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the workflow can produce structured records:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Company
Contact
Website
Industry
Potential use case
Source
Confidence
Next action

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those records can go directly into the CRM.&lt;/p&gt;

&lt;p&gt;The same idea works for content research.&lt;/p&gt;

&lt;p&gt;An AI workflow finds a Reddit discussion that suggests a common problem.&lt;/p&gt;

&lt;p&gt;Instead of leaving that insight inside a chat conversation, we can create:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Research Item
Topic
Source
Problem
Potential Feature
Priority
Status

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the research becomes something the rest of the business can act on.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. How we built the Reddit trend research workflow
&lt;/h2&gt;

&lt;p&gt;One of the practical examples of this approach is our automated Reddit trend research workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ihatereading.in/t/ai-automated-reddit-trend-scraper-that-saved-us-1000-month-on-content-creation" rel="noopener noreferrer"&gt;AI-Automated Reddit Trend Scraper That Saved Us $1,000/Month on Content Creation&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We wanted to know what developers and founders were actually discussing instead of constantly guessing what we should write about.&lt;/p&gt;

&lt;p&gt;The first version was simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find discussions → collect them → clean the data → identify patterns → turn patterns into content opportunities.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The workflow eventually became a small pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Collect discussions
&lt;/h3&gt;

&lt;p&gt;The scraper collects relevant Reddit discussions based on the topics we're researching.&lt;/p&gt;

&lt;p&gt;We're not interested in collecting Reddit for the sake of collecting Reddit.&lt;/p&gt;

&lt;p&gt;We're looking for signals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;repeated questions&lt;/li&gt;
&lt;li&gt;complaints&lt;/li&gt;
&lt;li&gt;product requests&lt;/li&gt;
&lt;li&gt;recurring problems&lt;/li&gt;
&lt;li&gt;tools people are comparing&lt;/li&gt;
&lt;li&gt;things developers can't figure out&lt;/li&gt;
&lt;li&gt;emerging topics&lt;/li&gt;
&lt;li&gt;unusual spikes in discussion&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Clean and enrich the data
&lt;/h3&gt;

&lt;p&gt;Raw scraped discussions aren't particularly useful.&lt;/p&gt;

&lt;p&gt;There can be duplicate conversations, irrelevant comments, short answers and discussions that have nothing to do with our actual content strategy.&lt;/p&gt;

&lt;p&gt;So the workflow cleans and structures the data before sending it into the model.&lt;/p&gt;

&lt;p&gt;We can then attach things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Topic
Problem
Audience
Industry
Intent
Potential article
Potential product
Priority
Source URL

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Let AI find patterns
&lt;/h3&gt;

&lt;p&gt;This is where the LLM becomes useful.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What should I write about?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;we give it actual discussions and ask it to identify recurring patterns.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;20 discussions
      ↓
common problem
      ↓
search intent
      ↓
content opportunity
      ↓
potential product/feature

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is that the model isn't inventing the initial demand.&lt;/p&gt;

&lt;p&gt;We're giving it real conversations to analyze.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Turn research into content
&lt;/h3&gt;

&lt;p&gt;The strongest findings can become:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;blog posts&lt;/li&gt;
&lt;li&gt;comparison articles&lt;/li&gt;
&lt;li&gt;tutorials&lt;/li&gt;
&lt;li&gt;tools&lt;/li&gt;
&lt;li&gt;lead magnets&lt;/li&gt;
&lt;li&gt;product features&lt;/li&gt;
&lt;li&gt;FAQ sections&lt;/li&gt;
&lt;li&gt;social posts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means one research workflow can feed multiple parts of the business.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Connect it back to the rest of the system
&lt;/h3&gt;

&lt;p&gt;This is the part that makes the workflow more useful than a standalone scraper.&lt;/p&gt;

&lt;p&gt;The research output can feed our content planning system.&lt;/p&gt;

&lt;p&gt;The content planner can identify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Existing article?
        ↓
Update it

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No existing article?
        ↓
Create new article

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Product problem?
        ↓
Create feature opportunity

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the AI operating system starts becoming a loop rather than a collection of unrelated AI tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Internal linking is part of the system too
&lt;/h2&gt;

&lt;p&gt;Creating a new article isn't the end of the job.&lt;/p&gt;

&lt;p&gt;One of the easiest things to miss when publishing frequently is internal linking.&lt;/p&gt;

&lt;p&gt;If you publish 100 articles and none of them are connected properly, you have 100 pages.&lt;/p&gt;

&lt;p&gt;You don't necessarily have a useful content system.&lt;/p&gt;

&lt;p&gt;We treat every new article as another node in the existing knowledge graph.&lt;/p&gt;

&lt;p&gt;For example, the Reddit automation article can connect to content about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI content research&lt;/li&gt;
&lt;li&gt;Reddit scraping&lt;/li&gt;
&lt;li&gt;AI agents&lt;/li&gt;
&lt;li&gt;web scraping&lt;/li&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;li&gt;Hono&lt;/li&gt;
&lt;li&gt;SEO automation&lt;/li&gt;
&lt;li&gt;content planning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then a new article about AI content research can link back to the Reddit automation article.&lt;/p&gt;

&lt;p&gt;Over time this creates a structure like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 AI Content
                     │
          ┌──────────┼──────────┐
          ↓          ↓          ↓
      Reddit       SEO        AI Agents
      Research     Tools       │
          │          │          │
          ↓          ↓          ↓
       Scraper    Content     Automation
          │        Planning      │
          └─────────┴────────────┘
                    ↓
                SaaSCRM

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal isn't to add links just because an SEO checklist says "add internal links."&lt;/p&gt;

&lt;p&gt;The goal is to make related information discoverable.&lt;/p&gt;

&lt;h3&gt;
  
  
  How we decide where a new article should link
&lt;/h3&gt;

&lt;p&gt;When a new article is created, we can look at the existing content inventory and ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What existing articles explain concepts mentioned here?

What older articles should link to this new article?

Which product pages are relevant?

Which pillar/topic page should this article belong to?

Which pages are currently orphaned?

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This turns internal linking into another repeatable workflow.&lt;/p&gt;

&lt;p&gt;Instead of manually remembering every article we've published, the system can use the content database to find relevant connections.&lt;/p&gt;

&lt;h3&gt;
  
  
  It also helps us update old content
&lt;/h3&gt;

&lt;p&gt;Suppose we publish a new article about AI Reddit research.&lt;/p&gt;

&lt;p&gt;We can find older articles mentioning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reddit
content research
AI agents
scraping
SEO
content automation

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those pages may now have a natural reason to link to the new article.&lt;/p&gt;

&lt;p&gt;So one new article can improve the structure of several older pages.&lt;/p&gt;

&lt;p&gt;That's much more useful than publishing and forgetting.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. The dashboard ties the whole thing together
&lt;/h2&gt;

&lt;p&gt;At this point there are several different things happening:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Research
SEO
Content
Leads
AI jobs
CRM
Costs
Internal links
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without a dashboard, it becomes difficult to know what is actually happening.&lt;/p&gt;

&lt;p&gt;The dashboard doesn't need to become another complicated SaaS product.&lt;/p&gt;

&lt;p&gt;For us, the useful information is fairly simple:&lt;/p&gt;

&lt;h3&gt;
  
  
  AI activity
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Jobs today
Successful
Failed
Running

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  AI spend
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Today
This week
This month
By model
By workflow

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Content
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ideas
Research completed
Articles drafted
Articles published
Articles needing updates

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  SEO
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pages gaining impressions
Pages losing impressions
Keyword opportunities
Content gaps
Internal linking opportunities

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  CRM
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New leads
Open opportunities
Follow-ups
AI-created records
Recent activity

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The dashboard is essentially the control panel for the system.&lt;/p&gt;

&lt;p&gt;The individual workflows do the work.&lt;/p&gt;

&lt;p&gt;The dashboard tells us what happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Where we run this today
&lt;/h2&gt;

&lt;p&gt;None of this is a thought experiment — it's the system running across our own properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="http://ihatereading.in" rel="noopener noreferrer"&gt;ihatereading.in&lt;/a&gt;&lt;/strong&gt; — our primary distribution property, grown to roughly 10,000 registered users, with the content and SEO layer of this system driving its blog output and directory listings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="http://saascrm.site" rel="noopener noreferrer"&gt;saascrm.site&lt;/a&gt;&lt;/strong&gt; — the CRM and admin layer described above, doubling as its own product and as the workspace for agent output across our other properties&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="http://gettemplate.app" rel="noopener noreferrer"&gt;gettemplate.app&lt;/a&gt;&lt;/strong&gt; — our template marketplace, using the same content and SEO playbooks to plan and publish&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="http://buildsaas.dev" rel="noopener noreferrer"&gt;buildsaas.dev&lt;/a&gt;&lt;/strong&gt; — the underlying application boilerplate several of these properties are built on, including the frontend, backend, and admin panel pieces the dashboard sits on top of&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Running the same system across four different properties is exactly why it had to be structured rather than ad-hoc in the first place.&lt;/p&gt;

&lt;p&gt;A prompt you remember works on one site.&lt;/p&gt;

&lt;p&gt;A logged, scheduled, cost-tracked workflow works on all of them without you personally re-explaining the task four times.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. The system is more useful when everything feeds the next step
&lt;/h2&gt;

&lt;p&gt;The biggest change wasn't actually adding more AI.&lt;/p&gt;

&lt;p&gt;It was connecting the outputs.&lt;/p&gt;

&lt;p&gt;A simplified version looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reddit
  ↓
Research
  ↓
AI analysis
  ↓
Content opportunity
  ↓
Keyword / search intent
  ↓
Article
  ↓
Internal linking
  ↓
SEO data
  ↓
New research
  ↓
Next article

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And alongside that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Research
  ↓
Lead / Product opportunity
  ↓
CRM
  ↓
Task
  ↓
Founder action

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And underneath everything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI workflow
  ↓
Model
  ↓
Tokens
  ↓
Cost
  ↓
Database
  ↓
Dashboard

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the operating system we're interested in.&lt;/p&gt;

&lt;p&gt;Not an AI that magically runs a company.&lt;/p&gt;

&lt;p&gt;A collection of small, understandable workflows that continuously produce useful information and put it somewhere the next workflow — or the founder — can actually use.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. The System map
&lt;/h2&gt;

&lt;p&gt;We put together a condensed, practical version of everything above — the four-stage playbook map (Validate, Build, Launch, Grow), the task-logging schema you can copy directly into your own database, and the current model-routing cheat sheet — as a single free download.&lt;/p&gt;

&lt;p&gt;check more on &lt;a href="https://shreyvijayvargiya.gumroad.com/l/founders-claude-kit" rel="noopener noreferrer"&gt;saasfounderos&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  12. What happens after you grab it
&lt;/h2&gt;

&lt;p&gt;The free resource gets you the map.&lt;/p&gt;

&lt;p&gt;If you want the actual ready-to-run playbooks — the full set covering research, SEO and AI-search, and growth and launch, organized the way this guide describes — that's &lt;a href="https://shreyvijayvargiya.gumroad.com/l/founders-claude-seo-growth-skills" rel="noopener noreferrer"&gt;SaaSFounderOS on Gumroad&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you're at the point where your playbooks need a real workspace to write into, &lt;a href="http://saascrm.site" rel="noopener noreferrer"&gt;saascrm.site&lt;/a&gt; is the CRM layer built for exactly that.&lt;/p&gt;

&lt;p&gt;The important part isn't whether you use our exact stack.&lt;/p&gt;

&lt;p&gt;You can replace OpenRouter.&lt;/p&gt;

&lt;p&gt;You can use another database.&lt;/p&gt;

&lt;p&gt;You can use a different CRM.&lt;/p&gt;

&lt;p&gt;You can run the workflows manually.&lt;/p&gt;

&lt;p&gt;The principle stays the same:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take recurring founder work, turn it into a structured workflow, give that workflow a place to save its output, and make the result available for the next decision.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's what makes the difference between using AI occasionally and actually building an AI operating system around your business.&lt;/p&gt;

&lt;p&gt;And once you've done that for one workflow, you can keep adding the next one.&lt;/p&gt;

&lt;p&gt;Either way, the point of publishing the whole system in one place — playbooks and stack together — is the same point behind building it in the first place: stop rebuilding the same instructions every week, and start running a system that remembers what worked.&lt;/p&gt;

&lt;p&gt;That would be enough for today&lt;/p&gt;

&lt;p&gt;See you in the next one&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Shrey&lt;/p&gt;

</description>
      <category>founder</category>
      <category>saas</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Gave Claude 10+ SaaS Growth Skills and Let It Run My Own Platform</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Wed, 09 Sep 2026 10:54:27 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/i-gave-claude-10-saas-growth-skills-and-let-it-run-my-own-platform-57fc</link>
      <guid>https://dev.to/shreyvijayvargiya/i-gave-claude-10-saas-growth-skills-and-let-it-run-my-own-platform-57fc</guid>
      <description>&lt;p&gt;Run an entire online content website using 10 Claude Skills, originally published on &lt;a href="https://ihatereading.in/t/I-Gave-Claude-10+-SaaS-Growth-Skills-and-Let-It-Run-My-Own-Platform" rel="noopener noreferrer"&gt;iHateReading&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Under the Hood
&lt;/h1&gt;

&lt;p&gt;I run iHateReading, &lt;a href="http://saascrm.site" rel="noopener noreferrer"&gt;saascrm.site&lt;/a&gt;, and a handful of other products alone. No marketing hire, no SEO agency, no growth team. &lt;/p&gt;

&lt;p&gt;For years, that meant every "should we submit to this directory" or "is our GEO okay" question sat in a notes app, half-answered, because I didn't have a spare afternoon to research it properly.&lt;/p&gt;

&lt;p&gt;So I built 15 Claude Skills — one operator hub plus 14 specialized agents — that do the SaaS growth research work I used to put off: market intel, competitor teardown, pricing analysis, SEO/GEO audits, directory submissions, internal linking, lead research, launch planning. Then I pointed the whole pack at my own site, &lt;a href="http://ihatereading.in" rel="noopener noreferrer"&gt;ihatereading.in&lt;/a&gt;, and let it run.&lt;/p&gt;

&lt;p&gt;This post is the receipts: what the skills actually found, what they got right, and where the pack is &lt;a href="https://shreyvijayvargiya.gumroad.com/l/founders-claude-seo-growth-skills" rel="noopener noreferrer"&gt;available if you want to run the same stack on your own product&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a "Claude Skill" actually is
&lt;/h2&gt;

&lt;p&gt;A Claude Skill is a markdown instruction file — usually named &lt;a href="http://SKILL.md" rel="noopener noreferrer"&gt;SKILL.md&lt;/a&gt; — that gives Claude (or Claude Code) a specialised, repeatable playbook instead of a one-off prompt. You invoke it, Claude follows the same research method every time, and you get a consistent output format instead of reinventing the wheel each session. Bootstrapped founder Violetta Bonenkamp put it plainly in her own &lt;a href="https://blog.mean.ceo/claude-skills-seo-blueprint/" rel="noopener noreferrer"&gt;breakdown of running an SEO operation through Claude Skills&lt;/a&gt;: the whole approach is built around giving the model a pre-loaded, specialised playbook rather than asking it to improvise research from scratch every time.&lt;/p&gt;

&lt;p&gt;This isn't a niche hobby anymore. Snyk's own roundup of &lt;a href="https://snyk.io/articles/top-8-claude-skills-entrepreneurs-startup-founders-solopreneurs/" rel="noopener noreferrer"&gt;Claude Skills for entrepreneurs and solopreneurs&lt;/a&gt; covers everything from SaaS financial modelling to full open-source marketing-department skill collections — the pattern is the same across all of them: turn a research or ops task you'd normally outsource into a repeatable skill you run yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why solo founders specifically need this right now
&lt;/h2&gt;

&lt;p&gt;The one-person startup stopped being a compromise. Data cited in &lt;a href="https://blog.mean.ceo/the-solo-founder-ai-agent-stack-that-is-replacing-entire-startup-teams/" rel="noopener noreferrer"&gt;MeanCEO's breakdown of the solo-founder AI agent stack&lt;/a&gt; shows over a third of new ventures in 2026 are solo-founded, and a functional AI agent stack now runs a few hundred dollars a month against the equivalent five- or six-figure monthly cost of hiring humans for the same functions. Forbes reported similar numbers this year, &lt;a href="https://www.forbes.com/sites/nehamehra/2026/08/03/why-ai-agent-startups-are-becoming-the-new-solo-founder-playbook/" rel="noopener noreferrer"&gt;pointing to full AI stacks costing $3k-$12k annually&lt;/a&gt; against $80k-$120k a month for a comparable human hire.&lt;/p&gt;

&lt;p&gt;That gap is exactly where a growth-ops skill pack earns its keep. You're not trying to replace a strategist — you're replacing the research grunt work that used to stop you from ever getting to the strategy conversation in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's actually inside the pack
&lt;/h2&gt;

&lt;p&gt;The 15 skills are split into three groups:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔎 VALIDATE — is there a market for this
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;SaaS Discovery — understand a product, its audience, positioning, features, pricing, competitors&lt;/li&gt;
&lt;li&gt;Market Intelligence — market/category trends, demand, opportunities, risks&lt;/li&gt;
&lt;li&gt;Competitor Intelligence — competitor positioning, strengths, weaknesses, sentiment&lt;/li&gt;
&lt;li&gt;Pricing Intelligence — pricing, packaging, value metrics, positioning&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🛠️ BUILD — turn the idea into a concrete plan
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Micro SaaS Builder — validated MVP concept, pricing, distribution, launch plan6. AI Agent Opportunity — evaluate workflows worth automating, demand, competition, monetization7. Lead Research Intelligence — ICP, lead sources, directories, communities, partnerships8. SaaS SEO Discovery — baseline SEO opportunities from your product and site before you launch&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🚀 LAUNCH — get your first users
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;SaaS Launch — launch strategy: positioning, channels, assets, timeline10. Directory Launch — directory/community submission plan&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  📈 GROW — compound growth once you have users
&lt;/h3&gt;

&lt;p&gt;Find the opportunity:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;SEO Opportunity — commercial, use-case, comparison, alternative, informational opportunities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Competitor SEO Pages — competitor-driven pages you should create&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Content Gap — content competitors have that you're missing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GEO/AEO Audit — AI search / answer-engine visibility audit&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Plan &amp;amp; execute:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;SEO Content Planner — clusters, priorities, briefs, internal links, publishing plan&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SEO Page Generator — complete SEO pages from validated opportunities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Internal Link Optimiser — weak, missing, orphaned, high-value linking opportunities&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One hub skill (/founder-saas-skill or /saasfounderos) sits on top, asks two quick questions — what you have, what you want this week — and routes to the right agent instead of dumping all 15 on you at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened when I ran it on my own site
&lt;/h2&gt;

&lt;p&gt;I didn't just build this and ship it blind. I ran the GEO/AEO Audit skill on &lt;a href="http://ihatereading.in" rel="noopener noreferrer"&gt;ihatereading.in&lt;/a&gt; itself, and it caught something I'd genuinely missed: a near-identical, completely unrelated site (an AI reading-summarizer) sits at a lookalike domain, which creates real entity-confusion risk for any AI system trying to answer "what is iHateReading." That's exactly the kind of gap Mintlify's own research into &lt;a href="https://www.mintlify.com/blog/the-value-of-llms-txt-hype-or-real" rel="noopener noreferrer"&gt;llms.txt and AI citation behavior&lt;/a&gt; points to — Vercel reportedly gets 10% of signups directly from ChatGPT citations, which only happens when the entity is unambiguous to begin with.&lt;/p&gt;

&lt;p&gt;The SEO Content Planner skill then turned that finding into an actual publishing plan — five pages, in priority order, starting with the cheapest fix (a plain-language FAQ page) instead of a bloated 30-page content calendar nobody would ship. The Directory Launch skill found one specific, verifiably free, dofollow-linked developer directory worth submitting to instead of a copy-pasted list of 200 sites. And the Internal Link Optimizer skill mapped exactly which existing posts — like the one on &lt;a href="https://ihatereading.in/t/Build-a-directory-listing-website-that-earns-online" rel="noopener noreferrer"&gt;building a directory listing site that earns online&lt;/a&gt; — were sitting orphaned with no path back to my own &lt;a href="https://ihatereading.in/saas-directories" rel="noopener noreferrer"&gt;SaaS directories page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;None of that came from generic prompting. It came from agents built specifically to research a real business and refuse to invent URLs, traffic numbers, or fake authority scores along the way — the same discipline &lt;a href="https://www.get-ryze.ai/blog/claude-skills-for-seo-a-practical-starter-set" rel="noopener noreferrer"&gt;SE Ranking's own Claude Skills collection&lt;/a&gt; builds in by tying every skill to a defined, reproducible tool call instead of letting the model improvise.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to actually use these well
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Run one agent per session. The hub skill is built to stop you from dumping all 15 on a single question — pick the one that matches what you need this week.&lt;/li&gt;
&lt;li&gt;Feed it a real URL, not a vague idea. Every agent researches your actual site/product before making recommendations; the more concrete the input, the less it has to guess.&lt;/li&gt;
&lt;li&gt;Treat the output as a starting draft, not gospel. These skills are built to flag "unknown" instead of inventing a number — when they say a stat is unverified, believe them and check yourself before publishing it.&lt;/li&gt;
&lt;li&gt;Chain agents in sequence when the task calls for it. SEO Opportunity → GEO/AEO Audit → SEO Content Planner → SEO Page Generator is a full pipeline, not four disconnected reports.&lt;/li&gt;
&lt;li&gt;Use the smallest output that solves the actual problem. The Directory Launch skill can find one directory just as easily as fifty — ask for exactly what you need.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get the pack
&lt;/h2&gt;

&lt;p&gt;If you want the same 15-agent hub running on your own product — the exact GEO audit, content plan, directory pick, and internal-link fixes shown above — &lt;a href="https://shreyvijayvargiya.gumroad.com/l/founders-claude-seo-growth-skills" rel="noopener noreferrer"&gt;grab the founder Claude SEO &amp;amp; growth skills pack on Gumroad&lt;/a&gt;. It installs the same way described above: drop it into Claude Code, Claude Desktop, or upload the individual skill zips directly into a &lt;a href="http://Claude.ai" rel="noopener noreferrer"&gt;Claude.ai&lt;/a&gt; project.&lt;/p&gt;

&lt;p&gt;I'll keep publishing what the pack finds when I run it on my other properties — &lt;a href="https://ihatereading.in/newsletter" rel="noopener noreferrer"&gt;subscribe to the iHateReading newsletter&lt;/a&gt; or catch the monthly rundown in the &lt;a href="https://ihatereading.in/magazine" rel="noopener noreferrer"&gt;iHateReading Magazine&lt;/a&gt; if you want the next audit as it happens.&lt;/p&gt;

&lt;p&gt;That would be enough for today&lt;/p&gt;

&lt;p&gt;See you in the next one&lt;/p&gt;

&lt;p&gt;Shrey&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>claude</category>
      <category>programming</category>
    </item>
    <item>
      <title>GPT-6 Astra Just Shipped. The Real Opportunity Isn't the Model — It's Everything Around It</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Mon, 07 Sep 2026 13:34:59 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/gpt-6-astra-just-shipped-the-real-opportunity-isnt-the-model-its-everything-around-it-1kba</link>
      <guid>https://dev.to/shreyvijayvargiya/gpt-6-astra-just-shipped-the-real-opportunity-isnt-the-model-its-everything-around-it-1kba</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://ihatereading.in/t/GPT-6-Astra-Just-Shipped.-The-Real-Opportunity-Isn't-the-Model-%E2%80%94-It's-Everything-Around-It" rel="noopener noreferrer"&gt;iHateReading&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Under the Hood
&lt;/h1&gt;

&lt;p&gt;OpenAI shipped GPT-6 Astra this week, and the framing was different from every GPT launch before it. This wasn't pitched as a better chatbot. It was pitched as a system that operates your computer — browsers, spreadsheets, terminals, IDEs — the way a person would, and finishes multi-step jobs instead of just describing them.&lt;/p&gt;

&lt;p&gt;I've been building on top of models for a while now — Aantraa runs on translation and generation pipelines, the &lt;a href="https://ihatereading.in/t/One-honojs-file-for-entire-web-scraping-API" rel="noopener noreferrer"&gt;Scrapefast&lt;/a&gt; work is agent-adjacent, and half of what I ship these days involves some LLM doing a job a person used to do. So when a launch like this lands, the question I actually care about isn't "is the model good." It's "what does this make buildable that wasn't buildable last month."&lt;/p&gt;

&lt;h2&gt;
  
  
  What OpenAI actually shipped
&lt;/h2&gt;

&lt;p&gt;Astra is positioned as state-of-the-art on computer use, browser use, software engineering, cybersecurity, and science — not as a chat model with better answers. OpenAI says it completes an OSWorld 2.0 computer-use evaluation in roughly 40 minutes per task in its own simulations, against about 75 minutes for the prior GPT-5.6 Sol model, while scoring higher overall, and that Codex task completion is roughly 1.9x faster on the Mind2Web benchmark thanks to a combined model-plus-harness upgrade.&lt;/p&gt;

&lt;p&gt;A few specifics matter more than the headline claims:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1.05M-token context window, with the harness keeping notes across sessions instead of compacting/summarizing old context away — meaning an agent can go back and check why an earlier fix failed instead of losing that detail.&lt;/li&gt;
&lt;li&gt;Tiered rollout: enterprise and "Trusted Access" organizations first, then ChatGPT Plus/Pro/Business/Enterprise, then the API and cloud partners — because the more capable computer-use gets, the more OpenAI is gating it behind access controls rather than shipping it to everyone at once.&lt;/li&gt;
&lt;li&gt;It's closed and hosted only. No weights, no self-hosting. You rent the capability; you don't own the execution environment.&lt;/li&gt;
&lt;li&gt;Pricing moved with capability — around $10/$50 per million input/output tokens, roughly 2.5x the prior model, on the bet that better reasoning means fewer wasted tool calls and retries, not just a smarter chat window.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gating detail is the tell. A chat model doesn't need a trusted-access program. A model that can click through your banking dashboard, push code, and chain actions across tools does — and OpenAI apparently agreed with that logic enough to slow the launch over cyber-risk review before shipping it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What builders are already showing off
&lt;/h2&gt;

&lt;p&gt;The benchmark numbers are one thing; the last few days of demos on X are a better read on what "computer use" actually means in practice right now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One builder &lt;a href="https://x.com/Emanuel_Andre7/status/2096528986390085696" rel="noopener noreferrer"&gt;asked Astra to help him understand his own ankle pain&lt;/a&gt; and got back a full interactive 3D atlas — bones, ligaments, tendons, with sliders for actual motion axes — from a single prompt, no separate 3D tooling involved.&lt;/li&gt;
&lt;li&gt;Developer Ashe went further and had Astra &lt;a href="https://x.com/ashebytes/status/2096221988763173186" rel="noopener noreferrer"&gt;explode a full male anatomy model into 2,234 individually toggleable pieces&lt;/a&gt; in one interactive 3D web build, following an earlier viral demo that did the same to a Tesla.&lt;/li&gt;
&lt;li&gt;Designer Marvin Schwaibold's read after a few days in: &lt;a href="https://x.com/MSchwaibold/status/2096059496812716307" rel="noopener noreferrer"&gt;Astra is genuinely good at generating UI&lt;/a&gt;, not just wiring up backend logic.&lt;/li&gt;
&lt;li&gt;Yatharth Gupta paired Astra with a video-gen tool and &lt;a href="https://x.com/_yatharthg/status/2096488216983732341" rel="noopener noreferrer"&gt;turned out launch-ready marketing video content in about five minutes&lt;/a&gt; — a workflow that used to mean a separate editing pass entirely.&lt;/li&gt;
&lt;li&gt;And builders are still &lt;a href="https://x.com/DilumSanjaya/status/2096280244663775423" rel="noopener noreferrer"&gt;posting fresh interactive demos&lt;/a&gt; most days this week, which is the more telling signal than any single one of them: the interesting output right now isn't a benchmark score, it's how fast "describe it, get a working interactive build" turns into a default workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The common thread across all of these: none of them are chat transcripts. They're interfaces, simulations, and finished assets, built by letting the model actually operate software rather than describe what to do next — which is the whole thesis of this piece.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it matters more than another "smartest model yet" post
&lt;/h2&gt;

&lt;p&gt;Model capability has been improving on a fairly predictable curve for two years. What's not mature is everything that sits around the model once you let it act instead of just answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who approved this action before it ran&lt;/li&gt;
&lt;li&gt;What permissions did the agent actually have when it ran it&lt;/li&gt;
&lt;li&gt;What's the audit trail if something breaks&lt;/li&gt;
&lt;li&gt;Can you roll it back cleanly if the agent did the wrong thing at 2am&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't hypothetical risk-modeling. Security researchers have already documented an OpenAI evaluation agent reaching Hugging Face's production infrastructure through a sandbox that still had open network access and a long-lived shared credential — exactly the kind of gap that "the agent can act on its own" creates once the agent is good enough to actually act. The lesson wasn't "don't use agents." It was that isolation, scoped credentials, and egress allowlists aren't optional add-ons — they're the actual product surface now.&lt;/p&gt;

&lt;p&gt;That's the shift worth paying attention to as a builder: the scarce resource stopped being model access and started being trustworthy execution. Anyone can call an API. Fewer people are building the permission layer, the sandbox, the approval gate, and the rollback path around it — and that's exactly where a smaller team can compete against a foundation lab, because it's an infrastructure and product-design problem, not a training-compute problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's actually buildable around this right now
&lt;/h2&gt;

&lt;p&gt;I'd split the opportunity into a few concrete lanes, roughly in order of how fast a solo builder or small team could ship something real:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Approval-gate middleware for a specific tool category.&lt;br&gt;
Not "governance for AI agents" broadly — that's already crowded by platforms like E2B, Modal, and Cosmonic at the infrastructure layer. Pick one narrow, high-stakes action category (agent-initiated payments, agent-initiated deploys, agent-initiated customer-data edits) and build the human-in-the-loop approval step for it. Thin wrapper, opinionated defaults, five-minute setup. That's a sellable SaaS, not a platform play.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Observability for agent runs, not just LLM calls.&lt;br&gt;
Most "AI observability" tools trace prompts and tokens. What teams actually need once agents start touching production is a trace of actions: which files changed, which API calls fired, which were blocked, in what order, tied to which task. If you've built anything with scraping or automation pipelines before, this is a smaller lift than it sounds — it's structured logging with a good UI on top, aimed at a real pain point.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rollback-as-a-feature for agent-shipped code.&lt;br&gt;
Coding agents will keep shipping subtly wrong changes — that's the consensus among teams running Claude Code, Cursor, Codex, and Devin in production right now, and their fix is CI gates, canary deploys, and one-click rollback, not slowing the agent down. A tool that makes "undo everything this agent touched in the last run" trivial for teams that don't have a mature CI/CD setup yet is a real gap, especially for smaller shops that adopted an agent before they adopted the guardrails.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A vertical computer-use agent for one repetitive workflow.&lt;br&gt;
Astra and its Codex harness are general-purpose. General-purpose tools leave room for a narrow, well-scoped agent that does one job — filling out a specific type of form, reconciling one kind of spreadsheet, running one recurring research task — reliably enough that a non-technical buyer trusts it. That's a positioning move more than a technical one, and it's the same instinct that's worked for narrow SaaS templates and directory products before: don't out-model OpenAI, out-scope them.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The part worth being honest about
&lt;/h2&gt;

&lt;p&gt;None of this works if the underlying agent is unreliable, and computer-use agents still aren't reliable enough to run unsupervised on anything that matters. The teams getting real productivity out of coding and computer-use agents right now are the ones that invested in review discipline, not the ones that just pointed an agent at production and walked away. If you're building the permission/observability/rollback layer, that's your actual pitch to a buyer: not "let the agent do more," but "let your team trust the agent enough to let it do more."&lt;/p&gt;

&lt;p&gt;That's also the honest read on why access to Astra's more capable modes is staged and gated rather than switched on for everyone at once — the lab building the model is making the same bet you'd be making as a builder around it: the model getting smarter doesn't remove the need for the scaffolding, it raises the stakes on not having it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to go from here
&lt;/h2&gt;

&lt;p&gt;If you're evaluating which coding agent to actually build with today rather than which one made headlines, it's worth reading through a proper &lt;a href="https://ihatereading.in/t/Cursor,-Codex,-Claude-Code-prompts-collection" rel="noopener noreferrer"&gt;current comparison of AI coding agents&lt;/a&gt; before picking a stack — the "best" one depends entirely on whether your team reviews synchronously or lets agents run async. And if the sandboxing/permissions side of this is new territory, I'd start with what's already been written on &lt;a href="https://ihatereading.in/t/Whole-fight-for-AI-sandbox" rel="noopener noreferrer"&gt;why AI agents need a sandbox in the first place&lt;/a&gt; — it's not a new problem, Astra just raised the stakes on solving it.&lt;/p&gt;

&lt;p&gt;If you're building in this space and want more of this kind of breakdown as it happens, the &lt;a href="https://ihatereading.in/magazine" rel="noopener noreferrer"&gt;monthly digest&lt;/a&gt; rounds up what's shipping across AI tooling, and the &lt;a href="https://ihatereading.in/saas-directories" rel="noopener noreferrer"&gt;SaaS directories&lt;/a&gt; are worth a look once you've got something worth listing.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;And that's a wrap for today&lt;/p&gt;

&lt;p&gt;See you in the next one&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Shrey&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Agency CRM: How to Manage Leads, Clients, Projects and Invoices in One System</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Sat, 05 Sep 2026 10:27:45 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/agency-crm-how-to-manage-leads-clients-projects-and-invoices-in-one-system-4nj4</link>
      <guid>https://dev.to/shreyvijayvargiya/agency-crm-how-to-manage-leads-clients-projects-and-invoices-in-one-system-4nj4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Agency CRM&lt;/strong&gt; is software that runs the full agency loop in one place: a new lead becomes a proposal, the proposal becomes a client, the client creates a project, the project creates deliverables, the deliverables create invoices, and the invoice creates revenue.&lt;/p&gt;

&lt;p&gt;Most &lt;a href="https://saascrm.site/templates/agency" rel="noopener noreferrer"&gt;CRM for agencies&lt;/a&gt; products still stop at contacts. &lt;a href="https://saascrm.site" rel="noopener noreferrer"&gt;SaaSCRM&lt;/a&gt; treats &lt;strong&gt;agency client management software&lt;/strong&gt; as a business operating system — sales, delivery, and billing on connected records, with an agentic chatbot you can actually ask questions.&lt;/p&gt;

&lt;p&gt;A current industry dataset estimates roughly &lt;strong&gt;2.9K monthly searches&lt;/strong&gt; for “agency CRM.” The search is not for another contact list. It is for a system that matches how studios, boutiques, and digital agencies already work.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;agency CRM&lt;/strong&gt; must connect &lt;strong&gt;leads → pipeline → clients → projects → tasks → invoices → payments → activity&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Spreadsheets fail after ~10–30 clients because five people edit the same file and follow-ups live in Slack or WhatsApp.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://saascrm.site" rel="noopener noreferrer"&gt;SaaSCRM&lt;/a&gt; already ships this shape: &lt;a href="https://saascrm.site/templates/agency" rel="noopener noreferrer"&gt;Agency CRM template&lt;/a&gt;, &lt;a href="https://saascrm.site/demo/template/agency" rel="noopener noreferrer"&gt;live demo&lt;/a&gt;, and &lt;a href="https://saascrm.site/pricing" rel="noopener noreferrer"&gt;custom builds from $2,000&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Path: &lt;strong&gt;free CRM template → SaaSCRM template → custom CRM build&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What is an agency CRM?
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;agency CRM&lt;/strong&gt; is a customer and operations system designed for agencies — not a generic sales database with a new label.&lt;/p&gt;

&lt;p&gt;In a generic CRM you store people and move deals. In &lt;strong&gt;CRM for agencies&lt;/strong&gt;, those people become paying clients, those clients own projects, those projects have tasks and deliverables, and those deliverables become invoices and collected payments. That is &lt;strong&gt;agency client management software&lt;/strong&gt;: one record graph, not five subscriptions.&lt;/p&gt;

&lt;p&gt;If you are still asking &lt;em&gt;why bother&lt;/em&gt;, start with &lt;a href="https://saascrm.site/blog/why-your-business-needs-a-crm" rel="noopener noreferrer"&gt;why your business needs a CRM&lt;/a&gt;. The agency version of that answer is specific: &lt;strong&gt;visibility across sales and delivery&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  An agency rarely has only one workflow
&lt;/h2&gt;

&lt;p&gt;A new lead becomes a proposal.&lt;/p&gt;

&lt;p&gt;The proposal becomes a client.&lt;/p&gt;

&lt;p&gt;The client creates a project.&lt;/p&gt;

&lt;p&gt;The project creates deliverables.&lt;/p&gt;

&lt;p&gt;The deliverables create invoices.&lt;/p&gt;

&lt;p&gt;The invoice creates revenue.&lt;/p&gt;

&lt;p&gt;But many agencies manage these stages in completely different tools — a form here, a sheet there, &lt;a href="https://razorpay.com/invoices/" rel="noopener noreferrer"&gt;Razorpay&lt;/a&gt; or a PDF for billing, WhatsApp for follow-ups, and a project board that never talks to the pipeline.&lt;/p&gt;

&lt;p&gt;That is where an &lt;strong&gt;agency CRM&lt;/strong&gt; becomes useful. Indian agencies especially live in WhatsApp threads; the CRM has to be the system of record so a chat does not become the only place a client exists.&lt;/p&gt;




&lt;h2&gt;
  
  
  What an agency CRM actually needs
&lt;/h2&gt;

&lt;p&gt;A useful &lt;strong&gt;agency CRM&lt;/strong&gt; should connect:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Entity&lt;/th&gt;
&lt;th&gt;Question it answers&lt;/th&gt;
&lt;th&gt;In SaaSCRM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Leads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Who might become a client?&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/leads" rel="noopener noreferrer"&gt;Leads&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pipeline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Where is each opportunity?&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/pipelines" rel="noopener noreferrer"&gt;Pipelines&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Clients&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Who is currently paying us?&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://saascrm.site/contacts" rel="noopener noreferrer"&gt;Contacts&lt;/a&gt; / companies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Projects&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What work is being delivered?&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/projects" rel="noopener noreferrer"&gt;Projects&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tasks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Who needs to do what?&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/tasks" rel="noopener noreferrer"&gt;Tasks&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Invoices&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What has been billed?&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/invoices" rel="noopener noreferrer"&gt;Invoices&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Payments&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What has actually been collected?&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/payments" rel="noopener noreferrer"&gt;Payments&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Activity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What happened with this client?&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/activity" rel="noopener noreferrer"&gt;Activity&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is more than traditional contact management. It is a &lt;strong&gt;business operating system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.zoho.com/crm/" rel="noopener noreferrer"&gt;Zoho CRM&lt;/a&gt; is the default Indian answer for “just get a CRM.” It is strong at sales. Agencies still outgrow it when they need &lt;strong&gt;projects + invoices + a UI they can white-label&lt;/strong&gt; without waiting on a marketplace plugin. That gap is why we ship a dedicated &lt;a href="https://saascrm.site/templates/agency" rel="noopener noreferrer"&gt;Agency CRM template&lt;/a&gt; instead of a generic admin dump — see the one-line map in &lt;a href="https://saascrm.site/blog/six-crm-templates-you-can-demo-today" rel="noopener noreferrer"&gt;6 CRM templates you can demo today&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why spreadsheets eventually stop working
&lt;/h2&gt;

&lt;p&gt;Spreadsheets are great when you have 10 clients.&lt;/p&gt;

&lt;p&gt;Then you have 30.&lt;/p&gt;

&lt;p&gt;Five people edit the same document.&lt;/p&gt;

&lt;p&gt;Someone creates a second version.&lt;/p&gt;

&lt;p&gt;A client is forgotten.&lt;/p&gt;

&lt;p&gt;A proposal doesn't get followed up.&lt;/p&gt;

&lt;p&gt;A task exists in Slack.&lt;/p&gt;

&lt;p&gt;An invoice exists somewhere else.&lt;/p&gt;

&lt;p&gt;The agency has more information but &lt;strong&gt;less visibility&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We have watched this in client work too — including a &lt;a href="https://saascrm.site/blog/building-finance-crm-for-australian-client" rel="noopener noreferrer"&gt;finance CRM we built for an Australian accounting team&lt;/a&gt;. The pattern is the same: the moment billing and delivery leave the pipeline, the founder starts running the business from memory.&lt;/p&gt;

&lt;p&gt;If you are comparing tools as a small studio, the &lt;a href="https://saascrm.site/blog/best-crm-for-small-businesses-and-startups" rel="noopener noreferrer"&gt;best CRM for small businesses and startups&lt;/a&gt; write-up is the buying filter. &lt;strong&gt;CRM for agencies&lt;/strong&gt; just adds projects and retainers to that list.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building an agency CRM faster with SaaSCRM
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://saascrm.site" rel="noopener noreferrer"&gt;SaaSCRM&lt;/a&gt; already includes CRM patterns for leads, pipeline, sales, invoices, analytics, activity, and operational management — 60+ screens, theme customizer, and an &lt;a href="https://saascrm.site/demo" rel="noopener noreferrer"&gt;agentic chatbot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Instead of designing all of those screens from scratch, an agency can customize the existing foundation around its own workflow.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lead → Qualification → Proposal → Won&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;then:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client → Project → Tasks → Deliverables → Invoice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The same CRM contains both the &lt;strong&gt;sales&lt;/strong&gt; and &lt;strong&gt;operational&lt;/strong&gt; sides of the agency.&lt;/p&gt;

&lt;p&gt;Open the &lt;a href="https://saascrm.site/demo/template/agency" rel="noopener noreferrer"&gt;Agency CRM live demo&lt;/a&gt; and walk that sidebar. Then plan &lt;em&gt;your&lt;/em&gt; modules in two minutes with the &lt;a href="https://saascrm.site/blueprint" rel="noopener noreferrer"&gt;AI CRM Builder&lt;/a&gt; — the same flow we described in &lt;a href="https://saascrm.site/blog/plan-your-crm-in-2-minutes-with-ai-builder" rel="noopener noreferrer"&gt;Plan your CRM in 2 minutes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Niche validation matters before you overbuild. Founders who shop ideas on &lt;a href="https://microsaashq.com/" rel="noopener noreferrer"&gt;MicroSaaSHQ&lt;/a&gt; keep seeing &lt;strong&gt;agency CRM&lt;/strong&gt; and vertical client-management tools as real demand, not a vanity niche. &lt;a href="https://yourstory.com/" rel="noopener noreferrer"&gt;YourStory&lt;/a&gt; and the Indian SaaS press make the same point from the other side: studios want software that matches retainers and delivery, not another Western sales cloud.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI makes the agency CRM more useful
&lt;/h2&gt;

&lt;p&gt;Imagine asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Which proposals haven't been followed up?”&lt;/li&gt;
&lt;li&gt;“Show all clients with unpaid invoices.”&lt;/li&gt;
&lt;li&gt;“What projects are overdue?”&lt;/li&gt;
&lt;li&gt;“Create follow-up tasks for all leads I haven't contacted this week.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changes CRM from a database into a &lt;strong&gt;workspace&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;SaaSCRM's agentic chatbot is built around this type of CRM interaction — tool-calling against leads, invoices, and tasks, not a FAQ bubble. We use the same pattern internally for research agents; the &lt;a href="https://saascrm.site/blog/ai-reddit-trend-scraper-saved-1000-month-content-creation" rel="noopener noreferrer"&gt;Reddit trend scraper that saved us $1,000/month&lt;/a&gt; sits on the same admin + chat shell.&lt;/p&gt;




&lt;h2&gt;
  
  
  Template or custom build?
&lt;/h2&gt;

&lt;p&gt;There are two sensible paths.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use the template&lt;/strong&gt; when your team wants to build and customize the application itself — Next.js, React, Tailwind, shadcn, Cursor-ready source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use the custom CRM service&lt;/strong&gt; when the workflow requires custom modules, integrations, branding, authentication, billing, or deployment. SaaSCRM currently positions custom builds &lt;strong&gt;from $2,000&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That creates a useful path:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free CRM template → SaaSCRM template → Custom CRM build&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You want&lt;/th&gt;
&lt;th&gt;Start here&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Click the agency workflow today&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/demo/template/agency" rel="noopener noreferrer"&gt;Agency CRM demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Own the code&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://saascrm.site/pricing" rel="noopener noreferrer"&gt;Pricing&lt;/a&gt; (template from $49)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design modules first&lt;/td&gt;
&lt;td&gt;&lt;a href="https://saascrm.site/blueprint" rel="noopener noreferrer"&gt;AI CRM Builder&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;We ship it for you&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://saascrm.site/contact" rel="noopener noreferrer"&gt;Contact&lt;/a&gt; or &lt;a href="https://wa.me/917030226230" rel="noopener noreferrer"&gt;WhatsApp&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Why keep shipping templates at all? Because the boring admin layer is what agencies actually run on — I wrote about that in &lt;a href="https://saascrm.site/blog/why-i-keep-building-crm-templates" rel="noopener noreferrer"&gt;why I keep building CRM templates&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to run leads, clients, projects, and invoices in one system
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Capture leads&lt;/strong&gt; in one inbox — forms, referrals, WhatsApp handoff — not a shared sheet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move the pipeline&lt;/strong&gt; (qualification → proposal → won) so nothing sits in “we’ll follow up.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Convert the won deal&lt;/strong&gt; into a client record. Do not start a second spreadsheet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open a project&lt;/strong&gt; with tasks, owners, and due dates under that client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invoice from the same record&lt;/strong&gt; when deliverables ship; record payments when they land.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask the copilot&lt;/strong&gt; for unpaid invoices, overdue projects, and quiet leads.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is &lt;strong&gt;agency client management software&lt;/strong&gt; in practice. You can rehearse every step on &lt;a href="https://saascrm.site" rel="noopener noreferrer"&gt;saascrm.site&lt;/a&gt; before you buy.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is an agency CRM?
&lt;/h3&gt;

&lt;p&gt;A CRM designed around agency sales, client management, and delivery workflows — not only contacts and deals. Read the broader case in &lt;a href="https://saascrm.site/blog/why-your-business-needs-a-crm" rel="noopener noreferrer"&gt;why your business needs a CRM&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should an agency CRM include?
&lt;/h3&gt;

&lt;p&gt;Leads, pipeline, clients, projects, tasks, invoices, payments, activity, and analytics. Demo that set on the &lt;a href="https://saascrm.site/templates/agency" rel="noopener noreferrer"&gt;Agency CRM template&lt;/a&gt; and the &lt;a href="https://saascrm.site/blog/six-crm-templates-you-can-demo-today" rel="noopener noreferrer"&gt;six-template gallery&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can SaaSCRM be customised for an agency?
&lt;/h3&gt;

&lt;p&gt;Yes. SaaSCRM specifically positions itself for agencies and &lt;a href="https://saascrm.site/pricing" rel="noopener noreferrer"&gt;custom CRM builds&lt;/a&gt;. Plan the modules with the &lt;a href="https://saascrm.site/blueprint" rel="noopener noreferrer"&gt;AI CRM Builder&lt;/a&gt;, then customize or hire us.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can one CRM manage both sales and projects?
&lt;/h3&gt;

&lt;p&gt;Yes, provided the application is designed around connected entities and workflows. SaaSCRM’s agency vertical does that: won pipeline items sit next to &lt;a href="https://saascrm.site/projects" rel="noopener noreferrer"&gt;projects&lt;/a&gt; and &lt;a href="https://saascrm.site/invoices" rel="noopener noreferrer"&gt;invoices&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agency CRM vs a generic CRM — what is the difference?
&lt;/h3&gt;

&lt;p&gt;A generic CRM is a sales database. An &lt;strong&gt;agency CRM&lt;/strong&gt; is &lt;strong&gt;CRM for agencies&lt;/strong&gt;: pipeline &lt;em&gt;plus&lt;/em&gt; delivery, retainers, and billing. If you only need contacts, a generic tool is enough. If you invoice projects, you need &lt;strong&gt;agency client management software&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much does a custom agency CRM cost?
&lt;/h3&gt;

&lt;p&gt;SaaSCRM’s template starts at &lt;strong&gt;$49&lt;/strong&gt;. A tailored &lt;strong&gt;custom CRM build starts from $2,000&lt;/strong&gt; when you need branding, auth, integrations, or deployment. &lt;a href="https://saascrm.site/contact" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt; or message us on &lt;a href="https://wa.me/917030226230" rel="noopener noreferrer"&gt;WhatsApp&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;agency CRM&lt;/strong&gt; is how you stop running the studio in five tabs. &lt;a href="https://saascrm.site" rel="noopener noreferrer"&gt;SaaSCRM&lt;/a&gt; already models &lt;strong&gt;CRM for agencies&lt;/strong&gt;: leads, clients, projects, and invoices on one Next.js foundation — with AI on top.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next steps&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://saascrm.site/demo/template/agency" rel="noopener noreferrer"&gt;Open the Agency CRM demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://saascrm.site/blueprint" rel="noopener noreferrer"&gt;Plan your CRM in two minutes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://saascrm.site/pricing" rel="noopener noreferrer"&gt;Get the template or a custom build&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;See you in the next one&lt;/p&gt;

&lt;p&gt;— &lt;strong&gt;Shrey&lt;/strong&gt;, creator of &lt;a href="https://saascrm.site" rel="noopener noreferrer"&gt;SaaSCRM.site&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>crm</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>AI-Automated Reddit Trend Scraper that saved us $1000/month on Content Creation</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Sat, 29 Aug 2026 02:49:58 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/ai-automated-reddit-trend-scraper-that-saved-us-1000month-on-content-creation-2go3</link>
      <guid>https://dev.to/shreyvijayvargiya/ai-automated-reddit-trend-scraper-that-saved-us-1000month-on-content-creation-2go3</guid>
      <description>&lt;p&gt;Hello and welcome to my new blog&lt;/p&gt;

&lt;p&gt;In today’s story, we will be discussing an Automated Trend Scraper that helps us save more than 4hours/day and create stunning content, replacing $1000/month on content creation.&lt;/p&gt;

&lt;p&gt;Manual trend monitoring is a time sink.&lt;/p&gt;

&lt;p&gt;Scouring Reddit, X, and LinkedIn daily to catch target audience discussions wastes hours that could go into building. To solve this for &lt;a href="https://ihatereading.in/" rel="noopener ugc nofollow noreferrer"&gt;iHateReading&lt;/a&gt;, we built an autonomous AI agent to handle the entire pipeline: collecting raw discussions, enriching them with context, and generating tailored content ideas.&lt;/p&gt;

&lt;p&gt;Here is how the system works and how we put it together using Hono, OpenRouter, and our proprietary scraper, ScrapeFast.&lt;/p&gt;




&lt;h3&gt;
  
  
  The 5-Step Pipeline
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;1. Collect:&amp;nbsp;Scheduled cron jobs fire four times a day, running within a 10-minute execution window. The agent pulls RSS feeds from key subreddits alongside relevant X and LinkedIn posts using our lightweight&amp;nbsp;ScrapeFast&amp;nbsp;engine.&lt;/li&gt;
&lt;li&gt;2. Enrich:&amp;nbsp;Raw posts lack context. The agent passes scraped payloads to&amp;nbsp;OpenRouter, extracting underlying pain points, core questions, and sentiment rather than just storing titles.&lt;/li&gt;
&lt;li&gt;3. Store:&amp;nbsp;Structured records land in a clean database with key metadata (source, category, extracted problem) mapped for efficient querying.&lt;/li&gt;
&lt;li&gt;4. Read:&amp;nbsp;Instead of endless doom-scrolling, a custom interface aggregates the pipeline into a single daily readout that takes under five minutes to review.&lt;/li&gt;
&lt;li&gt;5. Act:&amp;nbsp;A dedicated AI chatbot runs on top of the dataset. It answers natural-language queries about emerging trends and directly generates content ideas. For example, it recently identified strong demand for an “AI Tools List” page optimised for SEO.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Proof of Concept
&lt;/h3&gt;

&lt;p&gt;The image added below is proof of the AI agent running in a terminal with one command&lt;/p&gt;

&lt;p&gt;It scrapes the latest trending posts from targeted subreddits and AI enrich it further before storing the database&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fron91h1sph.ufs.sh%2Ff%2FFOOnCPlwcCRiLNKM8T9RQKxZgmNWpvqzJrtRUeObSBh4jioE" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fron91h1sph.ufs.sh%2Ff%2FFOOnCPlwcCRiLNKM8T9RQKxZgmNWpvqzJrtRUeObSBh4jioE" alt="AI agent running in a terminal, fetching trending posts along with data enrichment" width="720" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image 2 shown below renders the 100+ daily fetched subreddit posts of our interests; this helps to provide detailed context about each Reddit post and a relativity score.&lt;/p&gt;

&lt;p&gt;Relative score and AI context message become important as they give an overview before reading the full comment/posts; I’ve realised that our Email/Gmail inbox should have this feature 😃&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fron91h1sph.ufs.sh%2Ff%2FFOOnCPlwcCRiMbzfcSsWIBcxVwO8ZrGFHM6h9z4LtblRUpSk" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fron91h1sph.ufs.sh%2Ff%2FFOOnCPlwcCRiMbzfcSsWIBcxVwO8ZrGFHM6h9z4LtblRUpSk" alt="Reddit posts with context summary and relative score in our iHateReading admin dashboard" width="720" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image 3, as shown below, is where I did some personal improvisation. I quickly integrated an AI chatbot, which can access tools such as search/filter/find from the Reddit posts database.&lt;/p&gt;

&lt;p&gt;I’ll explain in a few words&lt;/p&gt;

&lt;p&gt;&amp;gt; The AI chatbot, as shown below, has the Directory posts context. &lt;/p&gt;

&lt;p&gt;&amp;gt; The AI chatbot can search/find/filter the posts if needed as a tool for the AI agent&lt;/p&gt;

&lt;p&gt;In this way, the AI chatbot can give answers based on trending posts. I can give more context to the AI chatbot by giving a timeframe in the prompt, for example, “Give me the last 20 days' trending posts summary”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fron91h1sph.ufs.sh%2Ff%2FFOOnCPlwcCRigD1HA4MFBiP9A6cYXmboxvUHjdRT4h8DewsW" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fron91h1sph.ufs.sh%2Ff%2FFOOnCPlwcCRigD1HA4MFBiP9A6cYXmboxvUHjdRT4h8DewsW" width="720" height="360"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tech Stack Breakdown
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://hono.dev/?ref=ihatereading.in" rel="noopener ugc nofollow noreferrer"&gt;Hono&lt;/a&gt;:&amp;nbsp;Powers the backend API. Its minimal overhead and edge-ready performance ensure fast, lightweight background scheduling without heavy server footprints.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://openrouter.ai/?ref=ihatereading.in" rel="noopener ugc nofollow noreferrer"&gt;OpenRouter&lt;/a&gt;:&amp;nbsp;Serves as the AI layer, enabling flexible model routing to enrich raw text, summarise discussions, and apply conversational intelligence to stored trends.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/shreyvijayvargiya/scrapefast" rel="noopener ugc nofollow noreferrer"&gt;ScrapeFast&lt;/a&gt;:&amp;nbsp;Our custom in-house scraping tool designed for reliable, fast data ingestion across Reddit, social feeds, and web sources.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Trend Scraper for Reddit, LinkedIn and X
&lt;/h2&gt;

&lt;p&gt;We built the same agent for a trend scraper for LinkedIn and another one for X(formerly Twitter)&lt;/p&gt;

&lt;p&gt;We can’t run the platform while spending 4 hours a day doing manual research for our website content, so AI is the best choice for the same.&lt;/p&gt;

&lt;p&gt;We built a similar agent for LinkedIn and another one for X; both do the same work in the same process for each of the platforms.&lt;/p&gt;

&lt;p&gt;In the end, we manually read all the posts and use an AI chatbot to finalise the next plan of content and do better work, solve real problems&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We eliminated manual topic research for &lt;a href="http://ihatereading.in/" rel="noopener ugc nofollow noreferrer"&gt;iHateReading&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Instead of guessing what to write, the agent continuously surfaces real user problems as they emerge. We step in and build the solutions.&lt;/p&gt;

&lt;p&gt;PS — We have sold this AI agent to one of our clients; if you need one, DM me at &lt;a href="mailto:shreyvijayvargiya26@gmail.com"&gt;&lt;/a&gt;&lt;a href="mailto:shreyvijayvargiya26@gmail.com"&gt;shreyvijayvargiya26@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can build a custom agent for Agencies, startups, and companies. We look forward to your message.&lt;/p&gt;

&lt;p&gt;That would be enough for today; see you in the next one&lt;br&gt;
Cheers&lt;br&gt;
Shrey&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>api</category>
      <category>automation</category>
    </item>
    <item>
      <title>Cool React Sounds libraries to use on your next project</title>
      <dc:creator>shrey vijayvargiya</dc:creator>
      <pubDate>Sun, 16 Aug 2026 11:39:01 +0000</pubDate>
      <link>https://dev.to/shreyvijayvargiya/cool-react-sounds-libraries-to-use-on-your-next-project-2l3b</link>
      <guid>https://dev.to/shreyvijayvargiya/cool-react-sounds-libraries-to-use-on-your-next-project-2l3b</guid>
      <description>&lt;p&gt;Buildsaas updates, React sound libraries, Explore page on iHateReading and more&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; Buildsaas, Frontend Development, iHateReading Website, Posts.design, Movin.design&lt;/p&gt;

&lt;p&gt;Hello and welcome to the new blog, folks&lt;/p&gt;

&lt;p&gt;I am your author, Shrey&lt;/p&gt;

&lt;p&gt;This blog is an interesting one, but it doesn't have any specific topic to write about!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Buildsaas: My delulu is the only solulu 😀💁🏼
&lt;/h2&gt;

&lt;p&gt;I read this tweet on &lt;a href="http://x.com" rel="noopener noreferrer"&gt;x.com&lt;/a&gt; about boilerplate businesses.&lt;/p&gt;

&lt;p&gt;The tweet: &lt;a href="https://x.com/JanuBuilds/status/2088232655712108881" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://x.com/JanuBuilds/status/2088232655712108881" rel="noopener noreferrer"&gt;https://x.com/JanuBuilds/status/2088232655712108881&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of us are thinking that AI might eat the boilerplate business in the next 2 years, but in reality, the picture is the inverse.&lt;/p&gt;

&lt;p&gt;Boilerplate businesses are earning more than required, and the trend and demand are not going down anyway in the next 2 years. The main reason is the cost and time it usually takes to build entire SAAS products from scratch to production level.&lt;/p&gt;

&lt;p&gt;It will cost &amp;gt; $1k for a developer to build a simple &lt;a href="http://gettemplate.app" rel="noopener noreferrer"&gt;gettemplate.app&lt;/a&gt; or even a static kind of website because a website is not just a webpage but a combination of multiple things running and integrated in a well-designed system.&lt;/p&gt;

&lt;p&gt;A website contains Authentication, Frontend pages, email, State management, and payment services, all running simultaneously for 100+ users on a daily basis, and that is why we have been building and upgrading &lt;a href="https://buildsaas.dev/" rel="noopener noreferrer"&gt;Buildsaas.dev&lt;/a&gt; for the past year. I’ve built 6 apps in the past year using one boilerplate; all the products are LIVE and used by real-world people. Check all &lt;a href="http://buildsaas.dev" rel="noopener noreferrer"&gt;buildsaas.dev&lt;/a&gt; products on our examples page.&lt;/p&gt;

&lt;p&gt;If you are building your next SAAS product or website, or an idea, feel free to try &lt;a href="https://buildsaas.dev/" rel="noopener noreferrer"&gt;buildsaas.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We provide proper documentation, notes, custom email and WhatsApp support, along with launch support to help you turn your idea into a reality.&lt;/p&gt;

&lt;h1&gt;
  
  
  New Explore Page on iHateReading
&lt;/h1&gt;

&lt;p&gt;I always want to create something similar to &lt;a href="http://daily.dev" rel="noopener noreferrer"&gt;daily.dev&lt;/a&gt; for our use case and product. Last year I've collected more than 100+ RSS feed websites that I can use to scrape or fetch the latest interesting blog content and renders them on the iHateReading explore page.&lt;/p&gt;

&lt;p&gt;I quickly use the Nextjs server-side API to attach it with a CRON job, meaning run everyday twice, only 2 times per day and brings some solid, interesting internet scraped content.&lt;/p&gt;

&lt;p&gt;Give it a try, &lt;a href="http://ihatereading.in/explore" rel="external noopener noreferrer"&gt;ihatereading.in/explore&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're wondering why, Nextjs server-side API?&lt;/p&gt;

&lt;p&gt;Well, I don't want to complicate it, we ain't need a solid system design for the URLs or RSS feeds in total. &lt;/p&gt;

&lt;p&gt;We have quite a couple of 100s of RSS feed links in total, and Next.js server-side is a server-side API that quickly runs in batches of 50 at a time to scrape the RSS feeds content. &lt;/p&gt;

&lt;p&gt;If needed, I use our own scraping API to fetch more details or content from each URL; &lt;a href="https://ihatereading.in/t/Turning-GitHub-Trends,-Scrapers,-and-LLMs-Into-New-SaaS-Ideas" rel="external noopener noreferrer"&gt;check it out&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Sounds-Based Interfaces
&lt;/h1&gt;

&lt;p&gt;I've found a few more tweets regarding indie-hackers building SDKs for sounds on a website, click the button to invoke the sound instead of a ripple effect or other animations.&lt;/p&gt;

&lt;p&gt;I've found it a very interesting concept; a website, in my opinion, should feel more realistic instead of being boring to use.&lt;/p&gt;

&lt;p&gt;I've found a few libraries to add sound to your next React website project. Check them below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cuelume.dev?ref=ihatereading.in" rel="noopener noreferrer"&gt;Cuelume&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://procedural-sounds.vercel.app/" rel="external noopener noreferrer"&gt;Sonaut&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.reactsounds.com/?ref=ihatereading.in" rel="external noopener noreferrer"&gt;React Sounds&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://uisfx.com/?ref=ihatereading.in" rel="external noopener noreferrer"&gt;UIsfx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://roover.vercel.app/?ref=ihatereading.in" rel="external noopener noreferrer"&gt;Roover&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If needed, try using the &lt;a href="https://github.com/joshwcomeau/use-sound" rel="external noopener noreferrer"&gt;useSound&lt;/a&gt; hook for integrating sounds on your website&lt;/p&gt;

&lt;h2&gt;
  
  
  Directory Listing Website: Aggregator Website
&lt;/h2&gt;

&lt;p&gt;Directory websites are becoming a new trend; everyone in their domain wants to build a directory website showcasing inspirations, landing pages, tools, lists, templates — and what makes it interesting and in-demand is that it’s a money-printing machine.&lt;/p&gt;

&lt;p&gt;Yes, a directory website in 2020 was a simple static website, and nobody paid attention to it, but in 2026, AI LLMs refer to directory websites finding tools that are cheap and better alternatives; indie-hackers are printing money from stupid, boring static listing websites — who knows that this is the future.&lt;/p&gt;

&lt;p&gt;But I love directory websites; they provide so many solutions on one platform, saving us from too many tabs. If you need to build one, I’ve launched a new template on our website: a full-stack directory listing website template.&lt;/p&gt;

&lt;p&gt;Built using Next.js, Tailwind, Shadcn, Supabase and Stripe. It provides frontend pages for your directory website, authentication for users to submit their tools, Payment integration using Stripe for slot booking and more such useful features, making it easy to build your directory website in a week, not months.&lt;/p&gt;

&lt;h3&gt;
  
  
  ToolDir
&lt;/h3&gt;

&lt;p&gt;ToolDir: Directory full-stack website template — Shadcn, Next.js, Supabase and Stripe.&lt;/p&gt;

&lt;p&gt;Get the Template: &lt;a href="https://shreyvijayvargiya.gumroad.com/l/nextjs-supabase-directory-boilerplate" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://shreyvijayvargiya.gumroad.com/l/nextjs-supabase-directory-boilerplate" rel="noopener noreferrer"&gt;https://shreyvijayvargiya.gumroad.com/l/nextjs-supabase-directory-boilerplate&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Cool lightweight Websites
&lt;/h1&gt;

&lt;p&gt;I am always a fan of looking for inspirational websites, I love finding new cool interfaces, animations and solutions to improve my website development skills.&lt;/p&gt;

&lt;p&gt;I believe that building a good interface website is an art; it does need more than coding, and that is why an AI agent won't take our job fully.&lt;/p&gt;

&lt;p&gt;A few websites I've stumbled upon recently are as follows&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://movin.design/?ref=ihatereading.in" rel="external noopener noreferrer"&gt;Movin.design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://posts.design/?ref=ihatereading.in" rel="external noopener noreferrer"&gt;Posts.design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://recent.design/?ref=ihatereading.in" rel="external noopener noreferrer"&gt;Recent.design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sections.wtf/?ref=ihatereading.in" rel="external noopener noreferrer"&gt;Sections.wtf&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That would be enough for today. Stay tuned, as I am working on bringing a new job section to iHateReading 😊, as it would help most of you reading on our website to grab a job as well.&lt;/p&gt;

&lt;p&gt;That's it for today, see you in the next one &lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Shrey&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://ihatereading.in/t/Cool-React-Sounds-libraries-to-use-on-your-next-project" rel="noopener noreferrer"&gt;iHateReading&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>news</category>
    </item>
  </channel>
</rss>
