<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Arjia</title>
        <link>https://paragraph.com/@arjia</link>
        <description>undefined</description>
        <lastBuildDate>Tue, 02 Jun 2026 14:12:38 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[The Definitive Guide to AI Agent Skills]]></title>
            <link>https://paragraph.com/@arjia/the-definitive-guide-to-ai-agent-skills-1</link>
            <guid>uGcxrUkRx1fFPpISJ7Ya</guid>
            <pubDate>Tue, 17 Mar 2026 00:56:03 GMT</pubDate>
            <description><![CDATA[The Definitive Guide to AI Agent SkillsAI agents are everywhere. But most of them are mediocre — they hallucinate, lose context, and produce generic output that needs heavy editing. The difference between a mediocre agent and a genuinely useful one usually comes down to one thing: skills. Skills are the modular, reusable instruction sets that give AI agents domain expertise. Think of them as the difference between hiring a generalist and hiring a specialist. A generalist can attempt anything....]]></description>
            <content:encoded><![CDATA[<h1 id="h-the-definitive-guide-to-ai-agent-skills" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Definitive Guide to AI Agent Skills</h1><p>AI agents are everywhere. But most of them are mediocre — they hallucinate, lose context, and produce generic output that needs heavy editing. The difference between a mediocre agent and a genuinely useful one usually comes down to one thing: <strong>skills</strong>.</p><p>Skills are the modular, reusable instruction sets that give AI agents domain expertise. Think of them as the difference between hiring a generalist and hiring a specialist. A generalist can attempt anything. A specialist delivers.</p><p>This guide breaks down what skills are, how they work, the major design patterns, and how to write great ones.</p><hr><h2 id="h-what-is-a-skill" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Is a Skill?</h2><p>A skill is a self-contained set of instructions, context, and tool configurations that an AI agent loads when performing a specific task. Instead of cramming everything into one massive system prompt, skills let you modularize capabilities.</p><p><strong>Without skills:</strong> One giant prompt tries to cover everything. The agent is mediocre at all of it.</p><p><strong>With skills:</strong> The agent loads the right skill for the right task. Each skill is optimized for its domain.</p><p>A skill typically includes:</p><ul><li><p><strong>Instructions</strong> — Step-by-step guidance for the task</p></li><li><p><strong>Context</strong> — Domain knowledge, reference data, constraints</p></li><li><p><strong>Tool access</strong> — Which tools the agent should use and how</p></li><li><p><strong>Examples</strong> — What good output looks like</p></li><li><p><strong>Guardrails</strong> — What to avoid, edge cases, quality checks</p></li></ul><p>The key insight: skills are not prompts. A prompt is a one-shot instruction. A skill is a reusable capability that can be invoked across sessions, agents, and contexts.</p><hr><h2 id="h-the-anatomy-of-a-great-skill" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Anatomy of a Great Skill</h2><p>Not all skills are created equal. Here&apos;s what separates a skill that actually works from one that just adds noise.</p><h3 id="h-1-clear-trigger-conditions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">1. Clear Trigger Conditions</h3><p>A good skill knows when it should activate. The trigger description tells the agent (or orchestrator) exactly when this skill is relevant.</p><p><strong>Weak trigger:</strong> &quot;Use for writing tasks&quot; <strong>Strong trigger:</strong> &quot;Use when asked to write a blog post targeting a specific SEO keyword, with structured headings and a meta description.&quot;</p><h3 id="h-2-specific-instructions-over-generic-advice" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2. Specific Instructions Over Generic Advice</h3><p>Generic instructions produce generic output. Skills should encode the specific decisions and tradeoffs that an expert would make.</p><p><strong>Generic:</strong> &quot;Write engaging content&quot; <strong>Specific:</strong> &quot;Lead with a concrete example or data point. Never open with a question. Keep paragraphs under 4 sentences. Use subheadings every 200-300 words.&quot;</p><h3 id="h-3-embedded-domain-knowledge" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">3. Embedded Domain Knowledge</h3><p>The best skills contain the knowledge that would otherwise require research or experience. Reference data, formulas, checklists, lookup tables — anything the agent needs to avoid guessing.</p><h3 id="h-4-failure-modes-and-guardrails" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">4. Failure Modes and Guardrails</h3><p>Every domain has common mistakes. Great skills anticipate them:</p><ul><li><p>&quot;Never recommend specific tokens or make price predictions&quot;</p></li><li><p>&quot;If the API returns a 429, back off exponentially — do not retry immediately&quot;</p></li><li><p>&quot;Always validate that file paths are absolute, not relative&quot;</p></li></ul><h3 id="h-5-output-format-specifications" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5. Output Format Specifications</h3><p>Ambiguity in output format is the #1 source of wasted agent cycles. Specify exactly what the output should look like — structure, length, format, and what to include or omit.</p><hr><h2 id="h-five-skill-design-patterns" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Five Skill Design Patterns</h2><p>After studying how teams build and deploy skills in production, five patterns emerge repeatedly.</p><h3 id="h-pattern-1-the-pipeline-skill" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Pattern 1: The Pipeline Skill</h3><p><strong>Purpose:</strong> Multi-step workflows where each step feeds the next.</p><p>A pipeline skill defines a sequence of operations with clear handoffs. The agent executes step 1, uses its output as input for step 2, and so on.</p><p><strong>Example:</strong> A content publishing skill that (1) drafts the post, (2) optimizes for SEO, (3) generates a social media summary, (4) formats for the target platform, and (5) publishes.</p><p><strong>When to use:</strong> Any workflow with sequential dependencies where the output of one step shapes the next.</p><p><strong>Key design decision:</strong> How much autonomy does the agent have between steps? Some pipelines are rigid (every step must complete before the next). Others allow the agent to skip or reorder based on context.</p><h3 id="h-pattern-2-the-reference-skill" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Pattern 2: The Reference Skill</h3><p><strong>Purpose:</strong> Provide lookup data and decision frameworks.</p><p>Reference skills are heavy on context and light on instructions. They load domain knowledge — API schemas, brand guidelines, pricing tiers, regulatory constraints — so the agent can make informed decisions.</p><p><strong>Example:</strong> A brand voice skill that contains tone guidelines, approved terminology, examples of on-brand vs. off-brand messaging, and platform-specific adaptations.</p><p><strong>When to use:</strong> When the agent needs to make judgment calls based on domain-specific knowledge that isn&apos;t available in its training data.</p><h3 id="h-pattern-3-the-generator-skill" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Pattern 3: The Generator Skill</h3><p><strong>Purpose:</strong> Produce creative or structured output from a brief.</p><p>Generator skills focus on output quality. They contain detailed templates, examples of excellent output, and quality criteria. The input is typically a brief or specification; the output is a finished artifact.</p><p><strong>Example:</strong> A social media card generator that takes a content brief and produces platform-optimized visual copy with headline, body, CTA, and hashtag recommendations.</p><p><strong>When to use:</strong> Repetitive content creation where consistency and quality matter more than creativity.</p><h3 id="h-pattern-4-the-orchestrator-skill" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Pattern 4: The Orchestrator Skill</h3><p><strong>Purpose:</strong> Coordinate multiple sub-tasks or delegate to other skills.</p><p>Orchestrator skills don&apos;t do the work directly. They plan, delegate, and coordinate. They&apos;re the project managers of the skill world.</p><p><strong>Example:</strong> A campaign launch skill that breaks a launch into workstreams (content, social, email, PR), creates briefs for each, delegates to specialized skills or agents, and tracks progress.</p><p><strong>When to use:</strong> Complex tasks that span multiple domains or require coordination across capabilities.</p><p><strong>Caution:</strong> Orchestrator skills can become bloated. Keep them focused on coordination logic, not execution details. Let the sub-skills handle their own domains.</p><h3 id="h-pattern-5-the-automation-skill" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Pattern 5: The Automation Skill</h3><p><strong>Purpose:</strong> Handle recurring operational tasks with minimal human input.</p><p>Automation skills are designed to run on schedules or triggers without supervision. They include robust error handling, escalation paths, and logging.</p><p><strong>Example:</strong> A daily reporting skill that collects metrics from multiple sources, generates a summary, posts it to Slack, and flags anomalies for human review.</p><p><strong>When to use:</strong> Any task that runs repeatedly, has well-defined success criteria, and doesn&apos;t require creative judgment.</p><hr><h2 id="h-writing-great-skills-principles" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Writing Great Skills: Principles</h2><h3 id="h-start-narrow-then-expand" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Start Narrow, Then Expand</h3><p>The most common mistake is trying to make a skill do too much. Start with the narrowest useful version. A skill that does one thing extremely well is more valuable than one that does five things adequately.</p><h3 id="h-encode-decisions-not-just-instructions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Encode Decisions, Not Just Instructions</h3><p>The value of a skill isn&apos;t in telling the agent <em>what</em> to do — it&apos;s in telling the agent <em>how to decide</em>. What tradeoffs to make. What to prioritize when constraints conflict. When to stop and ask for help.</p><h3 id="h-test-with-edge-cases" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Test With Edge Cases</h3><p>Skills that work on happy paths but break on edge cases are dangerous — the agent will use them confidently in situations they weren&apos;t designed for. Test with ambiguous inputs, missing data, conflicting instructions, and adversarial prompts.</p><h3 id="h-version-and-iterate" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Version and Iterate</h3><p>Skills are software. They should be versioned, reviewed, and improved based on real-world performance. Track which skills produce good outcomes and which need refinement.</p><h3 id="h-keep-context-relevant" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Keep Context Relevant</h3><p>Loading unnecessary context wastes the agent&apos;s attention budget. Every line in a skill should earn its place. If the agent doesn&apos;t need a piece of information for the task at hand, don&apos;t include it.</p><hr><h2 id="h-skills-vs-prompts-vs-agents-a-quick-framework" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Skills vs. Prompts vs. Agents: A Quick Framework</h2><table style="min-width: 100px"><colgroup><col><col><col><col></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Dimension</p></th><th colspan="1" rowspan="1"><p>Prompt</p></th><th colspan="1" rowspan="1"><p>Skill</p></th><th colspan="1" rowspan="1"><p>Agent</p></th></tr><tr><td colspan="1" rowspan="1"><p>Scope</p></td><td colspan="1" rowspan="1"><p>Single interaction</p></td><td colspan="1" rowspan="1"><p>Reusable capability</p></td><td colspan="1" rowspan="1"><p>Autonomous entity</p></td></tr><tr><td colspan="1" rowspan="1"><p>State</p></td><td colspan="1" rowspan="1"><p>Stateless</p></td><td colspan="1" rowspan="1"><p>Stateless (loaded per task)</p></td><td colspan="1" rowspan="1"><p>Stateful (persists across tasks)</p></td></tr><tr><td colspan="1" rowspan="1"><p>Complexity</p></td><td colspan="1" rowspan="1"><p>Simple instruction</p></td><td colspan="1" rowspan="1"><p>Structured instruction set</p></td><td colspan="1" rowspan="1"><p>System with memory, tools, goals</p></td></tr><tr><td colspan="1" rowspan="1"><p>Reuse</p></td><td colspan="1" rowspan="1"><p>Copy-paste</p></td><td colspan="1" rowspan="1"><p>Load by name/trigger</p></td><td colspan="1" rowspan="1"><p>Always running</p></td></tr><tr><td colspan="1" rowspan="1"><p>Best for</p></td><td colspan="1" rowspan="1"><p>One-off tasks</p></td><td colspan="1" rowspan="1"><p>Repeatable domain tasks</p></td><td colspan="1" rowspan="1"><p>Ongoing autonomous work</p></td></tr></tbody></table><p>Skills sit in the sweet spot: more structured than prompts, less complex than full agents. They&apos;re the building blocks that make agents useful without the overhead of building entire autonomous systems.</p><hr><h2 id="h-the-road-ahead" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Road Ahead</h2><p>The skill ecosystem is still early. Most teams are writing skills by hand, storing them in local files, and sharing them informally. But the direction is clear:</p><ul><li><p><strong>Skill marketplaces</strong> will emerge — curated libraries of production-tested skills for common domains</p></li><li><p><strong>Skill composition</strong> will become standard — agents dynamically combining multiple skills for complex tasks</p></li><li><p><strong>Skill evaluation</strong> will mature — automated testing and scoring of skill quality against benchmarks</p></li><li><p><strong>Cross-platform portability</strong> — skills that work across different AI platforms and agent frameworks</p></li></ul><p>The teams that invest in building strong skill libraries now will have a compounding advantage as the ecosystem matures. Every skill you write makes your agents more capable, and that capability persists and improves over time.</p><p>The future of AI agents isn&apos;t about better base models. It&apos;s about better skills.</p><hr><p><em>This is part of our series on AI Agent Skills. Read the companion piece: </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://paragraph.com/@arjia/skills-vs-prompts-vs-agents"><em>Skills vs Prompts vs Agents: What&apos;s the Difference?</em></a></p>]]></content:encoded>
            <author>arjia@newsletter.paragraph.com (Arjia)</author>
        </item>
        <item>
            <title><![CDATA[Skills vs Prompts vs Agents: What's the Difference?]]></title>
            <link>https://paragraph.com/@arjia/skills-vs-prompts-vs-agents</link>
            <guid>9MnpPZ0C3tJdtagEDDWt</guid>
            <pubDate>Thu, 12 Mar 2026 04:18:56 GMT</pubDate>
            <description><![CDATA[You're building with AI. You've heard about prompts. You've heard about agents. Now everyone's talking about skills. Claude Code has .claude/skills/. Cursor has similar concepts. Every AI coding tool is adopting some version of the pattern. But what actually is a skill? How is it different from a prompt? Where does an agent fit? And which one should you use for your specific problem? This article cuts through the confusion. No marketing fluff, no hand-waving — just clear definitions, concrete...]]></description>
            <content:encoded><![CDATA[<p>You're building with AI. You've heard about prompts. You've heard about agents. Now everyone's talking about skills. Claude Code has <code>.claude/skills/</code>. Cursor has similar concepts. Every AI coding tool is adopting some version of the pattern.</p><p>But what actually <em>is</em> a skill? How is it different from a prompt? Where does an agent fit? And which one should you use for your specific problem?</p><p>This article cuts through the confusion. No marketing fluff, no hand-waving — just clear definitions, concrete examples, and a decision framework for choosing the right tool.</p><hr><h2 id="h-the-three-concepts-defined" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Three Concepts, Defined</h2><h3 id="h-prompts-the-raw-instruction" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Prompts: The Raw Instruction</h3><p>A prompt is a natural language instruction sent to an AI model. It can be a question, a command, or a description of what you want.</p><pre data-type="codeBlock" text="Write a function that validates email addresses using regex.
"><code>Write a <span class="hljs-keyword">function</span> that validates email addresses <span class="hljs-keyword">using</span> regex.
</code></pre><p>That's a prompt. It's immediate, one-shot, and context-dependent. The model reads it, generates a response, and the interaction is complete.</p><p><strong>Characteristics of prompts:</strong></p><ul><li><p>Stateless — no memory between invocations</p></li><li><p>Unstructured — free-form text</p></li><li><p>Single-turn or multi-turn conversation</p></li><li><p>No defined workflow or steps</p></li><li><p>No tool integration by default</p></li><li><p>Quality depends heavily on phrasing</p></li></ul><p>Prompts are the foundation. Everything else builds on top of them.</p><h3 id="h-agents-the-autonomous-executor" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Agents: The Autonomous Executor</h3><p>An agent is an AI model with a loop: it can reason, take actions (call tools, read files, run commands), observe results, and decide what to do next. It has autonomy.</p><pre data-type="codeBlock" text="Agent: &quot;I need to fix this bug. Let me read the error log...
        OK, the issue is in auth.service.ts line 42...
        Let me read that file... I see the problem...
        Let me edit the file... Now let me run the tests...
        Tests pass. Done.&quot;
"><code><span class="hljs-symbol">Agent:</span> <span class="hljs-string">"I need to fix this bug. Let me read the error log...
        OK, the issue is in auth.service.ts line 42...
        Let me read that file... I see the problem...
        Let me edit the file... Now let me run the tests...
        Tests pass. Done."</span>
</code></pre><p>An agent doesn't just answer — it <em>acts</em>. It has a tool belt (file system access, API calls, shell commands) and uses reasoning to decide which tools to invoke and in what order.</p><p><strong>Characteristics of agents:</strong></p><ul><li><p>Stateful within a session (remembers what it's done)</p></li><li><p>Autonomous — makes decisions about next actions</p></li><li><p>Has tools (file read/write, shell, APIs, MCP servers)</p></li><li><p>Can handle multi-step tasks without human intervention</p></li><li><p>Quality depends on reasoning ability and available tools</p></li></ul><p>Agents are powerful but unpredictable. Without guidance, they improvise. Sometimes brilliantly. Sometimes disastrously.</p><h3 id="h-skills-the-structured-playbook" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Skills: The Structured Playbook</h3><p>A skill is a <strong>reusable instruction set</strong> that teaches an agent how to perform a specific task. It's not a prompt (it's structured and multi-step). It's not an agent (it doesn't reason on its own). It's the bridge between them.</p><pre data-type="codeBlock" text="---
name: fix-duplicates
description: Find and fix duplicate code using jscpd
user_invocable: true
---

# Fix Duplicates

## Steps

### 1. Run jscpd
bunx jscpd &lt;path&gt; --reporters json --output /tmp/jscpd-report

### 2. Read the Report
Parse /tmp/jscpd-report/jscpd-report.json

### 3. Decide: Refactor or Ignore
**Refactor when ALL apply:**
- 10+ lines of non-trivial logic
- Same module/domain
- Clean extraction possible

**Ignore when ANY apply:**
- Import blocks or boilerplate
- Cross-domain coupling risk
- &lt; 10 lines and simple
"><code><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span>
name: fix<span class="hljs-operator">-</span>duplicates
description: Find and fix duplicate code <span class="hljs-keyword">using</span> <span class="hljs-title">jscpd</span>
<span class="hljs-title">user_invocable</span>: <span class="hljs-title"><span class="hljs-literal">true</span></span>
<span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span>

# <span class="hljs-title">Fix</span> <span class="hljs-title">Duplicates</span>

## <span class="hljs-title">Steps</span>

### 1. <span class="hljs-title">Run</span> <span class="hljs-title">jscpd</span>
<span class="hljs-title">bunx</span> <span class="hljs-title">jscpd</span> <span class="hljs-operator">&lt;</span><span class="hljs-title">path</span><span class="hljs-operator">&gt;</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-title">reporters</span> <span class="hljs-title">json</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-title">output</span> <span class="hljs-operator">/</span><span class="hljs-title">tmp</span><span class="hljs-operator">/</span><span class="hljs-title">jscpd</span><span class="hljs-operator">-</span><span class="hljs-title">report</span>

### 2. <span class="hljs-title">Read</span> <span class="hljs-title">the</span> <span class="hljs-title">Report</span>
<span class="hljs-title">Parse</span> <span class="hljs-operator">/</span><span class="hljs-title">tmp</span><span class="hljs-operator">/</span><span class="hljs-title">jscpd</span><span class="hljs-operator">-</span><span class="hljs-title">report</span><span class="hljs-operator">/</span><span class="hljs-title">jscpd</span><span class="hljs-operator">-</span><span class="hljs-title">report</span>.<span class="hljs-title">json</span>

### 3. <span class="hljs-title">Decide</span>: <span class="hljs-title">Refactor</span> <span class="hljs-title">or</span> <span class="hljs-title">Ignore</span>
<span class="hljs-operator">*</span><span class="hljs-operator">*</span><span class="hljs-title">Refactor</span> <span class="hljs-title">when</span> <span class="hljs-title">ALL</span> <span class="hljs-title">apply</span>:<span class="hljs-operator">*</span><span class="hljs-operator">*</span>
<span class="hljs-operator">-</span> 10<span class="hljs-operator">+</span> <span class="hljs-title">lines</span> <span class="hljs-title">of</span> <span class="hljs-title">non</span><span class="hljs-operator">-</span><span class="hljs-title">trivial</span> <span class="hljs-title">logic</span>
<span class="hljs-operator">-</span> <span class="hljs-title">Same</span> <span class="hljs-title">module</span><span class="hljs-operator">/</span><span class="hljs-title">domain</span>
<span class="hljs-operator">-</span> <span class="hljs-title">Clean</span> <span class="hljs-title">extraction</span> <span class="hljs-title">possible</span>

<span class="hljs-operator">*</span><span class="hljs-operator">*</span><span class="hljs-title">Ignore</span> <span class="hljs-title">when</span> <span class="hljs-title">ANY</span> <span class="hljs-title">apply</span>:<span class="hljs-operator">*</span><span class="hljs-operator">*</span>
<span class="hljs-operator">-</span> <span class="hljs-title">Import</span> <span class="hljs-title">blocks</span> <span class="hljs-title">or</span> <span class="hljs-title">boilerplate</span>
<span class="hljs-operator">-</span> <span class="hljs-title">Cross</span><span class="hljs-operator">-</span><span class="hljs-title">domain</span> <span class="hljs-title">coupling</span> <span class="hljs-title">risk</span>
<span class="hljs-operator">-</span> <span class="hljs-operator">&lt;</span> 10 <span class="hljs-title">lines</span> <span class="hljs-title">and</span> <span class="hljs-title">simple</span>
</code></pre><p>A skill is a recipe that an agent follows. The agent still reasons (it decides <em>how</em> to implement each step), but the skill provides the <em>what</em> and <em>when</em>.</p><p><strong>Characteristics of skills:</strong></p><ul><li><p>Declarative — defines what to do, not how to think</p></li><li><p>Structured — YAML metadata + markdown instructions</p></li><li><p>Reusable — works across projects and agents</p></li><li><p>Versionable — lives in your repo, goes through code review</p></li><li><p>Composable — skills can be chained into workflows</p></li><li><p>Loaded on demand — only enters context when relevant</p></li></ul><hr><h2 id="h-the-relationship-between-all-three" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Relationship Between All Three</h2><p>Think of it as layers:</p><pre data-type="codeBlock" text="┌─────────────────────────────┐
│         Skills              │  ← Structured workflows
│    (what to do, when)       │
├─────────────────────────────┤
│         Agents              │  ← Reasoning + tool use
│    (how to think, act)      │
├─────────────────────────────┤
│         Prompts             │  ← Raw instructions
│    (what to generate)       │
└─────────────────────────────┘
"><code>┌─────────────────────────────┐
│         Skills              │  ← Structured workflows
│    (what <span class="hljs-keyword">to</span> <span class="hljs-keyword">do</span>, <span class="hljs-keyword">when</span>)       │
├─────────────────────────────┤
│         Agents              │  ← Reasoning + tool use
│    (how <span class="hljs-keyword">to</span> think, act)      │
├─────────────────────────────┤
│         Prompts             │  ← Raw instructions
│    (what <span class="hljs-keyword">to</span> generate)       │
└─────────────────────────────┘
</code></pre><ul><li><p><strong>Prompts</strong> tell the model what to produce.</p></li><li><p><strong>Agents</strong> give the model the ability to act on the world.</p></li><li><p><strong>Skills</strong> give the agent structured knowledge about how to perform specific tasks.</p></li></ul><p>An agent without skills is like a talented engineer who just joined your company. They can code, reason, and use tools — but they don't know your conventions, your deployment process, or where to find the config files.</p><p>A skill is the onboarding document that turns a capable generalist into a productive team member.</p><hr><h2 id="h-when-to-use-each" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">When to Use Each</h2><h3 id="h-use-a-prompt-when" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Use a Prompt When...</h3><ul><li><p>The task is a single, well-defined question or generation</p></li><li><p>No tools or external actions are needed</p></li><li><p>The output is text (code, copy, analysis) — not an action</p></li><li><p>You're exploring or prototyping, not automating</p></li></ul><p><strong>Examples:</strong></p><ul><li><p>"Explain this error message"</p></li><li><p>"Write a regex that validates phone numbers"</p></li><li><p>"Summarize this pull request"</p></li><li><p>"Draft a tweet about our new feature"</p></li></ul><h3 id="h-use-an-agent-when" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Use an Agent When...</h3><ul><li><p>The task requires multiple steps with tool use</p></li><li><p>You need file system access, API calls, or shell commands</p></li><li><p>The task involves reading, reasoning, and acting</p></li><li><p>Each run is different enough that a fixed workflow doesn't make sense</p></li></ul><p><strong>Examples:</strong></p><ul><li><p>"Debug this failing test and fix it"</p></li><li><p>"Set up a new module with all the boilerplate"</p></li><li><p>"Research this library and recommend if we should adopt it"</p></li><li><p>"Review this PR for security issues"</p></li></ul><h3 id="h-use-a-skill-when" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Use a Skill When...</h3><ul><li><p>You have a repeatable workflow that should produce consistent results</p></li><li><p>The task follows a defined process (steps, decisions, verification)</p></li><li><p>Multiple agents or team members need to execute the same workflow</p></li><li><p>Quality and consistency matter more than flexibility</p></li><li><p>You want the workflow to be versioned and reviewable</p></li></ul><p><strong>Examples:</strong></p><ul><li><p>"Process the next ticket from the backlog" (Ralph skill)</p></li><li><p>"Scan the codebase for security annotation gaps" (Security Annotate skill)</p></li><li><p>"Find and fix code duplicates" (Fix Duplicates skill)</p></li><li><p>"Create a database migration following our conventions" (Migrations skill)</p></li></ul><hr><h2 id="h-the-critical-difference-consistency" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Critical Difference: Consistency</h2><p>Here's the practical test. Run the same task 10 times:</p><table style="min-width: 125px"><colgroup><col><col><col><col><col></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Approach</p></th><th colspan="1" rowspan="1"><p>Run 1</p></th><th colspan="1" rowspan="1"><p>Run 5</p></th><th colspan="1" rowspan="1"><p>Run 10</p></th><th colspan="1" rowspan="1"><p>Consistency</p></th></tr><tr><td colspan="1" rowspan="1"><p>Prompt only</p></td><td colspan="1" rowspan="1"><p>Good</p></td><td colspan="1" rowspan="1"><p>OK</p></td><td colspan="1" rowspan="1"><p>Different</p></td><td colspan="1" rowspan="1"><p>Low</p></td></tr><tr><td colspan="1" rowspan="1"><p>Agent (no skills)</p></td><td colspan="1" rowspan="1"><p>Good</p></td><td colspan="1" rowspan="1"><p>Varies</p></td><td colspan="1" rowspan="1"><p>Forgot a step</p></td><td colspan="1" rowspan="1"><p>Medium</p></td></tr><tr><td colspan="1" rowspan="1"><p>Agent + Skill</p></td><td colspan="1" rowspan="1"><p>Good</p></td><td colspan="1" rowspan="1"><p>Good</p></td><td colspan="1" rowspan="1"><p>Good</p></td><td colspan="1" rowspan="1"><p>High</p></td></tr></tbody></table><p>Prompts degrade because the model has no memory of previous runs. Agents are better because they can reason about the task, but they'll vary in approach. Skills produce consistent results because the workflow is defined — the agent fills in the details, but the structure stays the same.</p><p>This is why skills matter for production systems. A 90% success rate sounds good until you realize that means 1 in 10 runs produces garbage that a human has to fix.</p><hr><h2 id="h-common-misconceptions" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Common Misconceptions</h2><h3 id="h-skills-are-just-system-prompts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">"Skills are just system prompts"</h3><p>No. System prompts are loaded for every interaction and compete for context window space. Skills are loaded on demand — only when the agent encounters a matching task. A system prompt of 10,000 words degrades model performance. Thirty skills of 300 words each load individually and stay focused.</p><h3 id="h-skills-replace-agent-reasoning" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">"Skills replace agent reasoning"</h3><p>No. Skills provide structure; agents provide intelligence. A skill says "run jscpd and parse the report." The agent figures out how to handle the specific duplicates it finds. The skill is the recipe; the agent is the chef.</p><h3 id="h-agents-are-just-more-sophisticated-prompts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">"Agents are just more sophisticated prompts"</h3><p>Partially true at the model level, but misleading in practice. The key difference is the <strong>tool-use loop</strong>. An agent can observe the result of an action and decide its next action based on that result. A prompt generates one response. This feedback loop is what enables multi-step task completion.</p><h3 id="h-i-need-to-choose-one" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">"I need to choose one"</h3><p>No. You use all three together. The prompt is the user's request. The agent is the execution engine. The skill is the domain knowledge. They're layers, not alternatives.</p><hr><h2 id="h-building-your-first-skill" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Building Your First Skill</h2><p>If you've been using prompts or bare agents, here's how to upgrade to skills.</p><p><strong>Step 1: Identify the pattern.</strong></p><p>Look at your last 20 agent interactions. Which tasks did you repeat? Which ones required you to re-explain the same process? Those are your skill candidates.</p><p><strong>Step 2: Write the workflow.</strong></p><p>Document the exact steps, decisions, and tools involved. Be specific:</p><pre data-type="codeBlock" text="## Steps

### 1. Run the linter
bunx eslint src/ --format json --output-file /tmp/lint-report.json

### 2. Parse results
Read /tmp/lint-report.json. Count errors by rule.

### 3. Fix the top 3 most common errors
For each error type, apply the fix across all occurrences.

### 4. Verify
Re-run the linter. Confirm error count decreased.
"><code>## Steps

### <span class="hljs-number">1.</span> Run the linter
bunx eslint src<span class="hljs-operator">/</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span>format json <span class="hljs-operator">-</span><span class="hljs-operator">-</span>output<span class="hljs-operator">-</span>file <span class="hljs-operator">/</span>tmp<span class="hljs-operator">/</span>lint<span class="hljs-operator">-</span>report.json

### <span class="hljs-number">2.</span> Parse results
Read <span class="hljs-operator">/</span>tmp<span class="hljs-operator">/</span>lint<span class="hljs-operator">-</span>report.json. Count errors by rule.

### <span class="hljs-number">3.</span> Fix the top <span class="hljs-number">3</span> most common errors
For each <span class="hljs-function"><span class="hljs-keyword">error</span> <span class="hljs-title"><span class="hljs-keyword">type</span></span>, <span class="hljs-title">apply</span> <span class="hljs-title">the</span> <span class="hljs-title">fix</span> <span class="hljs-title">across</span> <span class="hljs-title">all</span> <span class="hljs-title">occurrences</span>.

### 4. <span class="hljs-title">Verify</span>
<span class="hljs-title">Re</span>-<span class="hljs-title">run</span> <span class="hljs-title">the</span> <span class="hljs-title">linter</span>. <span class="hljs-title">Confirm</span> <span class="hljs-title"><span class="hljs-keyword">error</span></span> <span class="hljs-title">count</span> <span class="hljs-title">decreased</span>.
</span></code></pre><p><strong>Step 3: Add decision criteria.</strong></p><p>If any step requires judgment, encode it:</p><pre data-type="codeBlock" text="**Auto-fix when:**
- The rule has a well-known fix (unused-vars, missing-semicolons)
- The fix doesn't change behavior

**Skip when:**
- The rule is style-only and the team hasn't agreed on a standard
- The fix might change runtime behavior
"><code><span class="hljs-operator">*</span><span class="hljs-operator">*</span>Auto<span class="hljs-operator">-</span>fix when:<span class="hljs-operator">*</span><span class="hljs-operator">*</span>
<span class="hljs-operator">-</span> The rule has a well<span class="hljs-operator">-</span>known fix (unused<span class="hljs-operator">-</span>vars, missing<span class="hljs-operator">-</span>semicolons)
<span class="hljs-operator">-</span> The fix doesn<span class="hljs-string">'t change behavior

**Skip when:**
- The rule is style-only and the team hasn'</span>t agreed on a standard
<span class="hljs-operator">-</span> The fix might change runtime behavior
</code></pre><p><strong>Step 4: Add guardrails.</strong></p><p>What should the agent NOT do?</p><pre data-type="codeBlock" text="## Rules
- Do NOT modify test files.
- Do NOT change code formatting beyond what the linter requires.
- Do NOT install new packages.
"><code>## Rules
<span class="hljs-operator">-</span> Do NOT modify test files.
- Do NOT change code formatting beyond what the linter requires.
- Do NOT install <span class="hljs-keyword">new</span> packages.
</code></pre><p><strong>Step 5: Save it.</strong></p><pre data-type="codeBlock" text=".claude/skills/lint-fixer/SKILL.md
"><code>.claude/skills<span class="hljs-operator">/</span>lint<span class="hljs-operator">-</span>fixer<span class="hljs-operator">/</span>SKILL.md
</code></pre><p>Commit it. Your agent now has a new capability.</p><hr><h2 id="h-the-ecosystem-is-converging" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Ecosystem Is Converging</h2><p>Claude Code has <code>.claude/skills/</code>. Other AI coding tools have similar concepts emerging under different names. The pattern is the same: structured, reusable instruction sets that agents can load on demand.</p><p>This convergence is happening because every team that scales AI agent usage hits the same problem: <strong>inconsistency at scale.</strong> One agent run is great. A hundred runs per day with varying quality is unsustainable.</p><p>Skills are the answer because they capture what works and make it repeatable. They're the missing layer between "AI can do anything" and "AI does this specific thing reliably."</p><hr><h2 id="h-the-decision-framework" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Decision Framework</h2><p>Use this when deciding how to approach a new AI-assisted task:</p><pre data-type="codeBlock" text="Is this a one-off question or generation?
  → Yes → Use a prompt.
  → No ↓

Does it require tools (file access, APIs, commands)?
  → No → Use a prompt (maybe a detailed one).
  → Yes ↓

Will you do this task more than 3 times?
  → No → Use an agent with ad-hoc instructions.
  → Yes ↓

Does consistency matter?
  → No → Use an agent.
  → Yes → Write a skill.
"><code>Is <span class="hljs-built_in">this</span> a one<span class="hljs-operator">-</span>off question or generation?
  → Yes → Use a prompt.
  → No ↓

Does it <span class="hljs-built_in">require</span> tools (file access, APIs, commands)?
  → No → Use a prompt (maybe a detailed one).
  → Yes ↓

Will you do <span class="hljs-built_in">this</span> task more than <span class="hljs-number">3</span> times?
  → No → Use an agent with ad<span class="hljs-operator">-</span>hoc instructions.
  → Yes ↓

Does consistency matter?
  → No → Use an agent.
  → Yes → Write a skill.
</code></pre><p>Most tasks start as prompts. The ones that recur become agent workflows. The workflows that need consistency become skills. It's a natural progression, not a choice you make upfront.</p><hr><h2 id="h-what-comes-next" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Comes Next</h2><p>Skills are still early. The format is simple (YAML + markdown), the tooling is basic, and there's no marketplace or standard library yet. But the pattern is proven: structured, reusable instruction sets make AI agents dramatically more reliable.</p><p>The teams that invest in skills now will have a compounding advantage. Every skill you write makes your agents better. Every improvement to a skill benefits every agent that uses it. It's infrastructure that pays dividends.</p><p>Start with one skill. Then five. Then twenty. By the time the ecosystem standardizes, you'll already have a library that works.</p><hr><p><em>Follow Arjia for more on AI agent architecture: </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ArjiaCity"><em>Twitter</em></a><em> | </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/yCuWretfaR"><em>Discord</em></a><em> | </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://t.me/arjia_talk"><em>Telegram</em></a></p><hr><p><em>This article is part of Arjia's AI Agent Skills series. Previous: "The Definitive Guide to AI Agent Skills" | "How We Run a 30-Agent Company on Skills"</em></p><br>]]></content:encoded>
            <author>arjia@newsletter.paragraph.com (Arjia)</author>
            <category>ai</category>
            <category>agents</category>
            <category>defi</category>
            <category>skills</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/2ff6840b2a69494429c9fe78881e763d6ccd55ada1d75c6d11a3f0b2ed8c09e4.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>