<?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: UNTAKA corp</title>
    <description>The latest articles on DEV Community by UNTAKA corp (@untakacorp).</description>
    <link>https://dev.to/untakacorp</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3778634%2F3accacb1-3885-411f-9e80-a7a4fa37121b.png</url>
      <title>DEV Community: UNTAKA corp</title>
      <link>https://dev.to/untakacorp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/untakacorp"/>
    <language>en</language>
    <item>
      <title>Stop re-explaining your stack to Claude Code: a project-scoped skill folder system</title>
      <dc:creator>UNTAKA corp</dc:creator>
      <pubDate>Wed, 01 Apr 2026 03:26:02 +0000</pubDate>
      <link>https://dev.to/untakacorp/devto-article-42k4</link>
      <guid>https://dev.to/untakacorp/devto-article-42k4</guid>
      <description>&lt;h1&gt;
  
  
  Stop re-explaining your stack to Claude Code
&lt;/h1&gt;

&lt;p&gt;If you use Claude Code daily, you know the ritual.&lt;/p&gt;

&lt;p&gt;You open a session, and for the next 10 minutes you type variations of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This is a Next.js 14 project using App Router, TypeScript strict mode, Tailwind for styling, Supabase for auth and database, we deploy to Vercel, the file structure follows..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Across 3-4 sessions a day, that's 30-40 minutes of pure context-setting. Multiply by working days in a month and you get roughly &lt;strong&gt;12 hours per month re-explaining the same thing&lt;/strong&gt; to the same tool.&lt;/p&gt;

&lt;p&gt;This article shows a small, boring, &lt;strong&gt;permanent&lt;/strong&gt; fix. No prompts to copy-paste. No tool you have to remember to invoke. No subscription. It uses three Claude Code primitives you might already know about but likely haven't fully wired up: &lt;code&gt;CLAUDE.md&lt;/code&gt;, agents with YAML frontmatter, and SKILL.md folders.&lt;/p&gt;

&lt;p&gt;We'll build a minimal working example, then I'll show what a fully loaded setup looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three primitives
&lt;/h2&gt;

&lt;p&gt;Claude Code automatically reads configuration from your project root on every session start. The three important pieces:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Location&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Project root&lt;/td&gt;
&lt;td&gt;Free-form markdown. Claude reads it every session. Put your stack, conventions, commands, and "rules I'm tired of repeating" here.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agents&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.claude/agents/*.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;YAML-fronted markdown files. Each one defines a sub-agent with its own system prompt, model, and tool restrictions. Invoked with &lt;code&gt;@agent-name&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skills&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.claude/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Slash-command workflows. A SKILL.md file becomes &lt;code&gt;/name&lt;/code&gt;. Great for repetitive multi-step work.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The win is that all three load automatically. You don't remember to use them — they're just there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — A real CLAUDE.md for freelance work
&lt;/h2&gt;

&lt;p&gt;Here's a stripped version of what lives in my client projects:&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="gh"&gt;# CLAUDE.md — Next.js client project&lt;/span&gt;

&lt;span class="gu"&gt;## Stack&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Next.js 14 (App Router) · TypeScript strict · Tailwind · Supabase (SSR)
&lt;span class="p"&gt;-&lt;/span&gt; Deploy: Vercel · Package manager: pnpm

&lt;span class="gu"&gt;## Conventions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Server Components by default. &lt;span class="sb"&gt;`"use client"`&lt;/span&gt; only where actually required.
&lt;span class="p"&gt;-&lt;/span&gt; Zod for all user input validation. &lt;span class="sb"&gt;`react-hook-form`&lt;/span&gt; for forms.
&lt;span class="p"&gt;-&lt;/span&gt; Absolute imports with &lt;span class="sb"&gt;`@/`&lt;/span&gt; prefix.
&lt;span class="p"&gt;-&lt;/span&gt; Every &lt;span class="sb"&gt;`app/*`&lt;/span&gt; route must have &lt;span class="sb"&gt;`loading.tsx`&lt;/span&gt; and &lt;span class="sb"&gt;`error.tsx`&lt;/span&gt;.
&lt;span class="p"&gt;-&lt;/span&gt; Never commit &lt;span class="sb"&gt;`.env*`&lt;/span&gt; files. Never log Supabase service role keys.

&lt;span class="gu"&gt;## Commands you can run&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`pnpm dev`&lt;/span&gt; — dev server
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`pnpm build`&lt;/span&gt; — production build (must pass before I commit)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`pnpm type-check`&lt;/span&gt; — tsc --noEmit
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`pnpm lint`&lt;/span&gt; — ESLint

&lt;span class="gu"&gt;## Behavior&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Before any code change, run &lt;span class="sb"&gt;`type-check`&lt;/span&gt; and &lt;span class="sb"&gt;`lint`&lt;/span&gt;. If they fail, fix first.
&lt;span class="p"&gt;-&lt;/span&gt; After any code change affecting routes, show me the diff before applying.
&lt;span class="p"&gt;-&lt;/span&gt; Never assume a package is installed. Read &lt;span class="sb"&gt;`package.json`&lt;/span&gt; first.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Save it at the project root. Close your session. Reopen it. Claude now knows your stack without you typing a word.&lt;/p&gt;

&lt;p&gt;The subtle but important part is the &lt;strong&gt;Behavior&lt;/strong&gt; section. Most devs stop after listing the stack. The real value is encoding your own review rituals — the stuff you keep catching yourself reminding the model about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — A sub-agent for pre-delivery code review
&lt;/h2&gt;

&lt;p&gt;Create &lt;code&gt;.claude/agents/senior-dev.md&lt;/code&gt;:&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="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;senior-dev&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Code review before client delivery&lt;/span&gt;
&lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Read, Glob, Grep&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sonnet&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

You are a senior full-stack reviewer. Your job is to review code
BEFORE it ships to a paying client.

Check for, in priority order:
&lt;span class="p"&gt;1.&lt;/span&gt; TypeScript errors or &lt;span class="sb"&gt;`any`&lt;/span&gt; that should be typed
&lt;span class="p"&gt;2.&lt;/span&gt; Missing error handling on async boundaries
&lt;span class="p"&gt;3.&lt;/span&gt; Supabase RLS issues — queries that bypass row-level security
&lt;span class="p"&gt;4.&lt;/span&gt; Client/Server component split correctness (no client-only code
   in Server Components, no secrets in Client Components)
&lt;span class="p"&gt;5.&lt;/span&gt; Accessibility regressions (missing aria-labels, bad contrast,
   non-semantic HTML)
&lt;span class="p"&gt;6.&lt;/span&gt; XSS / unsanitized input in forms or URL params

Output format: a table with file:line, severity (high/med/low),
issue, and a one-line fix suggestion. No prose. No praise.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;tools: Read, Glob, Grep&lt;/code&gt; line matters — it means this agent is &lt;strong&gt;read-only&lt;/strong&gt;. You can invoke it on a repo without worrying it'll edit files. Defense in depth for an LLM.&lt;/p&gt;

&lt;p&gt;Now in any session you can type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;@senior-dev review src/app/dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And you get a terse, structured report. No more "Claude I know you want to be encouraging but please just tell me what's broken."&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — A slash command for scaffolding
&lt;/h2&gt;

&lt;p&gt;Create &lt;code&gt;.claude/skills/dev-kickstart/SKILL.md&lt;/code&gt;:&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="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Scaffold a new feature with consistent project structure&lt;/span&gt;
&lt;span class="na"&gt;argument-hint&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;feature-name&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;allowed-tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Read, Write, Glob&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# /dev-kickstart&lt;/span&gt;

Given a feature name, create the full scaffolding:
&lt;span class="p"&gt;
1.&lt;/span&gt; &lt;span class="sb"&gt;`app/&amp;lt;feature&amp;gt;/page.tsx`&lt;/span&gt; — route using Server Component pattern from CLAUDE.md
&lt;span class="p"&gt;2.&lt;/span&gt; &lt;span class="sb"&gt;`app/&amp;lt;feature&amp;gt;/loading.tsx`&lt;/span&gt; and &lt;span class="sb"&gt;`error.tsx`&lt;/span&gt; (per project convention)
&lt;span class="p"&gt;3.&lt;/span&gt; &lt;span class="sb"&gt;`components/&amp;lt;feature&amp;gt;/&amp;lt;Feature&amp;gt;Client.tsx`&lt;/span&gt; — client component only if needed
&lt;span class="p"&gt;4.&lt;/span&gt; &lt;span class="sb"&gt;`lib/&amp;lt;feature&amp;gt;/types.ts`&lt;/span&gt; — Zod schemas + inferred TS types
&lt;span class="p"&gt;5.&lt;/span&gt; &lt;span class="sb"&gt;`lib/&amp;lt;feature&amp;gt;/queries.ts`&lt;/span&gt; — Supabase query helpers

Follow the naming conventions and import aliases from CLAUDE.md.
Do not install new dependencies. Do not commit. Show me the tree
of created files at the end.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now &lt;code&gt;/dev-kickstart auth-flow&lt;/code&gt; scaffolds a complete feature following &lt;strong&gt;your&lt;/strong&gt; conventions, not generic ones.&lt;/p&gt;

&lt;p&gt;The key difference versus a prompt template: this is a &lt;strong&gt;Claude Code native&lt;/strong&gt; format. The YAML frontmatter tells Claude Code which tools to permit and how to label the command in the UI. It's a first-class citizen, not a string hack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this beats prompt libraries
&lt;/h2&gt;

&lt;p&gt;Prompt libraries (the "100 prompts for developers" PDFs you see everywhere) have three problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You have to remember to use them.&lt;/strong&gt; A prompt sitting in a Notion page is functionally dead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They're not scoped.&lt;/strong&gt; A general prompt for "code review" can't know your Supabase tables or your import aliases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They can't restrict tools.&lt;/strong&gt; A prompt can ask nicely. A skill with &lt;code&gt;allowed-tools: Read, Glob, Grep&lt;/code&gt; literally cannot write files.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Skill folders fix all three. They live in the repo, they load automatically, and they can scope capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a fully loaded setup looks like
&lt;/h2&gt;

&lt;p&gt;After using this pattern across a few projects, my client-work template grew into this shape:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;your-project/
├── CLAUDE.md                          ← stack, conventions, rituals
└── .claude/
    ├── settings.json                  ← security defaults (block .env reads, etc.)
    ├── agents/
    │   ├── senior-dev.md              ← pre-delivery review
    │   ├── qa-tester.md               ← bug + a11y hunting
    │   └── client-communicator.md     ← drafts client emails
    └── skills/
        ├── dev-kickstart/SKILL.md     ← scaffold features
        ├── code-review/SKILL.md       ← full repo review
        ├── deploy-vercel/SKILL.md     ← pre-deploy checklist
        ├── generate-api-route/SKILL.md
        ├── create-component/SKILL.md
        ├── fix-bugs/SKILL.md
        └── write-tests/SKILL.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing fancy. Just boring discipline, encoded once.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 15-minute starter
&lt;/h2&gt;

&lt;p&gt;If you want the fastest version of this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;CLAUDE.md&lt;/code&gt; at your project root with sections: Stack, Conventions, Commands, Behavior. Write each section as bullet points of things you're tired of explaining.&lt;/li&gt;
&lt;li&gt;Create &lt;code&gt;.claude/agents/senior-dev.md&lt;/code&gt; with the template above, adapted to your stack.&lt;/li&gt;
&lt;li&gt;Close your Claude Code session. Reopen it in the same project. Type &lt;code&gt;@senior-dev review src/&lt;/code&gt; on a random file.&lt;/li&gt;
&lt;li&gt;Watch it work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. From here you add agents and skills as you catch yourself repeating instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want the full bundle
&lt;/h2&gt;

&lt;p&gt;I packaged my complete setup — 3 project templates (freelance Next.js, SaaS MVP, e-commerce Stripe), 3 agents, 7 skills, and a hardened &lt;code&gt;settings.json&lt;/code&gt; — as a drop-in bundle. It's &lt;a href="https://untaka.gumroad.com/l/mcfget" rel="noopener noreferrer"&gt;on Gumroad for $19&lt;/a&gt; if you'd rather not assemble your own.&lt;/p&gt;

&lt;p&gt;But honestly, the real value is in the pattern, not the bundle. Everything above is enough to get started. Copy the templates, adapt them to your stack, and watch your session start-up time drop to zero.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you build your own skill folder, drop a comment with what's in it — I'm curious how other people structure theirs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
