<?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: Lohit sai Ganta</title>
    <description>The latest articles on DEV Community by Lohit sai Ganta (@yu-369).</description>
    <link>https://dev.to/yu-369</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%2F4064416%2F789bf5cc-d0f5-417d-965f-92ca4338a9c0.png</url>
      <title>DEV Community: Lohit sai Ganta</title>
      <link>https://dev.to/yu-369</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yu-369"/>
    <language>en</language>
    <item>
      <title>I built skill.md file to stop AI from Generic UI SLOP</title>
      <dc:creator>Lohit sai Ganta</dc:creator>
      <pubDate>Wed, 05 Aug 2026 15:44:02 +0000</pubDate>
      <link>https://dev.to/yu-369/i-built-skillmd-file-to-stop-ai-from-generic-ui-slop-599o</link>
      <guid>https://dev.to/yu-369/i-built-skillmd-file-to-stop-ai-from-generic-ui-slop-599o</guid>
      <description>&lt;p&gt;Here's the problem. Every AI coding agent (Cursor, Codex, Claude Code, whatever) is trained on millions of websites. Most of those websites are average. So when you prompt "build me a landing page," the model gives you the average of everything it's seen: a centered hero, a purple gradient, three equal feature cards, Inter font, &lt;code&gt;ease-in-out&lt;/code&gt;, done. It's not broken. It's just mediocre by default.&lt;/p&gt;

&lt;p&gt;I'm 17 and I got tired of fighting this in every conversation. So I built &lt;strong&gt;VibeCurb&lt;/strong&gt;: a collection of strict constraint skill files, that force AI agents to actually think about design before they touch code.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Every skill follows the same four-phase pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Design Read&lt;/strong&gt; - The agent reads your reference image, existing codebase, or brief and extracts design signals: typography, palette, layout, focal element, spacing. No code is written here.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quality Gate&lt;/strong&gt; - The extraction has to pass before the agent is allowed to generate anything. It must prove it understands the design direction, not just spit out defaults.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Precise Build&lt;/strong&gt; - Code generation happens against the extraction, not against the model's built-in idea of what a "website" looks like. Each skill has its own build sequence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Visual Diff&lt;/strong&gt; - The output is checked against the reference using PASS/FAIL tables across composition, typography, color, motion, and responsiveness. If it drifts, it gets caught.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There's also an inline &lt;strong&gt;drift rejection&lt;/strong&gt; layer. It catches known AI defaults (CSS keyword easings like &lt;code&gt;ease-in-out&lt;/code&gt;, AI-purple &lt;code&gt;#7c3aed&lt;/code&gt; gradients, generic glassmorphic cards, placeholder &lt;code&gt;Lorem ipsum&lt;/code&gt; content) and flags them before they make it into the output.&lt;/p&gt;

&lt;h2&gt;
  
  
  The skills
&lt;/h2&gt;

&lt;p&gt;Each skill constrains a specific problem space:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;awwwards-hero&lt;/code&gt;&lt;/strong&gt; - Hero sections only. Six documented architectures (Cinematic Center, Editorial Split, etc.) with implementation blueprints. The agent picks one and commits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;awwwards-sections&lt;/code&gt;&lt;/strong&gt; - Pricing tables, bento grids, feature highlights, footers. Same pipeline, different element constraints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;awwwards-motion&lt;/code&gt;&lt;/strong&gt; - Full motion system. Spring physics, scroll-linked choreography, mandatory animation maps for every visible element. 60fps enforcement. &lt;code&gt;prefers-reduced-motion&lt;/code&gt; gating, no exceptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pixel-perfect&lt;/code&gt;&lt;/strong&gt; - Screenshot in, exact code replica out. Every font, color, and spacing value matched.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;visual-redesign&lt;/code&gt;&lt;/strong&gt; - Feed it ugly-but-functional code, get back something that looks designed without breaking any logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;imagegen-frontend&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;brandkit-gen&lt;/code&gt;&lt;/strong&gt; - Generate premium reference images and identity boards that feed into the other skills as input.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The technical bit
&lt;/h2&gt;

&lt;p&gt;Each &lt;code&gt;SKILL.md&lt;/code&gt; is a standalone markdown file with YAML frontmatter. No runtime dependency, no npm package to install. You drop the file into &lt;code&gt;.cursor/rules/&lt;/code&gt;, &lt;code&gt;.agents/skills/&lt;/code&gt;, or paste it directly into a conversation. Any agent that reads markdown context can consume it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# CLI install&lt;/span&gt;
npx vibecurb-cli add awwwards-hero

&lt;span class="c"&gt;# Or just copy the SKILL.md file manually&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each phase gates the next. The agent can't skip ahead because the instructions explicitly block code generation until prior phases pass. It's not a suggestion, it's a hard protocol.&lt;/p&gt;

&lt;p&gt;Works with Cursor, Claude Code, Codex, ChatGPT, Gemini CLI, v0, Lovable, AI Studio. Anything that reads markdown context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why constraints, not prompts
&lt;/h2&gt;

&lt;p&gt;A prompt says "make it look good." A constraint says "extract the palette first, prove you understand the typography hierarchy, then build against the extraction, then diff against the reference." The difference is that constraints are verifiable. The agent either passed the quality gate or it didn't. There's no ambiguity.&lt;/p&gt;

&lt;p&gt;AI defaults to the mean. VibeCurb is the constraint that pulls it off the mean.&lt;/p&gt;

&lt;p&gt;Live Showcase: &lt;a href="https://vibecurb.pages.dev" rel="noopener noreferrer"&gt;vibecurb.pages.dev&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/Yu-369/VibeCurb" rel="noopener noreferrer"&gt;github.com/Yu-369/VibeCurb&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>vibecoding</category>
    </item>
  </channel>
</rss>
