{"id":286,"date":"2026-05-12T20:23:24","date_gmt":"2026-05-13T04:23:24","guid":{"rendered":"https:\/\/rainier-it.com\/blog\/?p=286"},"modified":"2026-05-12T20:23:29","modified_gmt":"2026-05-13T04:23:29","slug":"claude-code-the-karpathy-guidelines-a-saner-ai-coding-workflow","status":"publish","type":"post","link":"https:\/\/rainier-it.com\/blog\/claude-code-the-karpathy-guidelines-a-saner-ai-coding-workflow\/","title":{"rendered":"Claude Code + the Karpathy Guidelines: A Saner AI Coding Workflow"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>After a year of pairing with LLMs on infrastructure code, I&#8217;ve landed on a setup that mostly stops the AI from over-engineering everything. Two pieces make it work: Anthropic&#8217;s Claude Code CLI and a tiny set of behavioral rules from Andrej Karpathy that I now keep in my global config. Here&#8217;s how I install both, and the philosophy behind why this combination beats Copilot-style autocomplete for anything bigger than a one-liner.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udee0\ufe0f Claude Code, the Karpathy Guidelines, and the Superpowers Plugin<\/h1>\n\n\n\n<p>Claude Code is Anthropic&#8217;s official terminal CLI for their Claude models. Unlike a browser chat, it reads and edits files in your project, runs shell commands, watches test output, and stays grounded in the actual codebase. The plugin system layers <em>skills<\/em> on top \u2014 bite-sized behavioral rules that activate when they match the task at hand. The right plugin set turns Claude from a chatty autocomplete into something closer to a junior engineer who has read the handbook.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udccb Prerequisites<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Claude.ai subscription or API key<\/strong> \u2014 Pro\/Team works, or pay-as-you-go via the API<\/li>\n\n\n\n<li><strong>Node 18+<\/strong> \u2014 Claude Code installs via npm<\/li>\n\n\n\n<li><strong>A terminal and a project<\/strong> \u2014 Claude Code works in any directory; <code>cd<\/code> in and run it<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udded The Karpathy Guidelines \u2014 Expanded<\/h2>\n\n\n\n<p>Karpathy posted a short set of rules for collaborating with LLMs on code. They&#8217;re four sentences each, and they shut down almost every common failure mode (over-engineering, scope creep, premature abstractions, confidently-wrong refactors). Here they are verbatim:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>1. Think before coding. State assumptions explicitly. If multiple interpretations\n   exist, present them \u2014 don't pick silently. If something is unclear, stop and ask.\n\n2. Simplicity first. Minimum code that solves the problem. No features,\n   abstractions, error handling, or \"flexibility\" beyond what was asked. If a\n   senior engineer would call it overcomplicated, simplify.\n\n3. Surgical changes. Touch only what the task requires. Don't \"improve\" adjacent\n   code, refactor what isn't broken, or reformat things. Match existing style.\n   Remove orphans your changes created; leave pre-existing dead code alone\n   unless asked.\n\n4. Goal-driven execution. Convert tasks into verifiable success criteria before\n   starting (\"write a test that reproduces the bug, then make it pass\"). For\n   multi-step work, state a brief plan with a verification check per step.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color:#2e3440ff;color:#d8dee9ff\" tabindex=\"0\"><code><span class=\"line\"><span>1. Think before coding. State assumptions explicitly. If multiple interpretations<\/span><\/span>\n<span class=\"line\"><span>   exist, present them \u2014 don't pick silently. If something is unclear, stop and ask.<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span>\n<span class=\"line\"><span>2. Simplicity first. Minimum code that solves the problem. No features,<\/span><\/span>\n<span class=\"line\"><span>   abstractions, error handling, or \"flexibility\" beyond what was asked. If a<\/span><\/span>\n<span class=\"line\"><span>   senior engineer would call it overcomplicated, simplify.<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span>\n<span class=\"line\"><span>3. Surgical changes. Touch only what the task requires. Don't \"improve\" adjacent<\/span><\/span>\n<span class=\"line\"><span>   code, refactor what isn't broken, or reformat things. Match existing style.<\/span><\/span>\n<span class=\"line\"><span>   Remove orphans your changes created; leave pre-existing dead code alone<\/span><\/span>\n<span class=\"line\"><span>   unless asked.<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span>\n<span class=\"line\"><span>4. Goal-driven execution. Convert tasks into verifiable success criteria before<\/span><\/span>\n<span class=\"line\"><span>   starting (\"write a test that reproduces the bug, then make it pass\"). For<\/span><\/span>\n<span class=\"line\"><span>   multi-step work, state a brief plan with a verification check per step.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Each rule on its own:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Think before coding<\/h3>\n\n\n\n<p>LLMs default to <em>doing<\/em>. Karpathy&#8217;s first rule flips that: write out your assumptions and any ambiguous interpretations <em>before<\/em> the first edit. In Claude Code this shows up as the model saying, &#8220;I see two ways to read this \u2014 A would do X, B would do Y. Which?&#8221; instead of silently picking one and shipping it. That single behavior catches the vast majority of &#8220;that&#8217;s not what I asked for&#8221; rework.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Simplicity first<\/h3>\n\n\n\n<p>Without a rule, the model adds error handling for impossible cases, defensive null checks, configuration knobs nobody will use, and abstractions for a second caller that doesn&#8217;t exist yet. &#8220;Minimum code that solves the problem&#8221; is the antidote. A bug fix doesn&#8217;t need surrounding cleanup; a one-shot script doesn&#8217;t need a CLI flag library.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Surgical changes<\/h3>\n\n\n\n<p>This one stops the &#8220;helpful&#8221; refactors. You ask for a fix to function A; the model touches functions B and C &#8220;while I&#8217;m here.&#8221; Now the diff is 200 lines and code review takes an hour. Surgical means: change only what the task requires, leave the existing style alone, and clean up only the orphans <em>your<\/em> changes created. Pre-existing tech debt is not your problem in this PR.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Goal-driven execution<\/h3>\n\n\n\n<p>Convert the task into something verifiable <em>before<\/em> writing code. For a bug: write a failing test that reproduces it, then make it pass. For a feature: state the success criteria and how each step proves it. This makes the model&#8217;s plan and its progress legible \u2014 and it makes &#8220;done&#8221; mean something concrete instead of &#8220;I think I did it.&#8221;<\/p>\n\n\n\n<p>To make these stick, drop them into <code>~\/.claude\/CLAUDE.md<\/code>. That file is read on every Claude Code session, project or global:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># ~\/.claude\/CLAUDE.md \u2014 applies to every project\n\n## Always apply Karpathy coding guidelines\n\nFollow these four rules on every task:\n\n1. **Think before coding.** State assumptions explicitly...\n2. **Simplicity first.** Minimum code that solves the problem...\n3. **Surgical changes.** Touch only what the task requires...\n4. **Goal-driven execution.** Convert tasks into verifiable success criteria...<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">#<\/span><span style=\"color: #88C0D0\"> ~\/.claude\/CLAUDE.md \u2014 applies to every project<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">##<\/span><span style=\"color: #88C0D0\"> Always apply Karpathy coding guidelines<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">Follow these four rules on every task:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">1.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4; font-weight: bold\">**<\/span><span style=\"color: #D8DEE9FF; font-weight: bold\">Think before coding.<\/span><span style=\"color: #ECEFF4; font-weight: bold\">**<\/span><span style=\"color: #D8DEE9FF\"> State assumptions explicitly...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">2.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4; font-weight: bold\">**<\/span><span style=\"color: #D8DEE9FF; font-weight: bold\">Simplicity first.<\/span><span style=\"color: #ECEFF4; font-weight: bold\">**<\/span><span style=\"color: #D8DEE9FF\"> Minimum code that solves the problem...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">3.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4; font-weight: bold\">**<\/span><span style=\"color: #D8DEE9FF; font-weight: bold\">Surgical changes.<\/span><span style=\"color: #ECEFF4; font-weight: bold\">**<\/span><span style=\"color: #D8DEE9FF\"> Touch only what the task requires...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">4.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4; font-weight: bold\">**<\/span><span style=\"color: #D8DEE9FF; font-weight: bold\">Goal-driven execution.<\/span><span style=\"color: #ECEFF4; font-weight: bold\">**<\/span><span style=\"color: #D8DEE9FF\"> Convert tasks into verifiable success criteria...<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udce6 Installing skills via the plugin marketplace<\/h2>\n\n\n\n<p>Claude Code has a built-in plugin system. Plugins ship as <em>marketplaces<\/em> \u2014 each one is a git repo with a manifest. Anthropic publishes an official marketplace; community ones exist too. Adding the official one and browsing is three commands:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># 1. Open Claude Code in your project directory\nclaude\n\n# 2. Add Anthropic's official skills marketplace\n\/plugin marketplace add anthropics\/skills\n\n# 3. Browse and install\n\/plugin<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># 1. Open Claude Code in your project directory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">claude<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># 2. Add Anthropic&#39;s official skills marketplace<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">\/plugin<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">marketplace<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">add<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">anthropics\/skills<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># 3. Browse and install<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">\/plugin<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The <code>\/plugin<\/code> command opens an interactive picker. Two plugins are worth installing on every machine you code from:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># From the \/plugin menu \u2014 or directly:\n\/plugin install superpowers@anthropics-skills\n\/plugin install andrej-karpathy-skills@anthropics-skills<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># From the \/plugin menu \u2014 or directly:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">\/plugin<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">superpowers@anthropics-skills<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">\/plugin<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">andrej-karpathy-skills@anthropics-skills<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddb8 Superpowers \u2014 the workflow plugin<\/h2>\n\n\n\n<p>Superpowers is the heaviest plugin in the marketplace and the one I get the most value from. It bundles a dozen skills that enforce a workflow rather than answer one-off questions. The ones that fire most often for me:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>using-superpowers<\/strong> \u2014 the entrypoint. Tells Claude how to find and apply the rest of the skills.<\/li>\n\n\n\n<li><strong>brainstorming<\/strong> \u2014 required before any creative or feature work. Forces a &#8220;what are we actually building, what are the constraints, what are the edge cases&#8221; pass before the first line of code. Single biggest reduction in rework I&#8217;ve seen.<\/li>\n\n\n\n<li><strong>writing-plans<\/strong> \u2014 turns a spec into a numbered, verifiable plan with success criteria per step. The plan becomes the contract.<\/li>\n\n\n\n<li><strong>executing-plans<\/strong> \u2014 runs an existing plan in a separate session with review checkpoints. Pairs with writing-plans for multi-day work.<\/li>\n\n\n\n<li><strong>test-driven-development<\/strong> \u2014 write a failing test, make it pass, refactor. No code goes in without a test that justifies it.<\/li>\n\n\n\n<li><strong>systematic-debugging<\/strong> \u2014 symptom \u2192 reproduction \u2192 root cause \u2192 minimal fix \u2192 test. Stops the &#8220;add a try\/except and hope&#8221; anti-pattern.<\/li>\n\n\n\n<li><strong>using-git-worktrees<\/strong> \u2014 spins up an isolated workspace per feature so the current branch isn&#8217;t held hostage by half-finished work.<\/li>\n\n\n\n<li><strong>verification-before-completion<\/strong> \u2014 Claude must <em>run<\/em> the verification command (tests, build, type-check) before claiming &#8220;fixed&#8221; or &#8220;done.&#8221; Evidence before assertions.<\/li>\n\n\n\n<li><strong>requesting-code-review \/ receiving-code-review<\/strong> \u2014 pair-review behaviors that ask for and respond to critique without performative agreement.<\/li>\n\n\n\n<li><strong>dispatching-parallel-agents<\/strong> \u2014 when 2+ tasks are independent, fan them out into subagents in parallel instead of serializing.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udded karpathy-guidelines \u2014 the four-rule plugin<\/h2>\n\n\n\n<p>The <code>andrej-karpathy-skills:karpathy-guidelines<\/code> plugin is the same four rules, but loadable as a skill instead of hand-pasted into your CLAUDE.md. The advantage is that the skill mechanism makes the rules <em>activate on each task<\/em> rather than living as background context, which improves compliance noticeably. I run both \u2014 the rules in <code>~\/.claude\/CLAUDE.md<\/code> for the global heartbeat, and the skill for the per-task reinforcement.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udca1 Why this combination works<\/h2>\n\n\n\n<p>Out of the box, an LLM optimizes for <em>helpful-looking<\/em> output: lots of code, lots of options, lots of &#8220;in case you also wanted&#8230;&#8221; branches. That&#8217;s the failure mode that produces tech debt at AI scale. The Karpathy guidelines push in the opposite direction (minimum surface area, explicit assumptions, verifiable outcomes), and Superpowers operationalizes those values into a workflow you can audit at every step: brainstorm \u2192 plan \u2192 execute \u2192 verify \u2192 review.<\/p>\n\n\n\n<p>For a small MSP \u2014 where I&#8217;m the engineer, ops team, and code reviewer \u2014 that auditability is the difference between AI being a time saver and AI being a debt generator. Every change has a paper trail: what we decided to build, what the plan was, what got tested, what got reviewed. That&#8217;s the bar I want for production infrastructure code, and it&#8217;s harder to hit without the rails.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u23f0 Next steps<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Install Claude Code: <code>npm install -g @anthropic-ai\/claude-code<\/code>, then <code>claude<\/code> in any project.<\/li>\n\n\n\n<li>Add the marketplace and install the two plugins above.<\/li>\n\n\n\n<li>Paste the four Karpathy rules into <code>~\/.claude\/CLAUDE.md<\/code>.<\/li>\n\n\n\n<li>Try a small task, watch Claude state assumptions first, and tweak the rules to match your style.<\/li>\n<\/ol>\n\n\n\n<p><strong>You&#8217;re done!<\/strong> Three commands, four rules, and a noticeably saner pair-programming experience.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>If you&#8217;ve found a plugin worth pinning \u2014 or a rule that&#8217;s saved you from a refactor disaster \u2014 drop me a line at <a href=\"mailto:christopher@rainier-it.com\">christopher@rainier-it.com<\/a>. Always interested in what other people have found that works.<\/p>\n\n\n\n<p>Thanks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How I install Anthropic&#8217;s Claude Code CLI plus the Superpowers and Karpathy-guidelines plugins from the marketplace \u2014 and why this combination turns an LLM from helpful-looking autocomplete into a junior engineer who has read the handbook.<\/p>\n","protected":false},"author":1,"featured_media":289,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,4,19],"tags":[18],"class_list":["post-286","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices","category-ai-chatbots","category-guides","tag-ai"],"_links":{"self":[{"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/posts\/286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/comments?post=286"}],"version-history":[{"count":1,"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/posts\/286\/revisions"}],"predecessor-version":[{"id":287,"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/posts\/286\/revisions\/287"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/media\/289"}],"wp:attachment":[{"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/media?parent=286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/categories?post=286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rainier-it.com\/blog\/wp-json\/wp\/v2\/tags?post=286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}