<?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: Hammad Parveez</title>
    <description>The latest articles on DEV Community by Hammad Parveez (@hammadparveez).</description>
    <link>https://dev.to/hammadparveez</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1390425%2F7cba967f-457e-41e2-aeff-53503e6fd1c8.jpeg</url>
      <title>DEV Community: Hammad Parveez</title>
      <link>https://dev.to/hammadparveez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hammadparveez"/>
    <language>en</language>
    <item>
      <title>Skill or Subagent? The 30-Second Rule Most Claude Code Devs Still Get Wrong</title>
      <dc:creator>Hammad Parveez</dc:creator>
      <pubDate>Fri, 24 Apr 2026 01:53:00 +0000</pubDate>
      <link>https://dev.to/hammadparveez/skill-or-subagent-the-30-second-rule-most-claude-code-devs-still-get-wrong-24ij</link>
      <guid>https://dev.to/hammadparveez/skill-or-subagent-the-30-second-rule-most-claude-code-devs-still-get-wrong-24ij</guid>
      <description>&lt;p&gt;Two Claude Code primitives. Two very different jobs. Here's the rule I use to pick between them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Most devs still confuse these
&lt;/h2&gt;

&lt;p&gt;Almost every Claude Code setup I review has the same bug: subagents doing the work of skills, and skills being skipped where they'd actually help.&lt;/p&gt;

&lt;p&gt;The two primitives look similar from the outside. They do very different jobs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule
&lt;/h2&gt;

&lt;p&gt;Skill = knowledge you reuse.&lt;/p&gt;

&lt;p&gt;Subagent = capability you delegate.&lt;/p&gt;

&lt;p&gt;Everything else is examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skill: durable knowledge the model reads every time
&lt;/h2&gt;

&lt;p&gt;A skill is a folder in &lt;code&gt;~/.claude/skills/&amp;lt;name&amp;gt;/&lt;/code&gt; with a &lt;code&gt;SKILL.md&lt;/code&gt; and any supporting files. When you invoke it, Claude reads the whole folder into your current context.&lt;/p&gt;

&lt;p&gt;My post-generator skill holds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;12 reference posts I admire, annotated with voice notes&lt;/li&gt;
&lt;li&gt;16 researched excerpts from engineers I respect&lt;/li&gt;
&lt;li&gt;12 human-writing patterns&lt;/li&gt;
&lt;li&gt;5 AI tells to avoid&lt;/li&gt;
&lt;li&gt;Per-platform output templates (LinkedIn, X, Medium, Dev.to, Hashnode)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that is &lt;em&gt;a task&lt;/em&gt;. It's what I want applied every time I draft a post. Skill territory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Subagent: a focused job with isolated context
&lt;/h2&gt;

&lt;p&gt;A subagent is a specialist you dispatch. It runs in its own context window, does the work, and returns a summary.&lt;/p&gt;

&lt;p&gt;This afternoon I ran a researcher subagent that did 10 web searches to find AI tip-guide angles trending this week. It came back with 900 words I could act on.&lt;/p&gt;

&lt;p&gt;If I'd done that in my main session, I'd have flushed maybe 30K tokens of tool output into my context — search results, page fetches, HTML — none of which I actually needed once the summary was written.&lt;/p&gt;

&lt;p&gt;Subagent territory.&lt;/p&gt;

&lt;h2&gt;
  
  
  The quick test
&lt;/h2&gt;

&lt;p&gt;Ask yourself: is this &lt;em&gt;what to know&lt;/em&gt; or &lt;em&gt;a job to do&lt;/em&gt;?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding style rules → skill&lt;/li&gt;
&lt;li&gt;A lint-fix runner for a specific repo → subagent&lt;/li&gt;
&lt;li&gt;Your team's API design principles → skill&lt;/li&gt;
&lt;li&gt;Scanning a repo for security issues → subagent&lt;/li&gt;
&lt;li&gt;Your post-writing voice → skill&lt;/li&gt;
&lt;li&gt;Researching a topic and returning findings → subagent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rule of thumb: if it's going to be referenced across many tasks, it's a skill. If it's going to be invoked once to produce a specific output and then exit, it's a subagent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why people get it wrong
&lt;/h2&gt;

&lt;p&gt;The most common mistake I see: turning a rulebook into a subagent.&lt;/p&gt;

&lt;p&gt;Someone writes a "code review agent" that's 500 lines of "always check X, reject Y, prefer Z." That's a skill wearing a subagent costume. You could have just written those rules as a skill and invoked it in your main session — same behavior, fewer tokens, simpler mental model.&lt;/p&gt;

&lt;p&gt;The flip side is worse: stuffing genuine capability work into your main context. Tool output drowns your working context. You wanted to delegate; you actually just inlined.&lt;/p&gt;

&lt;h2&gt;
  
  
  Close
&lt;/h2&gt;

&lt;p&gt;Stop building subagents for things that are really knowledge.&lt;br&gt;
Stop cramming subagent work into your main context.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>claude</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
