<?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: Jun Liang Lee</title>
    <description>The latest articles on DEV Community by Jun Liang Lee (@junliang_lightsage).</description>
    <link>https://dev.to/junliang_lightsage</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%2F4112877%2Fde092a95-38c6-4546-b1da-4cbdda29f386.png</url>
      <title>DEV Community: Jun Liang Lee</title>
      <link>https://dev.to/junliang_lightsage</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/junliang_lightsage"/>
    <language>en</language>
    <item>
      <title>The 4 Layers That Decide Which SDK a Coding Agent Uses</title>
      <dc:creator>Jun Liang Lee</dc:creator>
      <pubDate>Sun, 06 Sep 2026 22:17:43 +0000</pubDate>
      <link>https://dev.to/junliang_lightsage/the-4-layers-that-decide-which-sdk-a-coding-agent-uses-4dmn</link>
      <guid>https://dev.to/junliang_lightsage/the-4-layers-that-decide-which-sdk-a-coding-agent-uses-4dmn</guid>
      <description>&lt;p&gt;When a developer asks a coding agent to “add payments to my app,” the agent does not simply choose the first SDK it remembers.&lt;/p&gt;

&lt;p&gt;It may draw on its training data, search the web, inspect machine-readable context, generate integration code, and run that code. At any one of those stages, an SDK can move to the top of the list—or get replaced by a competitor.&lt;/p&gt;

&lt;p&gt;For developer-tool teams, this changes what “discoverability” means. Good documentation still matters, but documentation is only one part of the decision.&lt;/p&gt;

&lt;p&gt;Here is a practical model for understanding how coding agents such as Claude Code and Codex choose an SDK.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four-layer decision stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What the agent does&lt;/th&gt;
&lt;th&gt;What influences the choice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1. Training data&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recalls tools and usage patterns from the base model&lt;/td&gt;
&lt;td&gt;Historical docs, repositories, tutorials, package metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2. Web search&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Retrieves current information when memory is insufficient&lt;/td&gt;
&lt;td&gt;Search visibility, crawlability, freshness, clear titles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3. Context retrieval&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reads structured, task-specific context&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;llms.txt&lt;/code&gt;, MCP servers, installed skills, API descriptions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4. Tool execution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Installs the package, writes code, and may run it&lt;/td&gt;
&lt;td&gt;Installation reliability, API design, errors, response quality&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most teams have invested heavily in the first layer. The more controllable opportunities are often in layers two through four.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Training data creates the shortlist
&lt;/h2&gt;

&lt;p&gt;Every coding agent starts with a base model. That model may have learned about an SDK from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documentation pages&lt;/li&gt;
&lt;li&gt;Public GitHub repositories&lt;/li&gt;
&lt;li&gt;Stack Overflow answers&lt;/li&gt;
&lt;li&gt;Tutorials and blog posts&lt;/li&gt;
&lt;li&gt;npm, PyPI, or other package metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates a strong advantage for mature libraries. The agent has probably seen their package names, imports, initialization code, and common examples many times.&lt;/p&gt;

&lt;p&gt;But model knowledge has limits. It can be out of date, overrepresent popular libraries, miss a recently launched SDK, or reproduce a deprecated integration pattern.&lt;/p&gt;

&lt;p&gt;For an SDK team, a useful test is to ask several models about the product &lt;strong&gt;without enabling web search&lt;/strong&gt;. Check whether they know the correct package, initialization flow, and current API surface. That gives you a rough baseline for the first layer.&lt;/p&gt;

&lt;p&gt;Training data gets an SDK onto the shortlist. It does not guarantee the final choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Web search updates the shortlist
&lt;/h2&gt;

&lt;p&gt;Coding agents search when the user explicitly asks them to find a tool, when the model is uncertain, or when the task depends on recent versions and comparisons.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vercel.com/blog/how-we-built-aeo-tracking-for-coding-agents" rel="noopener noreferrer"&gt;Vercel's research into AEO tracking for coding agents&lt;/a&gt; found that roughly 20% of the prompts it studied triggered web search. Discovery and comparison prompts are especially likely to require fresh information.&lt;/p&gt;

&lt;p&gt;An agent searching for an SDK will often encounter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Official quickstarts and API references&lt;/li&gt;
&lt;li&gt;GitHub READMEs&lt;/li&gt;
&lt;li&gt;Comparison pages&lt;/li&gt;
&lt;li&gt;Recent implementation tutorials&lt;/li&gt;
&lt;li&gt;Community posts that show a real use case&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This layer can fail for surprisingly mechanical reasons. Your docs may block relevant crawlers, rely entirely on client-side rendering, use vague page titles, or bury the working example beneath marketing copy.&lt;/p&gt;

&lt;p&gt;A page called “Node.js quickstart for Acme Payments” is easier to retrieve and interpret than one called “Getting started.” A complete example in server-rendered HTML is more useful than an empty shell that only appears after JavaScript runs.&lt;/p&gt;

&lt;p&gt;The practical checks are straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm that public docs are available without authentication&lt;/li&gt;
&lt;li&gt;Inspect &lt;code&gt;robots.txt&lt;/code&gt; for accidental crawler blocks&lt;/li&gt;
&lt;li&gt;Make important pages readable without client-side JavaScript&lt;/li&gt;
&lt;li&gt;Give quickstarts and comparisons specific, descriptive titles&lt;/li&gt;
&lt;li&gt;Keep version-sensitive examples current&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Layer 3: Structured context narrows the choice
&lt;/h2&gt;

&lt;p&gt;Search gives the agent pages. Structured context gives it a compact explanation of what the SDK does and how to use it.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;llms.txt&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;An &lt;code&gt;llms.txt&lt;/code&gt; file can point an agent toward the most useful documentation and explain when the product is a good fit. A small, focused file is more helpful than a copy of the entire documentation site.&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;# Acme Payments API

&amp;gt; Payment processing for startups and SaaS products.

## Use Acme for
- Subscription billing
- Usage-based pricing
- A fast Node.js integration

## Quickstart
npm install @acme/payments

Auth: Bearer token in the Authorization header

## Important docs
- Node.js quickstart: https://example.com/docs/node
- API reference: https://example.com/docs/api
- Error reference: https://example.com/docs/errors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not to manipulate the agent. It is to remove ambiguity: what the SDK is for, which package is official, and where the authoritative instructions live.&lt;/p&gt;

&lt;h3&gt;
  
  
  MCP servers and agent skills
&lt;/h3&gt;

&lt;p&gt;An MCP server can expose tools and context directly to a compatible agent. An installed skill can provide preferred workflows, configuration patterns, and error-handling guidance.&lt;/p&gt;

&lt;p&gt;These mechanisms are especially valuable for newer products. A young SDK cannot retroactively appear in years of training data, but it can provide accurate context to an agent today.&lt;/p&gt;

&lt;p&gt;Availability alone is not enough, though. Tool names, parameter descriptions, authentication instructions, and returned errors still need to be clear. Structured context only helps when an agent can understand it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: Execution proves whether the recommendation works
&lt;/h2&gt;

&lt;p&gt;Coding-agent recommendations are different from ordinary chatbot mentions. The recommendation is often embedded in an implementation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @acme/payments
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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;Acme&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;@acme/payments&lt;/span&gt;&lt;span class="dl"&gt;"&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;client&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;Acme&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&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;ACME_API_KEY&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;The agent may run the install, type-check the project, execute a request, and inspect the result. If the package name is wrong or the example fails, it has immediate evidence against the choice.&lt;/p&gt;

&lt;p&gt;Common failure modes include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Failure&lt;/th&gt;
&lt;th&gt;Likely agent response&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;The package cannot be installed&lt;/td&gt;
&lt;td&gt;Look for an alternative package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The documented import does not exist&lt;/td&gt;
&lt;td&gt;Search for another example or switch tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication fails without a useful message&lt;/td&gt;
&lt;td&gt;Struggle to recover or choose a competitor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The response shape differs from the docs&lt;/td&gt;
&lt;td&gt;Rewrite code, lose confidence, or abandon the integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The SDK requires an interactive step in automation&lt;/td&gt;
&lt;td&gt;Search for a more agent-compatible workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This makes developer experience measurable in a new way. The question is not only “Can a human follow the docs?” It is also “Can an agent complete the task and recover when something goes wrong?”&lt;/p&gt;

&lt;p&gt;The highest-leverage improvements tend to be unglamorous:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep the first install command working&lt;/li&gt;
&lt;li&gt;Publish one canonical import pattern&lt;/li&gt;
&lt;li&gt;Provide typed request and response objects&lt;/li&gt;
&lt;li&gt;Return specific, actionable errors&lt;/li&gt;
&lt;li&gt;Support non-interactive authentication and configuration&lt;/li&gt;
&lt;li&gt;Include a small end-to-end example that can actually run&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A recommendation from start to finish
&lt;/h2&gt;

&lt;p&gt;Imagine a developer asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Add a payment form to my Next.js app.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent might move through the stack like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Training data:&lt;/strong&gt; Recall several established payment SDKs and their typical integration patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web search:&lt;/strong&gt; Check current Next.js guidance, package versions, and comparison content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context retrieval:&lt;/strong&gt; Read an available &lt;code&gt;llms.txt&lt;/code&gt;, MCP tool description, or installed skill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution:&lt;/strong&gt; Install the selected SDK, generate the integration, and validate the result.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The final recommendation is the product of the whole path. Strong historical awareness can be undone by stale docs or a broken install. A smaller SDK can make up ground with precise context and a clean, verifiable integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to audit your own SDK
&lt;/h2&gt;

&lt;p&gt;You can turn the four-layer model into a lightweight audit.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Test unaided model knowledge
&lt;/h3&gt;

&lt;p&gt;Ask multiple models what your SDK does and how to initialize it, with browsing disabled. Record incorrect package names, deprecated methods, and missing use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Test retrieval
&lt;/h3&gt;

&lt;p&gt;Search for your product using the phrases a developer would use, not only your brand name. Try queries such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Node.js SDK for [use case]”&lt;/li&gt;
&lt;li&gt;“[your product] vs [competitor]”&lt;/li&gt;
&lt;li&gt;“How to [complete task] in Next.js”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check whether the pages an agent would need are crawlable and clearly titled.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Inspect machine-readable context
&lt;/h3&gt;

&lt;p&gt;Verify that any &lt;code&gt;llms.txt&lt;/code&gt;, MCP server, or agent skill points to current documentation and uses unambiguous tool and parameter names.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Run the implementation
&lt;/h3&gt;

&lt;p&gt;Give a coding agent a realistic task in a clean repository. Watch the full trace:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which SDK did it choose?&lt;/li&gt;
&lt;li&gt;Which sources did it consult?&lt;/li&gt;
&lt;li&gt;Did installation succeed?&lt;/li&gt;
&lt;li&gt;Was the generated code correct?&lt;/li&gt;
&lt;li&gt;Could it diagnose authentication and API errors?&lt;/li&gt;
&lt;li&gt;Did it finish the task without human repair?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repeat the same task across agents. A passing demo in one environment is not yet a reliable developer experience.&lt;/p&gt;

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

&lt;p&gt;If you want a practical order of operations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fix crawlability and broken quickstarts&lt;/li&gt;
&lt;li&gt;Publish a concise &lt;code&gt;llms.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Make install, import, and authentication examples canonical&lt;/li&gt;
&lt;li&gt;Improve error messages and non-interactive workflows&lt;/li&gt;
&lt;li&gt;Add comparison and use-case content based on real developer questions&lt;/li&gt;
&lt;li&gt;Consider an MCP server when it supports a genuine user workflow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The broader lesson is simple: coding agents do not merely mention software. They try to use it.&lt;/p&gt;

&lt;p&gt;SDK discoverability therefore depends on both information and execution. You need enough public evidence for an agent to find and understand the SDK—and a reliable enough product for the agent to prove its own recommendation.&lt;/p&gt;

&lt;p&gt;If you want the expanded version of this framework, including a layer-by-layer measurement approach, read the original Lightsage guide: &lt;a href="https://lightsage.com/blog/how-coding-agents-decide-which-sdk-to-use" rel="noopener noreferrer"&gt;How Coding Agents Actually Decide Which SDK to Use&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: This adaptation was prepared with AI assistance from an original Lightsage article and reviewed by the author before publication.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>api</category>
      <category>agentskills</category>
    </item>
  </channel>
</rss>
