<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Simplicity on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/simplicity/</link>
        <description>Recent content in Simplicity on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Fri, 10 Apr 2026 16:25:18 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/simplicity/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>andrej-karpathy-skills</title>
        <link>https://producthunt.programnotes.cn/en/p/andrej-karpathy-skills/</link>
        <pubDate>Fri, 10 Apr 2026 16:25:18 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/andrej-karpathy-skills/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1603808523691-a2f471d415f0?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NzU4MDk0ODd8&amp;ixlib=rb-4.1.0" alt="Featured image of post andrej-karpathy-skills" /&gt;&lt;h1 id=&#34;forrestchangandrej-karpathy-skills&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/forrestchang/andrej-karpathy-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;forrestchang/andrej-karpathy-skills&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;karpathy-inspired-claude-code-guidelines&#34;&gt;Karpathy-Inspired Claude Code Guidelines
&lt;/h1&gt;&lt;p&gt;A single &lt;code&gt;CLAUDE.md&lt;/code&gt; file to improve Claude Code behavior, derived from &lt;a class=&#34;link&#34; href=&#34;https://x.com/karpathy/status/2015883857489522876&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Andrej Karpathy&amp;rsquo;s observations&lt;/a&gt; on LLM coding pitfalls.&lt;/p&gt;
&lt;h2 id=&#34;the-problems&#34;&gt;The Problems
&lt;/h2&gt;&lt;p&gt;From Andrej&amp;rsquo;s post:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The models make wrong assumptions on your behalf and just run along with them without checking. They don&amp;rsquo;t manage their confusion, don&amp;rsquo;t seek clarifications, don&amp;rsquo;t surface inconsistencies, don&amp;rsquo;t present tradeoffs, don&amp;rsquo;t push back when they should.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;They really like to overcomplicate code and APIs, bloat abstractions, don&amp;rsquo;t clean up dead code&amp;hellip; implement a bloated construction over 1000 lines when 100 would do.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;They still sometimes change/remove comments and code they don&amp;rsquo;t sufficiently understand as side effects, even if orthogonal to the task.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;the-solution&#34;&gt;The Solution
&lt;/h2&gt;&lt;p&gt;Four principles in one file that directly address these issues:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Principle&lt;/th&gt;
          &lt;th&gt;Addresses&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Think Before Coding&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Wrong assumptions, hidden confusion, missing tradeoffs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Simplicity First&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Overcomplication, bloated abstractions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Surgical Changes&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Orthogonal edits, touching code you shouldn&amp;rsquo;t&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Goal-Driven Execution&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Leverage through tests-first, verifiable success criteria&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;the-four-principles-in-detail&#34;&gt;The Four Principles in Detail
&lt;/h2&gt;&lt;h3 id=&#34;1-think-before-coding&#34;&gt;1. Think Before Coding
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Don&amp;rsquo;t assume. Don&amp;rsquo;t hide confusion. Surface tradeoffs.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;LLMs often pick an interpretation silently and run with it. This principle forces explicit reasoning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;State assumptions explicitly&lt;/strong&gt; — If uncertain, ask rather than guess&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Present multiple interpretations&lt;/strong&gt; — Don&amp;rsquo;t pick silently when ambiguity exists&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Push back when warranted&lt;/strong&gt; — If a simpler approach exists, say so&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop when confused&lt;/strong&gt; — Name what&amp;rsquo;s unclear and ask for clarification&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-simplicity-first&#34;&gt;2. Simplicity First
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Minimum code that solves the problem. Nothing speculative.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Combat the tendency toward overengineering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No features beyond what was asked&lt;/li&gt;
&lt;li&gt;No abstractions for single-use code&lt;/li&gt;
&lt;li&gt;No &amp;ldquo;flexibility&amp;rdquo; or &amp;ldquo;configurability&amp;rdquo; that wasn&amp;rsquo;t requested&lt;/li&gt;
&lt;li&gt;No error handling for impossible scenarios&lt;/li&gt;
&lt;li&gt;If 200 lines could be 50, rewrite it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The test:&lt;/strong&gt; Would a senior engineer say this is overcomplicated? If yes, simplify.&lt;/p&gt;
&lt;h3 id=&#34;3-surgical-changes&#34;&gt;3. Surgical Changes
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Touch only what you must. Clean up only your own mess.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When editing existing code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don&amp;rsquo;t &amp;ldquo;improve&amp;rdquo; adjacent code, comments, or formatting&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t refactor things that aren&amp;rsquo;t broken&lt;/li&gt;
&lt;li&gt;Match existing style, even if you&amp;rsquo;d do it differently&lt;/li&gt;
&lt;li&gt;If you notice unrelated dead code, mention it — don&amp;rsquo;t delete it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When your changes create orphans:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remove imports/variables/functions that YOUR changes made unused&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t remove pre-existing dead code unless asked&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The test:&lt;/strong&gt; Every changed line should trace directly to the user&amp;rsquo;s request.&lt;/p&gt;
&lt;h3 id=&#34;4-goal-driven-execution&#34;&gt;4. Goal-Driven Execution
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Define success criteria. Loop until verified.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Transform imperative tasks into verifiable goals:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Instead of&amp;hellip;&lt;/th&gt;
          &lt;th&gt;Transform to&amp;hellip;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;Add validation&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;Write tests for invalid inputs, then make them pass&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;Fix the bug&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;Write a test that reproduces it, then make it pass&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;Refactor X&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;Ensure tests pass before and after&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For multi-step tasks, state a brief plan:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. [Step] → verify: [check]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. [Step] → verify: [check]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. [Step] → verify: [check]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Strong success criteria let the LLM loop independently. Weak criteria (&amp;ldquo;make it work&amp;rdquo;) require constant clarification.&lt;/p&gt;
&lt;h2 id=&#34;install&#34;&gt;Install
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Option A: Claude Code Plugin (recommended)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;From within Claude Code, first add the marketplace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin marketplace add forrestchang/andrej-karpathy-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then install the plugin:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin install andrej-karpathy-skills@karpathy-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This installs the guidelines as a Claude Code plugin, making the skill available across all your projects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option B: CLAUDE.md (per-project)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;New project:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Existing project (append):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md &amp;gt;&amp;gt; CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;key-insight&#34;&gt;Key Insight
&lt;/h2&gt;&lt;p&gt;From Andrej:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;LLMs are exceptionally good at looping until they meet specific goals&amp;hellip; Don&amp;rsquo;t tell it what to do, give it success criteria and watch it go.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &amp;ldquo;Goal-Driven Execution&amp;rdquo; principle captures this: transform imperative instructions into declarative goals with verification loops.&lt;/p&gt;
&lt;h2 id=&#34;how-to-know-its-working&#34;&gt;How to Know It&amp;rsquo;s Working
&lt;/h2&gt;&lt;p&gt;These guidelines are working if you see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fewer unnecessary changes in diffs&lt;/strong&gt; — Only requested changes appear&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fewer rewrites due to overcomplication&lt;/strong&gt; — Code is simple the first time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clarifying questions come before implementation&lt;/strong&gt; — Not after mistakes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clean, minimal PRs&lt;/strong&gt; — No drive-by refactoring or &amp;ldquo;improvements&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;customization&#34;&gt;Customization
&lt;/h2&gt;&lt;p&gt;These guidelines are designed to be merged with project-specific instructions. Add them to your existing &lt;code&gt;CLAUDE.md&lt;/code&gt; or create a new one.&lt;/p&gt;
&lt;p&gt;For project-specific rules, add sections like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Project-Specific Guidelines
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Use TypeScript strict mode
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; All API endpoints must have tests
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Follow the existing error handling patterns in &lt;span class=&#34;sb&#34;&gt;`src/utils/errors.ts`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;tradeoff-note&#34;&gt;Tradeoff Note
&lt;/h2&gt;&lt;p&gt;These guidelines bias toward &lt;strong&gt;caution over speed&lt;/strong&gt;. For trivial tasks (simple typo fixes, obvious one-liners), use judgment — not every change needs the full rigor.&lt;/p&gt;
&lt;p&gt;The goal is reducing costly mistakes on non-trivial work, not slowing down simple tasks.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;MIT&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
