<?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: Nirmal</title>
    <description>The latest articles on DEV Community by Nirmal (@nandy121).</description>
    <link>https://dev.to/nandy121</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%2F4183507%2Ff4e4f4fe-5ea4-42d9-b29f-9659823bc1e1.png</url>
      <title>DEV Community: Nirmal</title>
      <link>https://dev.to/nandy121</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nandy121"/>
    <language>en</language>
    <item>
      <title>How I structure skills vs. commands for agent workflows</title>
      <dc:creator>Nirmal</dc:creator>
      <pubDate>Wed, 14 Oct 2026 04:05:36 +0000</pubDate>
      <link>https://dev.to/nandy121/how-i-structure-skills-vs-commands-for-agent-workflows-m73</link>
      <guid>https://dev.to/nandy121/how-i-structure-skills-vs-commands-for-agent-workflows-m73</guid>
      <description>&lt;p&gt;Skills hold knowledge and commands hold intent. Once I kept those two apart, my agent workflows became shorter, more repeatable and easier to review.&lt;/p&gt;

&lt;p&gt;Disclosure: I'm the founder of &lt;a href="https://agentkrew.com" rel="noopener noreferrer"&gt;AgentKrew&lt;/a&gt;, a kit for coding agents that I use as the example throughout. The ideas work without it, and I'll say where they stop working.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trouble with one big prompt
&lt;/h2&gt;

&lt;p&gt;A common starting point is one long prompt pasted at the start of every session: the conventions, the reminders, the list of things not to touch. It works for a while. Then it grows until nobody reads it, and the results shift with how it was phrased that day.&lt;/p&gt;

&lt;p&gt;The fix is to stop treating instructions as one thing. Some of it is knowledge, such as how migrations are done here. Some of it is intent, such as "plan this feature." Mixing both in one prompt is what makes it fragile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills: knowledge the agent pulls in
&lt;/h2&gt;

&lt;p&gt;A skill is a reusable set of instructions for one job, such as how migrations are done, how auth is handled or how tests are written. The agent loads it when the task calls for it. The point is that you write the convention once instead of re-explaining it every session.&lt;/p&gt;

&lt;p&gt;Rules I follow when writing one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;One job per skill&lt;/strong&gt;. If you can't name the job in a few words, split it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reference, not orders&lt;/strong&gt;. A skill says what the agent should know. What to do right now belongs elsewhere.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Project facts live here&lt;/strong&gt;. Billing rules, naming conventions and the files never to touch all belong in a skill.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Short enough to review&lt;/strong&gt;. When something goes wrong, you should be able to read the skill in a minute and find the cause.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Commands: one-word entry points&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A command is the short thing you type to start a repeatable step: plan, review, test. It carries intent and points at the knowledge needed to carry it out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name the action, not the topic&lt;/strong&gt;. "plan", "review" and "test" are commands. "migration notes" is a skill.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep commands thin&lt;/strong&gt;. If a command is full of knowledge, move that knowledge into a skill and let the command call it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;One step each&lt;/strong&gt;. If you can't describe what it does in a sentence, it is two commands.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A useful test: skills answer "what should the agent know?" and commands answer "what should it do now?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents and workflows tie it together
&lt;/h2&gt;

&lt;p&gt;Skills and commands still need someone to run them, and an order to run them in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agents&lt;/strong&gt; are named specialists defined by role: tech lead, builder, reviewer, security auditor. Each has a routing description so the right one picks up the right work. A reviewer's job doesn't change when the tool running it does.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Workflows&lt;/strong&gt; are fixed sequences, not improvisation. The tech lead plans, specialists build in parallel, and then a reviewer, a security auditor and a shipper act as gates before anything goes out.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the sequence is fixed, two runs of the same workflow follow the same steps. That predictability is the point: you review a plan and a gated result, not a stream of improvised decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  One source of truth for every tool
&lt;/h2&gt;

&lt;p&gt;If you use more than one coding agent, instruction files drift. Two files that start identical slowly come to disagree. The cheapest fix is to keep AGENTS.md as the source and have CLAUDE.md point to it, so there is one place to edit.&lt;/p&gt;

&lt;p&gt;AgentKrew takes the same idea further. The same kit renders to Claude Code, Codex and OpenCode, so the roles and workflows you define don't depend on which tool runs them.&lt;/p&gt;

&lt;h2&gt;
  
  
  End every workflow with a release gate
&lt;/h2&gt;

&lt;p&gt;The last step of a workflow shouldn't be "looks good." It should be a check that runs the type check, the tests, lint and the build, and returns one of two answers: ready or blocked.&lt;/p&gt;

&lt;p&gt;The gate works no matter which tool wrote the code, because it only looks at the result. It also gives the human a clear moment to step in. A blocked result tells you what failed before anything ships, instead of a green-looking diff that hides a problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick way to decide which piece you need
&lt;/h2&gt;

&lt;p&gt;Each piece answers a different question. If you can't say which question an instruction answers, split it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Piece&lt;/th&gt;
&lt;th&gt;Question it answers&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Skill&lt;/td&gt;
&lt;td&gt;What should the agent know?&lt;/td&gt;
&lt;td&gt;How migrations are done here&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command&lt;/td&gt;
&lt;td&gt;What should it do now?&lt;/td&gt;
&lt;td&gt;Plan, review, test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent&lt;/td&gt;
&lt;td&gt;Who does it?&lt;/td&gt;
&lt;td&gt;Reviewer, security auditor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workflow&lt;/td&gt;
&lt;td&gt;In what order?&lt;/td&gt;
&lt;td&gt;Plan, parallel build, gate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Limits, and where AgentKrew fits
&lt;/h2&gt;

&lt;p&gt;Agents don't learn between sessions. A human teammate remembers the billing module after six months, while an agent starts fresh every time. Putting context in skills and files is a workaround, and you still maintain those files. Treat them like code and review changes to them.&lt;/p&gt;

&lt;p&gt;A separate reviewer helps, but it doesn't replace tests you can trust. Whatever tool you use, check who writes the tests: if one pass writes the code and its own assertions, a green run proves very little.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://agentkrew.com" rel="noopener noreferrer"&gt;AgentKrew&lt;/a&gt; is my attempt to package this structure: agents, skills, commands and workflows as one versioned, validated kit that renders to Claude Code, Codex and OpenCode, with updates that don't touch your own files. If you want to look at it, it's at agentkrew.com. I'd like to hear what's missing.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>architecture</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
