<?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: Sedat Başar</title>
    <description>The latest articles on DEV Community by Sedat Başar (@sedatbasar).</description>
    <link>https://dev.to/sedatbasar</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%2F4099017%2Fde121c72-2d86-4255-8223-862ca92e7000.png</url>
      <title>DEV Community: Sedat Başar</title>
      <link>https://dev.to/sedatbasar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sedatbasar"/>
    <language>en</language>
    <item>
      <title>Beyond AGENTS.md: My Core Agent Skill Stack for Production Web Apps</title>
      <dc:creator>Sedat Başar</dc:creator>
      <pubDate>Fri, 28 Aug 2026 13:18:12 +0000</pubDate>
      <link>https://dev.to/sedatbasar/beyond-agentsmd-my-core-agent-skill-stack-for-production-web-apps-491p</link>
      <guid>https://dev.to/sedatbasar/beyond-agentsmd-my-core-agent-skill-stack-for-production-web-apps-491p</guid>
      <description>&lt;p&gt;A coding agent can write a type-safe Server Action, pass the build, and still miss a critical authorization check.&lt;/p&gt;

&lt;p&gt;It can add a dependency for something the browser already handles natively, recreate a component that already exists in the project, or mark a task as complete without ever testing the flow in a real browser.&lt;/p&gt;

&lt;p&gt;The problem is not that agents cannot write code.&lt;/p&gt;

&lt;p&gt;The problem is that, when making decisions, they do not always have the right &lt;strong&gt;project context&lt;/strong&gt;, &lt;strong&gt;up-to-date technical knowledge&lt;/strong&gt;, or &lt;strong&gt;access to real verification tools&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The solution is neither to put the entire project into one enormous prompt nor to install every skill we come across.&lt;/p&gt;

&lt;p&gt;I prefer to separate five responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AGENTS.md&lt;/strong&gt; → persistent project rules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature and domain documentation&lt;/strong&gt; → project knowledge relevant to specific tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; → technical expertise on demand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP and development tools&lt;/strong&gt; → evidence from the running application&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI&lt;/strong&gt; → deterministic checks that cannot be skipped&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This article focuses on browser-facing production web applications. Backend-only services naturally require a different baseline.&lt;/p&gt;

&lt;p&gt;The goal is not to install as many skills as possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is to build a small, composable core where every tool has a clear purpose.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  My Core Skill Set
&lt;/h2&gt;

&lt;p&gt;For a production web application, my baseline consists of seven pieces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt; + &lt;code&gt;agents-md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;modern-web-guidance&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;web-design-guidelines&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;code-security&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;semgrep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chrome-devtools&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;a11y-debugging&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For &lt;strong&gt;React and Next.js&lt;/strong&gt;, I also add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;version-matched Next.js documentation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vercel-react-best-practices&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the project uses &lt;strong&gt;shadcn/ui&lt;/strong&gt;, I add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;shadcn&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This stack does not replace testing strategy, CI rules, or code review. Those still need to be defined specifically for each repository.&lt;/p&gt;

&lt;p&gt;I use &lt;code&gt;pnpm&lt;/code&gt; in the commands below. If you use npm, replace &lt;code&gt;pnpm dlx&lt;/code&gt; with &lt;code&gt;npx&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. agents-md: AGENTS.md Should Not Be an Encyclopedia
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx skills add getsentry/skills &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; agents-md &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--agent&lt;/span&gt; codex &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--copy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are two separate concepts here.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; is persistent repository context available to the agent.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;agents-md&lt;/code&gt; is a maintenance skill used to create or improve that file.&lt;/p&gt;

&lt;p&gt;Installing the skill does not automatically rewrite an existing &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Sentry's &lt;a href="https://github.com/getsentry/skills/blob/main/skills/agents-md/SKILL.md" rel="noopener noreferrer"&gt;agents-md skill&lt;/a&gt; recommends keeping the file below 60 lines where possible and around 100 lines at most.&lt;/p&gt;

&lt;p&gt;That is a useful target, but not an absolute rule.&lt;/p&gt;

&lt;p&gt;Removing important project decisions simply to get below 100 lines is not context optimization. &lt;strong&gt;It is information loss.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So what should stay in &lt;code&gt;AGENTS.md&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;Things that affect many different tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;package manager and verified commands&lt;/li&gt;
&lt;li&gt;architectural boundaries&lt;/li&gt;
&lt;li&gt;dependency policy&lt;/li&gt;
&lt;li&gt;coding preferences&lt;/li&gt;
&lt;li&gt;fundamental security rules&lt;/li&gt;
&lt;li&gt;UI conventions&lt;/li&gt;
&lt;li&gt;pointers to authoritative project documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feature-specific and domain-specific knowledge should live elsewhere.&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;docs/
├── authentication.md
├── payments.md
├── provider-integrations.md
├── deployment.md
└── ui-conventions.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of duplicating those documents, &lt;code&gt;AGENTS.md&lt;/code&gt; can simply route the agent to them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Authoritative references&lt;/span&gt;

Authentication and sessions → docs/authentication.md
Payments and subscriptions → docs/payments.md
External provider integrations → docs/provider-integrations.md
Production migrations → docs/deployment.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An authentication task can load the relevant security decisions without forcing a simple UI change to pull the entire payment architecture into context.&lt;/p&gt;

&lt;p&gt;In this structure, &lt;code&gt;AGENTS.md&lt;/code&gt; becomes a &lt;strong&gt;context router rather than a knowledge dump&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  AGENTS.md vs. Skills
&lt;/h3&gt;

&lt;p&gt;Vercel's &lt;a href="https://vercel.com/blog/agents-md-outperforms-skills-in-our-agent-evals" rel="noopener noreferrer"&gt;AGENTS.md outperforms skills in our agent evals&lt;/a&gt; showed an important limitation of passive skill discovery: a useful skill can exist and still never be invoked.&lt;/p&gt;

&lt;p&gt;That leads to a distinction I find useful:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Knowledge required for almost every task → AGENTS.md&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expertise needed for a particular task → Skill&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project decisions specific to a feature → Focused documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence from the running system → Tool or MCP&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This does not mean every installed skill should be listed in &lt;code&gt;AGENTS.md&lt;/code&gt;. Skills already describe when they are relevant.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; should instead focus on outcomes the repository requires:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Materially changed browser flows must be verified in the running application.
&lt;span class="p"&gt;-&lt;/span&gt; Security-sensitive changes must be treated accordingly.
&lt;span class="p"&gt;-&lt;/span&gt; Reuse the existing design system before introducing new UI primitives.
&lt;span class="p"&gt;-&lt;/span&gt; Consult version-matched framework documentation before relying on model memory.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If an agent repeatedly misses a critical workflow, then it makes sense to add a more explicit instruction.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. modern-web-guidance: Keep the Agent's Web Knowledge Current
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx skills add GoogleChrome/modern-web-guidance &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; modern-web-guidance &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--agent&lt;/span&gt; codex &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--copy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google Chrome's &lt;a href="https://github.com/GoogleChrome/modern-web-guidance" rel="noopener noreferrer"&gt;Modern Web Guidance&lt;/a&gt; provides current web-platform guidance for HTML, CSS, and client-side JavaScript work.&lt;/p&gt;

&lt;p&gt;It covers modern capabilities such as native dialogs and popovers, container queries, &lt;code&gt;:has()&lt;/code&gt;, View Transitions, anchor positioning, scroll-driven animations, modern forms, and frontend performance techniques.&lt;/p&gt;

&lt;p&gt;Its most important contribution is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Before generating another JavaScript abstraction or adding a dependency, check whether the browser already solves the problem.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That makes it useful for UI features, modern CSS, browser interactions, and frontend performance work.&lt;/p&gt;

&lt;p&gt;Modern Web Guidance is currently marked as &lt;strong&gt;preview&lt;/strong&gt;, so I would keep an eye on the repository as it evolves.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. web-design-guidelines: Working UI Is Not Necessarily Good UI
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx skills add vercel-labs/agent-skills &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; web-design-guidelines &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--agent&lt;/span&gt; codex &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--copy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vercel's &lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines" rel="noopener noreferrer"&gt;web-design-guidelines&lt;/a&gt; reviews the interface produced by the agent.&lt;/p&gt;

&lt;p&gt;The distinction from &lt;code&gt;modern-web-guidance&lt;/code&gt; is important.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;modern-web-guidance&lt;/code&gt; asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Which modern web approach should I use to build this?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;web-design-guidelines&lt;/code&gt; asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Is the resulting interface actually usable and accessible?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It reviews things like focus visibility, keyboard interaction, form labels, responsive behavior, loading and error states, touch targets, reduced motion, and content hierarchy.&lt;/p&gt;

&lt;p&gt;I use it for new or materially changed interfaces, not after every minor CSS edit.&lt;/p&gt;

&lt;p&gt;Some recommendations can naturally reflect Vercel's own design preferences, so the project's established design system should always take precedence.&lt;/p&gt;

&lt;p&gt;There is also an important accessibility boundary here.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;web-design-guidelines&lt;/code&gt; can identify likely problems from the implementation.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;a11y-debugging&lt;/code&gt; and Chrome DevTools verify what actually happens after that interface is rendered and interacted with in the browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Security: code-security and semgrep
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx skills add semgrep/skills &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; code-security &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; semgrep &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--agent&lt;/span&gt; codex &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--copy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Semgrep provides two separate skills because writing secure code and operating a static-analysis tool are different jobs.&lt;/p&gt;

&lt;h3&gt;
  
  
  code-security
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;code-security&lt;/code&gt; is useful while security-sensitive code is being written.&lt;/p&gt;

&lt;p&gt;It covers areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;injection vulnerabilities&lt;/li&gt;
&lt;li&gt;XSS&lt;/li&gt;
&lt;li&gt;CSRF&lt;/li&gt;
&lt;li&gt;SSRF&lt;/li&gt;
&lt;li&gt;path traversal&lt;/li&gt;
&lt;li&gt;JWT validation&lt;/li&gt;
&lt;li&gt;secrets&lt;/li&gt;
&lt;li&gt;cryptography&lt;/li&gt;
&lt;li&gt;race conditions&lt;/li&gt;
&lt;li&gt;infrastructure security&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I consider it especially relevant when working on authentication and authorization, API endpoints, Server Actions, user input, database access, external requests, files, tokens, or infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  semgrep
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;semgrep&lt;/code&gt; skill is about using the actual Semgrep tool effectively.&lt;/p&gt;

&lt;p&gt;It helps with selecting rulesets, running targeted scans, investigating CI findings, evaluating false positives, and writing custom rules.&lt;/p&gt;

&lt;p&gt;The separation is straightforward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Writing security-sensitive code → &lt;code&gt;code-security&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running or investigating static analysis → &lt;code&gt;semgrep&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A skill should not replace the actual security gate.&lt;/p&gt;

&lt;p&gt;For production repositories, I also recommend running Semgrep in CI. The &lt;a href="https://docs.semgrep.dev/deployment/oss-deployment" rel="noopener noreferrer"&gt;Semgrep Community Edition CI documentation&lt;/a&gt; is a good starting point.&lt;/p&gt;

&lt;p&gt;Semgrep Agent Skills are currently described as &lt;strong&gt;beta&lt;/strong&gt;, which is another reason to keep scanner output independent from the agent's interpretation.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. chrome-devtools and a11y-debugging: Show the Agent the Real Browser
&lt;/h2&gt;

&lt;p&gt;Install the skills:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx skills add ChromeDevTools/chrome-devtools-mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; chrome-devtools &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; a11y-debugging &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--agent&lt;/span&gt; codex &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--copy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Connect Codex to Chrome DevTools MCP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex mcp add chrome-devtools &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  pnpm dlx chrome-devtools-mcp@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source-code review alone is not enough.&lt;/p&gt;

&lt;p&gt;A component may look correct while the running application still has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a hydration error&lt;/li&gt;
&lt;li&gt;a failing network request&lt;/li&gt;
&lt;li&gt;broken focus order&lt;/li&gt;
&lt;li&gt;an inaccessible dialog&lt;/li&gt;
&lt;li&gt;a form flow that simply does not work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://github.com/ChromeDevTools/chrome-devtools-mcp/tree/main/skills/chrome-devtools" rel="noopener noreferrer"&gt;chrome-devtools skill&lt;/a&gt; gives the agent a structured workflow for inspecting the running application.&lt;/p&gt;

&lt;p&gt;It can navigate to the relevant page, inspect DOM and accessibility snapshots, execute the user flow, check console and network errors, and use performance traces or screenshots when needed.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;a11y-debugging&lt;/code&gt; adds runtime accessibility checks for semantic HTML, accessible names, labels, keyboard navigation, focus order, dialog behavior, tap targets, and contrast.&lt;/p&gt;

&lt;p&gt;The principle is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The agent should not only read the code it changed. It should verify the affected user flow in the running application.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The scope should remain proportional to the task. Changing a form should trigger verification of that form, not an unnecessary audit of the entire site.&lt;/p&gt;

&lt;p&gt;The Chrome DevTools repository also includes specialized skills for things like LCP optimization, memory leaks, and troubleshooting.&lt;/p&gt;

&lt;p&gt;I treat those as on-demand debugging workflows rather than part of the default core.&lt;/p&gt;




&lt;h2&gt;
  
  
  An Additional Layer for Next.js and shadcn/ui
&lt;/h2&gt;

&lt;p&gt;On top of this core, I add two skills when working with my preferred React stack.&lt;/p&gt;

&lt;p&gt;One important detail first: &lt;strong&gt;I do not add a generic Next.js framework skill.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Current Next.js versions provide documentation matching the installed version under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node_modules/next/dist/docs/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and can direct coding agents to that source.&lt;/p&gt;

&lt;p&gt;That means framework knowledge can come from the version actually installed in the project rather than model memory or another generic skill.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://nextjs.org/docs/app/guides/ai-agents" rel="noopener noreferrer"&gt;Next.js AI Coding Agents guide&lt;/a&gt; explains this approach in more detail.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. vercel-react-best-practices
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx skills add vercel-labs/agent-skills &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; vercel-react-best-practices &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--agent&lt;/span&gt; codex &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--copy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vercel's &lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/react-best-practices" rel="noopener noreferrer"&gt;React Best Practices skill&lt;/a&gt; focuses on React and Next.js performance.&lt;/p&gt;

&lt;p&gt;It covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;async waterfalls&lt;/li&gt;
&lt;li&gt;bundle size&lt;/li&gt;
&lt;li&gt;server-side performance&lt;/li&gt;
&lt;li&gt;client-side data fetching&lt;/li&gt;
&lt;li&gt;unnecessary re-renders&lt;/li&gt;
&lt;li&gt;rendering cost&lt;/li&gt;
&lt;li&gt;JavaScript performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I particularly like is the prioritization.&lt;/p&gt;

&lt;p&gt;It pushes the agent toward high-impact problems such as request waterfalls and bundle cost before spending time on small rendering or JavaScript micro-optimizations.&lt;/p&gt;

&lt;p&gt;Vercel explains the same philosophy in &lt;a href="https://vercel.com/blog/introducing-react-best-practices" rel="noopener noreferrer"&gt;Introducing React Best Practices&lt;/a&gt;: performance work should be prioritized by actual user impact.&lt;/p&gt;

&lt;p&gt;I use this skill for React components, Next.js data fetching, server/client boundaries, and bundle-sensitive changes.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. shadcn
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx skills add shadcn/ui &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--skill&lt;/span&gt; shadcn &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--agent&lt;/span&gt; codex &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--copy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The official &lt;a href="https://ui.shadcn.com/docs/skills" rel="noopener noreferrer"&gt;shadcn skill&lt;/a&gt; makes the agent inspect the project's actual configuration before generating code.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;shadcn info --json&lt;/code&gt;, it can discover the framework, Tailwind version, package manager, aliases, installed components, icon library, primitive base, and component paths.&lt;/p&gt;

&lt;p&gt;That matters because shadcn is not a traditional component library.&lt;/p&gt;

&lt;p&gt;Its component source lives inside the repository, and implementation details can vary depending on the project configuration.&lt;/p&gt;

&lt;p&gt;The skill encourages the agent to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;check existing components first&lt;/li&gt;
&lt;li&gt;use the registry when necessary&lt;/li&gt;
&lt;li&gt;respect the project's Tailwind and primitive setup&lt;/li&gt;
&lt;li&gt;use semantic tokens&lt;/li&gt;
&lt;li&gt;inspect diffs before modifying existing components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Project conventions still take precedence. Established form patterns, toast systems, and customized components should not be replaced without a clear reason.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Final Setup
&lt;/h2&gt;

&lt;p&gt;For a browser-facing production web application, my core is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AGENTS.md + agents-md
modern-web-guidance
web-design-guidelines
code-security
semgrep
chrome-devtools
a11y-debugging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For React and Next.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Version-matched Next.js documentation
vercel-react-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And when the project uses shadcn/ui:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shadcn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resulting architecture is intentionally simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AGENTS.md
    ↓
Persistent project rules

Feature documentation
    ↓
Domain knowledge loaded when needed

Skills
    ↓
Technical expertise loaded when needed

MCP + development tools
    ↓
Real runtime evidence

Scanners + CI
    ↓
Deterministic verification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;Better results from coding agents do not require endlessly longer prompts.&lt;/p&gt;

&lt;p&gt;They require &lt;strong&gt;better context architecture&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Adding more skills does not automatically improve quality. Without clear responsibilities, an agent can run unnecessary workflows, load duplicate information, or apply expertise where it is not relevant.&lt;/p&gt;

&lt;p&gt;With the right boundaries, this core setup helps an agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;apply project conventions more consistently&lt;/li&gt;
&lt;li&gt;use current technical sources&lt;/li&gt;
&lt;li&gt;avoid unnecessary dependencies and duplicate components&lt;/li&gt;
&lt;li&gt;consider security during implementation&lt;/li&gt;
&lt;li&gt;verify UI in a real browser&lt;/li&gt;
&lt;li&gt;prioritize performance issues correctly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main benefit is not that the agent writes more code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The main benefit is that it makes fewer bad decisions.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;I'm intentionally keeping this core small.&lt;/p&gt;

&lt;p&gt;If you're using coding agents in production web projects and have a skill you consider essential, &lt;strong&gt;I'd be interested to hear what you'd add to this stack.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Drop it in the comments — especially if it covers a responsibility that isn't already represented here.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vercel.com/blog/agents-md-outperforms-skills-in-our-agent-evals" rel="noopener noreferrer"&gt;AGENTS.md outperforms skills in our agent evals — Vercel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/app/guides/ai-agents" rel="noopener noreferrer"&gt;AI Coding Agents — Next.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getsentry/skills/blob/main/skills/agents-md/SKILL.md" rel="noopener noreferrer"&gt;Maintaining AGENTS.md — Sentry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/GoogleChrome/modern-web-guidance" rel="noopener noreferrer"&gt;Modern Web Guidance — Google Chrome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines" rel="noopener noreferrer"&gt;Web Design Guidelines — Vercel Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/semgrep/skills" rel="noopener noreferrer"&gt;Semgrep Agent Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.semgrep.dev/deployment/oss-deployment" rel="noopener noreferrer"&gt;Semgrep Community Edition in CI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ChromeDevTools/chrome-devtools-mcp" rel="noopener noreferrer"&gt;Chrome DevTools for Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vercel.com/blog/introducing-react-best-practices" rel="noopener noreferrer"&gt;Introducing React Best Practices — Vercel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ui.shadcn.com/docs/skills" rel="noopener noreferrer"&gt;shadcn/ui Skills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>softwareengineering</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
