Skip to content

Category: The Art of Vibe Coding

11 min read The Art of Vibe Coding, ChatGPT, Claude, Vibe Coding

The 4 Golden Rules of Vibe Coding (A Year-End Manifesto)

You remember early 2025, right?

I was bouncing between ChatGPT Pro, Claude web, and Cursor like a pinball with a deadline. Copy from o1 pro. Paste into my editor. Fix the bug it introduced. Pray it works. Try Cursor for a second opinion. Watch it rewrite my entire file when I asked for one measly line.

Rinse. Repeat. Question your life choices.

(We’ve all been there. And if you say you haven’t, well, I’m not sure I believe you.)

Then May hit. Anthropic added Claude Code to their Max plan—same $200/month I was already burning on ChatGPT Pro, but now I could stop copy-pasting and start orchestrating.

That shift changed everything.

Here’s the thing: I wrote 30+ articles this year documenting every breakthrough, every spectacular failure, every “wait, that’s how it’s supposed to work?” moment. If you only read one piece from me in 2025—make it this one.

What follows are the 4 immutable laws of Vibe Coding I discovered this year. They turned chaotic AI sessions into systematic, predictable wins. Once you see them, you can’t unsee them.

Ready? Let’s go.

.

.

.

Rule #1: The Blueprint Is More Important Than The Code

Let me tell you about the single biggest mistake I see developers make.

They type “build me a task management app” and hit Enter. Claude generates code. Components. Database schemas. Authentication logic.

And then… it’s nothing like what they imagined.

They blame the AI. “It hallucinated again.”

But here’s what I’ve learned after shipping dozens of projects with Claude Code: hallucinations are usually just ambiguity in your prompt. That’s it. That’s the secret nobody wants to admit.

AI is a terrible architect. Give it vague instructions, and it fills in the blanks with whatever patterns it’s seen most often. (Which, spoiler alert, aren’t YOUR patterns.)

But AI is an amazing contractor.

Give it clear blueprints—specific requirements, explicit constraints, visual references—and it executes with surgical precision. Like a really talented carpenter who just needs you to stop saying “make it nice” and start handing over actual measurements.

Infographic titled "THE BLUEPRINT SPECTRUM" comparing two approaches to using AI for software development. The left side, under the heading "VAGUE PROMPT," shows the input "Build me a task app" leading to a box labeled "AI GUESSES" with a brain emoji. This results in a red box with cross marks (❌) listing failures: "Wrong auth," "Wrong UI," "Wrong schema," and "3 rewrites." Below this, an orange pill-shaped box indicates a "Success Rate: ~30%" with a warning emoji (⚠️). The right side, under the heading "DETAILED BLUEPRINT," shows the input "PRD + ASCII Wireframes + User Stories + Constraints" leading to a box labeled "AI EXECUTES" with a robot arm emoji. This results in a green box with checkmarks (✅) listing successes: "Exact auth," "Exact UI," "Exact schema," and "First try." Below this, a blue pill-shaped box indicates a "Success Rate: 97%" with an upward trend arrow emoji (📈). A vertical blue line separates the two comparison sections.

The technique: Interview yourself first

Instead of asking Claude to “build me an app,” I use a brainstorming prompt (inspired by McKay Wrigley and Sabrina Ramonov) that flips the entire script.

The AI interviews me.

  • “What’s the core problem this solves?”
  • “Who uses it?”
  • “What does the main screen look like?”
  • “What happens when the user clicks X?”

By the time I’ve answered those questions, I’ve got a Product Requirements Document. Not AI-generated slop—my vision, clarified.

Claude becomes the junior dev who asks great questions before writing a single line of code. I stay the architect who actually understands what we’re building.

(This is the way it should be.)

The secret weapon: ASCII wireframes

Text descriptions get misinterpreted. Every. Single. Time.

You say “a sidebar with navigation.” Claude hears “full-width hamburger menu.”

So I started including ASCII art wireframes in my prompts:

+------------------+---------------------------+
|   SIDEBAR        |      MAIN CONTENT         |
|  [Dashboard]     |                           |
|  [Projects]      |   +-------------------+   |
|  [Settings]      |   |   Project Card    |   |
|                  |   +-------------------+   |
|                  |   +-------------------+   |
|                  |   |   Project Card    |   |
+------------------+---------------------------+

Sounds primitive, right? Almost embarrassingly low-tech.

The results say otherwise.

When I started including visual plans, my first-try success rate hit 97%. Claude understood layout and hierarchy immediately. No more “that’s not what I meant” rewrites. No more three rounds of “closer, but still wrong.”

👉 The takeaway: Stop typing code and start drawing maps. The blueprint is where the real work happens.

Want the full workflow?

.

.

.

Rule #2: Separate The “Thinker” From The “Builder”

At the beginning, I was using Claude Code for everything.

Planning. Building. Reviewing. Debugging.

One model to rule them all.

And it almost worked.

Almost.

But I kept running into the same problems. Claude would rewrite perfectly good code. Add complex abstractions I never asked for. Solve a simple bug by restructuring half my app.

I asked for email OTP login. I got a 12-file authentication framework.

I asked to fix a type error. Claude decided my entire architecture was wrong.

(It wasn’t. I promise you, it wasn’t.)

The discovery: Specialized roles

Then I stumbled onto a workflow that changed everything—and honestly, I felt a little silly for not seeing it sooner.

Use one model to think. Use another to build.

For me, that’s GPT-5/Codex (The Thinker) and Claude Code (The Builder).

Codex asks clarifying questions. It creates comprehensive plans. It reviews code like a senior engineer who’s seen every possible edge case and still remembers them all.

Claude Code executes. Fast. Reliably. It handles files, terminal commands, and edits without wandering off into philosophical debates about code architecture.

Together? Magic.

The review loop

The workflow looks like this:

  1. Plan (Codex): Describe what I want to build. Codex asks questions, creates a detailed implementation plan.
  2. Build (Claude Code): Feed the plan to Claude. Let it execute.
  3. Review (Codex): Paste the implementation back to Codex. It checks against the original plan, catches bugs, finds edge cases.
Infographic titled "THE THINKER-BUILDER LOOP" with a brain emoji and a robot arm emoji. The diagram shows a cyclical workflow between two AI models. It starts with a box labeled "GPT-5 / CODEX (Thinker)" pointing down to "STEP 1: Plan" ("Ask questions", "Create spec"), which leads to a box labeled "CLAUDE CODE (Builder)". Claude Code then points down to "STEP 2: Build" ("Execute the plan", "Files, commands"). A feedback loop points from Claude Code back up to GPT-5 with the text "Catches bugs single-model workflows miss." Another arrow from Claude Code points up to "STEP 3: Review" ("Does this match the plan?"), which then points back to the GPT-5 box, completing the loop. At the bottom, an orange banner summarizes "THE RESULT: Specialized models = Specialized results," with the comparison "7 hours of solo debugging ✅ → 27 minutes with the loop ⚡".

That third step—the review loop—catches issues that single-model workflows miss every time. EVERY time.

Taming the overengineering monster

Claude has a tendency to overcomplicate. It’s well-documented at this point. (If you’ve used it for more than a week, you know exactly what I’m talking about.)

My fix? The Surgical Coding Prompt.

Instead of “add this feature,” I tell Claude:

“Analyze the existing patterns in this codebase. Implement this change using the minimal number of edits. Do not refactor unless explicitly asked. Show me the surgical changes—nothing more.”

From 15 files to 3 files. From 1000+ lines to 120 lines.

Same functionality. 90% less complexity.

👉 The takeaway: Treat your AI models like a team, not a swiss-army knife. Specialized roles produce specialized results.

Ready to go deeper?

.

.

.

Rule #3: Don’t Just Prompt—Teach “Skills”

Here’s a question that haunted me for months:

“Why do I keep explaining the same patterns over and over?”

Every new project, I’d spell out my authentication approach. My database schema conventions. My error handling patterns. Every. Single. Time.

Claude would forget by the next session. Sometimes by the next prompt.

I was treating AI like a goldfish with a keyboard.

(No offense to goldfish. They’re trying their best.)

The “I know kung fu” moment

Then Claude launched Skills—and everything clicked.

Skills let you package your coding patterns into reusable modules. Instead of explaining “here’s how I do authentication” for the 47th time, you create an auth-skill. Enable it, and Claude instantly knows your entire implementation.

The exact patterns. The exact folder structure. The exact error messages.

Every project uses the same battle-tested approach. Zero drift. Zero “well, last time I used a different library.”

It’s like downloading knowledge directly into Claude’s brain.

Matrix-style. (Hence the name.)

Building your first skill

The process is stupidly simple:

  1. Take code that already works in production
  2. Document the patterns using GPT-5 (it’s better at documentation than execution)
  3. Transform that documentation into a Claude Skill using the skill-creator tool
  4. Deploy to any future project

The documentation step matters. GPT-5 creates clean, structured explanations of your existing implementations. Claude Skills uses those explanations to replicate them perfectly.

The compound learning effect

Here’s where it gets really interesting.

I built an Insights Logger skill that captures lessons while Claude “code”. Every architectural decision, every weird bug fix, every “oh that’s why it works that way” moment—automatically logged.

At the end of each session, I review those insights. The good ones get promoted to my CLAUDE.md file—the permanent knowledge base Claude reads at the start of every project.

Infographic titled "THE COMPOUND LEARNING PIPELINE". The top shows four columns labeled "SESSION 1", "SESSION 2", "SESSION 3", and "SESSION N". Each session has a downward arrow pointing to a box labeled "Insight Logger" with a brain emoji. Arrows from all four "Insight Logger" boxes converge and point downwards into a large central blue box titled "CLAUDE.md (Permanent Knowledge)". Inside this box, a bulleted list with emojis includes: "Auth patterns from Session 1 🔒", "Auth patterns from Session 2 💾", "Database quirks from Session 2 💻", "API fixes from Session 3 🔌", and "...compounding over time 📈". A final arrow points downwards from the "CLAUDE.md" box to a large orange callout box at the bottom with the title "EVERY NEW SESSION STARTS SMARTER". Text inside reads: "Claude reads CLAUDE.md → Already knows your patterns, quirks, and lessons 🚀". The flow illustrates how insights from multiple sessions are collected and stored to improve future interactions.

Each coding session builds on the last. Compound learning, automated.

👉 The takeaway: Prompting is temporary. Skills are permanent. If you’re explaining something twice, you’re doing it wrong.

For the complete Skills series,

.

.

.

Rule #4: Friction Is The Enemy (So Automate It Away)

Let me describe a scene you’ll recognize.

You’re deep in flow state. Claude Code is humming along. Building components, wiring up APIs, making real progress.

And then:

Allow Claude to run `npm install`? [y/n]

You press Enter.

Allow Claude to run `git status`? [y/n]

Enter.

Allow Claude to run `ls src/`? [y/n]

Enter. Enter. Enter. Enter. Enter.

By prompt #47, you’re not reading anymore. You’re a very tired seal at a circus act nobody asked for.

(Stay with me on this metaphor—it’s going somewhere.)

Anthropic calls this approval fatigue. Their testing showed developers hit it within the first hour of use.

And here’s the terrifying part: the safety mechanism designed to protect you actually makes you less safe. You start approving everything blindly. Including the stuff you should actually read.

Infographic contrasting two security models. The left side, titled "APPROVAL FATIGUE TIMELINE," shows a four-hour progression: Hour 1 (green bar): "Carefully reading prompts", quote "Hmm, let me check this...". Hour 2 (yellow bar): "Starting to skim", quote "Yeah yeah whatever". Hour 3 (orange bar): "Reflexively pressing Enter", quote "Enter", "Enter", "Enter". Hour 4 (red bar): "Approving ANYTHING blindly", quote "*doesn't even look*". A red box below shows the result: "RESULT: Malicious postinstall script steals SSH keys. You approved it without reading." with a red X icon. The right side, titled "SANDBOX PROTECTION MODEL," shows two columns: "YOUR SYSTEM (Blocked)" with system directories (~/.ssh/, ~/.aws/, ~/.bashrc) marked with a red X and connected to a box labeled "INVISIBLE TO CLAUDE (OS kernel enforced)". The second column, "YOUR PROJECT (Free)", lists project files (src/, components/, package.json) with green checkmarks indicating "Read/Write", connected to a box labeled "FULL AUTONOMY (Zero prompts)". A green box below shows the result: "RESULT: Prompt injection tries to read ~/.ssh/id_rsa. Kernel says NO. Claude literally cannot see it." with a green checkmark icon. A large "VS." separates the two main sections.

The sandbox solution

Claude Code’s sandbox flips the entire model.

Instead of asking permission for every tiny action, the sandbox draws clear boundaries upfront. Work freely inside them. Get blocked immediately outside them.

On Linux, it uses Bubblewrap—the same tech powering Flatpak. On macOS, it’s Seatbelt—the same tech restricting iOS apps.

These boundaries are OS-enforced. Prompt injection can’t bypass them.

Claude can only read/write inside your project directory. Your SSH keys, AWS credentials, shell config? Invisible. Network traffic routes through a proxy allowing only approved domains.

You run /sandbox, enable auto-allow mode, and suddenly every sandboxed command executes automatically. No prompts. No friction. No approval fatigue.

The 84% reduction in permission prompts? Nice. The kernel-level protection that actually works? Essential.

Parallel experimentation with Git Worktrees

Here’s another friction point that kills vibe coding: fear of breaking the main branch.

My fix: Git Worktrees with full isolation.

Standard worktrees share your database. They share your ports. Three AI agents working on three features leads to chaos. (Ask me how I know.)

I built a tool that gives each worktree its own universe. Own working directory. Own PostgreSQL database clone. Own port assignment. Own .env configuration. Now I run three experimental branches simultaneously. Let three Claude instances explore three different approaches. Pick the winner. Delete the losers.

No conflicts. No fear. No “let me save my work before trying this crazy idea.”

👉 The takeaway: Safe environments allow for dangerous speed. Eliminate friction, and experimentation becomes free.

Ready to set it up?

.

.

.

The Synthesis: What Separates Hobbyists From Shippers

These 4 rules are what separate “people who play with AI” from “people who ship software with AI.”

  • Rule #1: The blueprint is more important than the code.
  • Rule #2: Separate the thinker from the builder.
  • Rule #3: Don’t just prompt—teach skills.
  • Rule #4: Friction is the enemy.

Each rule builds on the last.

Clear blueprints feed into specialized models. Specialized models benefit from reusable skills. Reusable skills only matter if friction doesn’t kill your flow.

It’s a system. Not a collection of random tips.

Where to start

Don’t try to implement all four at once.

That’s a recipe for burnout.

  1. Start with Rule #4. Enable the sandbox. Regain your sanity. Stop being a tired circus seal.
  2. Then move to Rule #1. Before your next feature, write the PRD first. Interview yourself. Draw the ASCII wireframe.
  3. Rule #2 and Rule #3 come naturally after that. You’ll feel the pain of overengineering (and want specialized roles). You’ll get tired of repeating yourself (and want skills).

The system reveals itself when you need it.

Your challenge for 2026

Pick one project you’ve been putting off. Something that felt too complex for AI assistance.

  • Apply Rule #1: Write the blueprint first. ASCII wireframes and all.
  • Apply Rule #4: Set up the sandbox before you start.

Then let Claude execute.

Watch what happens when AI has clear boundaries and clear instructions. Watch how different it feels when you’re orchestrating instead of babysitting.

What will you build first?

Here’s to an even faster 2026.

Now go ship something.


This post synthesizes a year’s worth of vibe coding experimentation. Browse the full archive to dive deeper into any technique—from CLAUDE.md setup to sub-agent patterns to WordPress automation.

9 min read The Art of Vibe Coding, Claude

Claude Code Sandbox Explained: Stop Pressing Enter 50 Times a Day

You’re deep in flow state.

Claude Code is humming along—building your Next.js app, spinning up components, mapping out API routes, sketching database schemas. It’s beautiful. It’s efficient. It’s everything you dreamed AI-assisted coding could be.

And then.

Allow Claude to run `npm install`? [y/n]

You press Enter.

Allow Claude to run `git status`? [y/n]

You press Enter.

Allow Claude to run `ls src/`? [y/n]

Enter. Enter. Enter. Enter. Enter.

By prompt #47, you’re not even reading anymore. You’re just… pressing Enter. Like a very tired seal at a circus act nobody asked for.

Here’s the thing: that permission system was designed to protect you. And instead? It’s training you to ignore it entirely.

Let’s fix that.

.

.

.

The Paradox Nobody Talks About

I want you to sit with this for a second—because it’s genuinely wild when you think about it.

Claude Code’s safety system was built with good intentions. Ask before every risky action. Sounds reasonable, right? Sounds responsible.

But here’s what actually happens in the wild:

A horizontal infographic titled "APPROVAL FATIGUE TIMELINE" in blue. It illustrates a four-hour process.

Hour 1: A blue progress bar is completely full. A magnifying glass with an eye icon is next to the text "Carefully reading prompts."

Hour 2: A green progress bar is about 60% full. A face with a bored, neutral expression icon is next to the text "Starting to skim."

Hour 3: An orange progress bar is about 30% full. A hand pressing a keyboard Enter key icon is next to the text "Reflexively pressing Enter."

Hour 4: A red progress bar is completely empty. A person with a blindfold icon is next to the text "Approving anything blindly."

Below the four hours, a wide red banner with a bold red "X" icon contains the white text: "Malicious postinstall script steals your SSH keys. You approved it."

The safety mechanism designed to protect you makes you less safe.

Anthropic’s own testing confirmed this. They call it “approval fatigue.” And their data showed developers hit it within the first hour of use.

(Within the first hour. Not after weeks of grinding. One. Hour.)

Sound familiar?

Yeah. I thought so.

.

.

.

The Fix: Boundaries, Not Babysitting

Here’s where Claude Code Sandbox comes in—and it flips the entire model on its head.

Instead of asking permission for every tiny thing (like an overly anxious intern double-checking if it’s okay to use the stapler), the sandbox draws clear boundaries upfront. Work freely inside them. Get blocked immediately outside them.

Think of it like giving Claude a room to work in—not the keys to the whole house.

Inside that room? Full autonomy. Zero prompts. Go nuts.

Outside that room? Blocked. Immediately. At the operating system level.

Two Invisible Walls

Here’s what the sandbox actually does:

A diagram illustrating a sandboxed environment for Claude. At the top, a section titled "YOUR SYSTEM (Restricted)" shows three red folders marked with a red 'X' and arrows pointing down: "~/.ssh/", "~/.aws/", and "~/.bashrc". These are blocked by a prominent orange barrier labeled "SANDBOX WALL" with padlock icons. Below the wall is a green section titled "YOUR PROJECT FOLDER (Sandboxed)" with arrows pointing up. It contains green folders and files marked with a green checkmark: "src/", "components/", "pages/", "package.json", "tsconfig.json", and "README.md". A green banner at the bottom reads "Claude works freely here" next to a small robot emoji. The diagram indicates that Claude can access the project folder but is prevented from accessing sensitive system files by the sandbox wall.

Wall 1: Filesystem Isolation

Claude can only read and write inside your project directory. Everything else—your SSH keys, AWS credentials, shell config—is invisible. Not just “blocked.” Invisible. Like it doesn’t exist. (Which, for Claude’s purposes, it doesn’t.)

Wall 2: Network Isolation

All network traffic routes through a proxy that only allows approved domains. npm install needs registry.npmjs.org? You approve it once. Some sketchy postinstall script tries to phone home to evil.com? Blocked. Immediately. No drama.

Why This Actually Works (And Why It’s Different)

Stay with me here—because this is the part that matters.

These aren’t application-level restrictions. They’re operating system enforced.

Infographic contrasting security enforcement layers: the "Application Layer" (shown as bypassable via prompt injection with a cracked shield) versus the "OS Kernel Layer" (shown as not bypassable using Linux Bubblewrap or macOS Seatbelt, with a padlock icon).

On Linux, Claude Code uses Bubblewrap—the same tech that powers Flatpak. On macOS, it’s Seatbelt—the same tech that restricts iOS apps.

This means even if a malicious prompt injection tricks Claude into trying to read your SSH keys… it physically cannot. The kernel blocks it. Full stop.

Prompt injection can’t bypass OS-level security.

That’s the whole point. That’s what makes this different from “please be good” security theater.

.

.

.

Quick Start: 5 Minutes to Actual Protection

Alright. Enough theory. Let’s get you set up.

Step 1: Enable Sandbox

In Claude Code, type:

/sandbox

Select Auto-allow mode.

This is the sweet spot: sandboxed commands run automatically, unsandboxed actions still prompt you. Best of both worlds.

Step 2: Create Your Config

Create ~/.claude/settings.json:

{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["docker", "docker-compose"],
    "allowUnsandboxedCommands": true,
    "network": {
      "allowLocalBinding": true
    }
  },
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  }
}

Step 3: Verify It’s Working

Run:

/permissions

You’ll see your active configuration.

Now test with a simple command:

> List files in the current directory

If it executes without prompting? Sandbox is working.

Infographic comparing "BEFORE (no sandbox)" where a user manually approves multiple npm commands with "Enter," versus "AFTER (with sandbox)" where the same npm commands run automatically and are marked with green checkmarks, completing without user intervention.

That’s it. OS-level protection with zero friction for normal work.

(I know, I know—it almost feels too easy. It’s not a trick. It just… works.)

.

.

.

Real-World Configurations You Can Steal

The basic setup handles most projects beautifully. But different stacks have different quirks.

Docker can’t run inside a sandbox. Dev servers need to bind ports. Private registries need network access. You know how it goes.

Here are three battle-tested configs. Find the one closest to your setup, copy-paste, adjust as needed.


Scenario 1: Web Development (Next.js, Vite, React)

The Problem: You run npm run dev inside sandbox and… nothing happens. On macOS, the sandbox blocks port binding by default. Your dev server can’t start. Cue frustration.

The Fix:

{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": [],
    "network": {
      "allowLocalBinding": true
    }
  },
  "permissions": {
    "allow": [
      "Bash(npm:*)",
      "Bash(npx:*)",
      "Bash(node:*)",
      "WebFetch(domain:registry.npmjs.org)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)"
    ],
    "ask": [
      "Bash(npm publish:*)",
      "Bash(git push:*)"
    ]
  }
}

What this does: allowLocalBinding: true fixes the macOS dev server issue. npm/npx/node commands run automatically (sandboxed). Your .env files stay invisible to Claude. And it still asks before publishing to npm or pushing to git—because those are the “are you really sure?” moments.

Zero prompts for normal work. Full protection. Still asks before the dangerous stuff.


Scenario 2: WordPress with Docker and wp-env

WordPress development is trickier. Tools like wp-env and docker-compose fundamentally don’t work inside a sandbox—Docker needs to talk to the Docker daemon through a Unix socket, and the sandbox blocks socket access.

The Fix:

{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": [
      "docker",
      "docker-compose",
      "wp-env"
    ],
    "network": {
      "allowLocalBinding": true
    }
  },
  "permissions": {
    "allow": [
      "Bash(php:*)",
      "Bash(composer:*)",
      "Bash(wp:*)",
      "WebFetch(domain:packagist.org)",
      "WebFetch(domain:wordpress.org)",
      "WebFetch(domain:api.wordpress.org)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./wp-config.php)",
      "Read(./wp-config-local.php)"
    ],
    "ask": [
      "Bash(docker:*)",
      "Bash(wp-env:*)"
    ]
  }
}

The trade-off: Docker runs unsandboxed. That’s less secure—I won’t pretend otherwise.

But here’s the thing: Docker commands still require your approval. And your actual code (PHP, composer, wp-cli) runs fully sandboxed. Claude never sees your wp-config.php with all those database credentials.

You’re protecting where it matters most.


Scenario 3: Maximum Paranoia Mode (Untrusted Code)

Reviewing a pull request from an unknown contributor? Auditing a dependency after a security advisory? This is when you want full lockdown.

The Config:

{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": false,
    "allowUnsandboxedCommands": false,
    "excludedCommands": [],
    "network": {
      "allowLocalBinding": false
    }
  },
  "permissions": {
    "allow": [],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Bash(curl:*)",
      "Bash(wget:*)",
      "Bash(nc:*)"
    ],
    "ask": [
      "Bash",
      "Edit",
      "WebFetch"
    ]
  }
}

What this does: Every command prompts—even sandboxed ones. No escape hatch. Common data exfiltration tools (curl, wget, nc) are explicitly blocked. Three walls, all OS-enforced.

Malicious README contains hidden instructions to steal your AWS credentials? Claude literally cannot read ~/.aws/. The kernel says no. End of story.

.

.

.

The YOLO Warning: Why This Actually Matters

Let me be direct with you for a second.

Running Claude Code without sandbox is genuinely risky. I’m not being dramatic—this is just the reality of how npm packages work.

Every npm package you install runs postinstall scripts with full access to your system. Every malicious prompt hidden in a README could trick Claude into reading your credentials. Every compromised dependency could phone home with your data.

“It probably won’t happen to me” is not a security strategy.

(It’s barely even a sentence.)

The Claude Code Sandbox isn’t paranoia. It’s basic hygiene. Like washing your hands. Like wearing a seatbelt. Like not storing passwords in a Google Doc called “passwords.txt.”

The 84% reduction in permission prompts? That’s nice. That’s a quality-of-life improvement. But the real win is protection that actually works—because it’s enforced at the kernel level, not just “Claude, please don’t do bad things.”

What Sandbox Doesn’t Protect

Let’s be honest about the limits, though. Sandbox protects your system files, SSH keys, AWS credentials, shell config, and network exfiltration.

It does not protect your project files from mistakes, defend against social engineering, or magically secure allowed domains.

The sandbox makes Claude safe to use autonomously. It doesn’t make you invincible.

👉 Use git. Review changes. Read prompts when they appear. (The ones that do appear now actually matter—which is kind of the whole point.)

.

.

.

Stop Configuring, Start Building

Here’s the thing about sandbox configuration:

every project is different. Next.js needs different settings than Django. WordPress with Docker needs different settings than a Python CLI tool.

Figuring out the right config for YOUR specific codebase? That’s tedious. That’s the kind of thing that makes you put it off until “later” (which, let’s be honest, means “never”).

So I built a tool to do it for you.

Introducing: Sandbox Architect

It’s a Claude Code skill that:

  1. Analyzes your codebase — Detects your stack, package managers, frameworks, Docker usage, sensitive files
  2. Asks smart questions — Only what it can’t figure out automatically
  3. Generates your config — Tailored to YOUR project, ready to paste

No more reading documentation. No more guessing which domains you need. No more discovering your config is wrong when commands fail at the worst possible moment.

Install Sandbox Architect:

/plugin marketplace add nathanonn/claude-skills-sandbox-architect

After adding the marketplace, the sandbox-architect skill will be available for installation and will help you configure sandbox settings for your projects.

That’s it.

Next time you start a project, just ask:

> Help me configure sandbox settings for this project

Done. Configured. Protected. Back to building.

.

.

.

Your Next Steps

  1. Run /sandbox and enable Auto-allow mode
  2. Create your ~/.claude/settings.json using one of the configs above
  3. Install Sandbox Architect for automatic configuration
  4. Never press Enter 50 times again

The Claude Code Sandbox isn’t just a feature—it’s a fundamental shift in how you work with AI coding assistants. Boundaries instead of babysitting. Protection that works because physics says so, not because we asked nicely.

What project are you going to secure first?

Drop a comment below—I’d love to hear what you’re building.

Now go make something.

11 min read The Art of Vibe Coding, Claude, WordPress Automation

Building WordPress Abilities API Extensions for Third-Party Plugins (SEO Edition)

In my previous post about internal linking, I promised to show you how to build WordPress Abilities API extensions for other people’s plugins.

Today, I’m delivering on that promise.

We’re staying in the SEO lane—updating meta titles, descriptions, focus keywords, image alt text, and Open Graph settings. You know. All the tedious stuff that makes SEO optimization feel like a part-time job nobody applied for.

To manage these settings, you need an SEO plugin. I’m using Rank Math.

Why Rank Math? Honestly? Because it’s what I use on my own site. No fancy reason—I’m showing you real projects I actually need. A bit of selfishness, sure. But that’s the deal I made with you.

.

.

.

The Problem That’s Been Nagging Me

Here’s my situation. (And I bet—I really bet—you’re in the same boat.)

I’ve been publishing newsletters for 28 consecutive weeks now.

Twenty-eight weeks of hitting “publish” and hoping—really hoping—the SEO gods would smile upon me. Twenty-eight weeks of telling myself I’d go back and optimize everything “later.”

You know how that goes.

The whole time, I believed good content would naturally attract readers. And to some extent? That’s true. But optimizing for SEO amplifies everything.

Here’s the thing:

Since I never focused on SEO before, going back to optimize all those posts is a mountain of work. The kind of mountain that makes you want to lie down, stare at the ceiling, and pretend the problem doesn’t exist.

(Sound familiar?)

Sure, I could subscribe to Rank Math Premium and use their bulk edit feature.

But then WordPress 6.9 introduced the WordPress Abilities API.

And suddenly—suddenly—we can hook our WordPress sites directly to AI agents via MCP.

So here’s what I’m building: a Rank Math extension that exposes SEO functionality through the WordPress Abilities API. Mass updates. AI-powered. Hands-free. The workflow is nearly identical to the internal linking plugin I built before. A few tweaks here and there—specific adjustments for extending someone else’s plugin.

Let me walk you through it.

.

.

.

Step 1: Brainstorming for Requirements

Every vibe coding project starts the same way for me: brainstorming requirements.

I use Claude web for this. Something about it works better for the back-and-forth Q&A sessions—the clarifying questions, the drilling down into what I actually want.

I start with a rough description of the plugin I need, then use my go-to prompt:

Claude web interface showing the initial brainstorming prompt for creating a Rank Math SEO abilities extension, requesting clarifying questions until 95% confident
PROMPT: Requirements for WordPress Abilities API SEO Extension
The Rank math WordPress plugin doesn't have REST API. Instead of building our own REST API, I want to use the latest abilities API from WordPress to create abilities for the Rank Math WordPress plugin. We are not building it on top of the Rank Math plugin. This is a standalone plugin. However, it does need the Rank Math plugin in order for it to work.

The abilities I'm thinking of are:

- Search posts, custom post types, pages (default: post) by keywords, categories, tags, custom taxonomies, id, author, date range, etc
- get post, custom post type, page (default: post) by id. This would retrieve the full content of the post including title, content, excerpt, featured image, taxonomies, author info, as well as Rank Math SEO data like focus keyword, meta title, meta description, and any other relevant SEO fields that Rank Math manages for that post.
- update the rank math seo data for a given post, custom post type, or page by id. This would include updating fields like focus keyword, meta title, meta description, schema settings, social media metadata, and any other SEO-related fields that Rank Math handles.

The main Rank Math plugin is located at: /Users/nathanonn/LocalSites/abilities-api/app/public/wp-content/plugins/seo-by-rank-math

You can read the codebase to understand how the main Rank Math plugin works.

Please use the "wp-abilities-api" skill to help you with any WordPress Abilities API related tasks.

The idea is to create a separate plugin that exposes a REST API for interacting with Rank Math SEO data using LLM via MCP server.

I want you to help me brainstorm for the requirements of this plugin. Focus on business logic and rules, user stories, and acceptance criteria. No need to include technical implementation details.
The Rank math WordPress plugin doesn't have REST API. Instead of building our own REST API, I want to use the latest abilities API from WordPress to create abilities for the Rank Math WordPress plugin. We are not building it on top of the Rank Math plugin. This is a standalone plugin. However, it does need the Rank Math plugin in order for it to work.

The abilities I'm thinking of are:

- Search posts, custom post types, pages (default: post) by keywords, categories, tags, custom taxonomies, id, author, date range, etc
- get post, custom post type, page (default: post) by id. This would retrieve the full content of the post including title, content, excerpt, featured image, taxonomies, author info, as well as Rank Math SEO data like focus keyword, meta title, meta description, and any other relevant SEO fields that Rank Math manages for that post.
- update the rank math seo data for a given post, custom post type, or page by id. This would include updating fields like focus keyword, meta title, meta description, schema settings, social media metadata, and any other SEO-related fields that Rank Math handles.

The main Rank Math plugin is located at: /Users/nathanonn/LocalSites/abilities-api/app/public/wp-content/plugins/seo-by-rank-math

You can read the codebase to understand how the main Rank Math plugin works.

Please use the "wp-abilities-api" skill to help you with any WordPress Abilities API related tasks.

The idea is to create a separate plugin that exposes a REST API for interacting with Rank Math SEO data using LLM via MCP server.

I want you to help me brainstorm for the requirements of this plugin. Focus on business logic and rules, user stories, and acceptance criteria. No need to include technical implementation details.

A few rounds of Q&A later, Claude compiles the full requirements:

Requirements document generated by Claude showing SEO Abilities for WordPress with table of contents including Plugin Overview, Ability Categories, Abilities List, and Business Rules sections

You can read the full requirements document here.

(I’m skipping the detailed brainstorming walkthrough this time. If you want the step-by-step breakdown, check my previous post—I covered the entire process there.)

.

.

.

Step 2: Project Folder Setup

Nothing glamorous here—but necessary.

VS Code file explorer showing wp-abilities-seo-extension project structure with .claude/skills folder containing build-insights-logger, mcp-builder, skill-creator, and wp-abilities-api skills, plus notes folder with requirements.md

I set up the project folder and install the wp-abilities-api skill.

I also installed three additional skills (optional, but useful):

  • build-insights-logger: Captures insights during the build so Claude Code learns from the process and avoids repeating mistakes
  • skill-creator: Creates new skills on the fly if needed
  • mcp-builder: In case I need to spin up an MCP server quickly

After that, I dropped the requirements into the notes/ folder and created a blank main plugin file (wp-abilities-seo-extension.php).

Ready to build.

.

.

.

Step 3: Build the Plugin with One Shot Prompt

Everything’s in place. Time to ask Claude Code to build the entire plugin.

One shot.

Yes, one prompt.

Sounds ambitious—maybe even reckless—but it works because the requirements are comprehensive and the wp-abilities-api skill handles the heavy lifting.

Claude Code terminal showing the initial prompt to build the plugin from scratch, referencing requirements.md, the wp-abilities-api skill, the build-insights-logger skill, and the Rank Math plugin location

Here’s the exact prompt:

Based on the requirements at @notes/requirements.md, please help me build the plugin from scratch.
Please use the "wp-abilities-api" skill to help you with any WordPress Abilities API related tasks.
Please use the "build-insights-logger" skill to automatically log meaningful insights, discoveries, and decisions during coding session.
The main Rank Math plugin is located at: /Users/nathanonn/Studio/wp-test/wp-content/plugins/seo-by-rank-math
You can read the codebase to understand how the main Rank Math plugin works.

Short prompt.

No novel required.

Why? Because everything Claude needs lives in the requirements document and the skills. The only addition: the Rank Math plugin location. Claude needs to read and understand the codebase of the plugin we’re extending.

That’s the critical piece for building third-party extensions. Point Claude at the source code.

I’m using Claude Code in Plan Mode with Opus 4.5. This lets it explore, research, and strategize before writing a single line of code.

Claude Code running two parallel Explore agents - one for exploring current project structure reading requirements.md, another for exploring Rank Math SEO structure, plus activating the wp-abilities-api skill

Claude fires up two explore agents in parallel:

  • One reads the project structure and requirements
  • One dives into the Rank Math codebase
Claude Code showing the Explore Rank Math SEO structure agent reading PHP files from the seo-by-rank-math plugin directory

Then it consults the wp-abilities-api skill to understand proper registration patterns:

Claude Code reading WordPress Abilities API documentation files including registering-abilities.md (444 lines), categories.md (100 lines), and error-handling.md (31 lines)

At this point, Opus 4.5 has a complete picture:

  1. The project state (empty plugin)
  2. Rank Math’s meta keys and helper functions
  3. WordPress Abilities API registration patterns

Time to plan.

Claude Code showing Plan agent completed with 28 tool uses and 95.5k tokens in 5m 18s, displaying implementation plan summary with architecture details, implementation order, and key patterns

The plan is comprehensive. Detailed architecture. Clear implementation phases. All thanks to Opus 4.5’s capabilities combined with thorough requirements.

Claude's implementation plan showing overview of 10 abilities across 3 categories, provider-based architecture, and detailed directory structure with src folder containing Plugin.php, AbilityRegistrar.php, Settings.php, and subfolders for Providers, Abilities, Services, and Errors
Plan details showing Rank Math Meta Keys table mapping SEO fields to meta keys, and Implementation Phases from Phase 1 (Core Infrastructure) through Phase 4 (SEO Meta Abilities) with numbered file list

I agreed to the plan. Implementation begins.

Claude Code starting implementation after plan approval, activating build-insights-logger skill, creating composer.json with PSR-4 autoloading, showing file contents being written

(The full build process is Claude generating codes while I drink coffee. Nothing riveting to watch.)

This is the part where I’d normally tell you to go make a sandwich.

But you won’t need to.

Less than 6 minutes later: Opus 4.5 completes the build.

Six minutes.

For a complete WordPress Abilities API plugin.

Stay with me here.

Claude Code build completion summary showing 21 PHP files created across Core Infrastructure, Provider Layer, Services, Error Handling, and 10 Abilities, with testing instructions via WP-CLI and REST API

21 PHP files. Core infrastructure. Provider layer. Services. Error handling. All 10 abilities implemented.

Because I included the build-insights-logger skill in my prompt, Claude captured every key decision and discovery during development:

Claude Code writing 72 lines of insights to session log file, showing architecture insight about Provider-based SEO Plugin Abstraction with ProviderInterface defining contracts and RankMathProvider implementing Rank Math-specific logic

These insights become documentation.

Learning material for the next build.

.

.

.

Step 4: Test the Plugin with Claude Code

Build complete.

But before we pop any champagne (or, you know, instant coffee)—we test.

Claude Code terminal showing test prompt asking to activate and test the plugin via REST API, verify MCP discovery shows all 10 abilities, and test error handling with invalid post IDs

Here’s my testing prompt:

Please activate & test out the plugin:
- Test all the abilities via REST API. Example endpoint:
    `GET /wp-json/wp-abilities/v1/seo-abilities/get-seo-meta/run?input[post_id]=1`
- Verify that the MCP discovery shows all 10 abilities correctly.
- Test error handling by providing invalid post IDs and ensuring that the plugin responds appropriately.
Please use the "wp-abilities-api" skill to help you with any WordPress Abilities API related tasks.
Please use the "build-insights-logger" skill to automatically log meaningful insights, discoveries, and decisions during coding session.
You have access to WP-CLI commands to help you with the development and troubleshooting.

Three focus areas:

  1. Test abilities via REST API
  2. Verify MCP discovery shows all 10 abilities
  3. Test error handling with invalid inputs

Claude runs through the tests:

Claude Code executing REST API tests in parallel using curl commands to test get-seo-meta, get-social-meta, get-seo-score, get-post-images, and other ability endpoints

(Again, nothing thrilling here. Claude does the work. I watch with my coffee.)

Test results come in:

Test completion summary showing all 10 abilities working with green checkmarks, including get-seo-meta, update-seo-meta, get-social-meta, bulk operations, and error handling verification

All 10 abilities working. MCP discovery correct. Error handling validated.

The summary shows exactly what each ability does and any notable behaviors.

.

.

.

Step 5: Use Test Results for Improvements

Tests passed.

But—and this is important—passing tests doesn’t mean perfect code.

I asked Opus 4.5 to analyze the test results and suggest improvements:

Claude Code prompt in plan mode asking to identify areas needing improvement or further testing based on test results, and come up with a plan to address them
Based on your test results, identify the areas that may need improvement or further testing, and come up with a plan to address them.

Claude explores the codebase again, this time hunting for edge cases and potential issues:

Claude Code showing two Explore agents finished examining permission/error handling and image abilities, creating improvement plan, and asking clarifying question about handling orphaned images

It found several areas to improve:

  • Permission callback consistency
  • Image validation for orphaned images (HTML references to non-existent attachments)
  • Output schema enhancements

Claude even asked a clarifying question about handling orphaned images. (I chose the recommended option: add new fields to distinguish orphaned images while preserving the original reference ID for debugging.)

Improvements implemented:

Implementation summary showing changes made to AbilityRegistrar.php (permission callbacks), ImageService.php (attachment validation), and GetPostImagesAbility.php (output schema), with test results showing all improvements working including 29 orphaned images detected

The changes:

  1. Permission Callbacks: Changed 7 abilities from check_edit_post_permission to check_edit_posts_permission for better error handling
  2. Image Validation: Added attachment existence validation, new is_orphaned and referenced_id fields for orphaned images
  3. Output Schema: Added images_orphaned count to the get_post_images return data

All verified with fresh tests. 29 orphaned images detected correctly on my site. The schema updates reflected in MCP discovery.

.

.

.

Step 6: Put the Plugin to Work

Everything’s built and tested.

Now comes the fun part—actually using it.

The process mirrors what we did with the internal links plugin. First, install the MCP Adapter plugin into your WordPress site.

WordPress plugins page showing MCP Adapter plugin version 0.1.0 by WordPress.org Contributors, with description "Adapter for Abilities API, letting the abilities to be used as MCP tools, resources or prompts"

(You can download the MCP Adapter from their GitHub releases page.)

With the adapter active, I asked Claude what abilities my WordPress site has:

Claude Code response showing 10 SEO abilities available across three categories - SEO Meta Management (get-seo-meta, update-seo-meta, bulk-update-seo-meta), Social Media Meta (get-social-meta, update-social-meta), SEO Analysis (get-seo-score, find-posts-with-seo-issues), and Image Optimization (get-post-images, update-image-alt-text, bulk-update-image-alt-text)

All 10 abilities visible. Three categories. Ready to go.

Now for the moment of truth—the reason I built this whole thing in the first place.

I asked Claude to optimize SEO for a specific post:

Claude Code prompt in plan mode asking to optimize post ID 1557 for SEO, scanning content and current setup first, then proposing improvements within available abilities
I want to optimize my post for SEO (ID: 1557). First, scan the post to understand its content and current SEO setup. Then, propose improvements that fall within your abilities.

Claude immediately starts gathering data. Multiple abilities firing in parallel:

Claude Code executing four MCP abilities in parallel - get-seo-meta, get-social-meta, get-seo-score, and get-post-images - all returning success with data for post ID 1557

Four abilities. One request. All the SEO data I need.

Here’s what Claude found—and honestly, it stings a little to share this:

Current SEO Status table showing post "My App Looked Like Everyone Else's Until I Discovered This Claude Skill Trick" with SEO Score 33/100 (Poor), title too long at 82 characters, description too long at 202 characters, missing keyword in title, social meta empty, and 3 images all missing alt text

The diagnosis:

  • SEO Score: 33/100 (Poor)
  • Title: 82 characters (max recommended: 60)
  • Description: 202 characters (max: 160)
  • Keyword in title: Missing
  • Social meta: Completely empty
  • Images: 3 total, 0 with alt text

Ouch.

But also? Exactly why I built this plugin.

Claude analyzed the issues and proposed a complete optimization plan:

SEO Optimization Plan Summary showing current vs proposed fixes - SEO Title shortened from 82 to 58 chars with keyword, Meta Description from 202 to 153 chars, Social Meta to be configured, and three images with proposed descriptive alt text. Expected result: SEO score improvement from 33 to 80+

The plan covers everything: shorter title with keyword, trimmed description, Facebook/Twitter metadata, and contextual alt text for all three images.

Expected result: SEO score from 33 → 80+.

I approved. Claude executed:

Claude Code executing update-seo-meta and update-social-meta abilities via MCP, setting new SEO title "Claude Skill Design System: Create Reusable Frontend Styles" and description, plus Facebook and Twitter metadata
Claude Code updating image alt text individually for three attachments - financial dashboard image (ID 1575), Claude Code terminal screenshot (ID 1576), and dashboard design variants (ID 1577) - after bulk update failed

Interesting note: the bulk image update failed, so Claude adapted and updated each image individually. Problem-solving on the fly.

SEO Optimization Complete summary showing before/after comparison - SEO Title from 82 chars to 58 chars with keyword, Description from 202 to 153 chars with keyword, Social Meta now configured, Images with Alt Text from 0/3 to 3/3. All 5 SEO tests now pass (previously: 1 pass, 3 warnings, 1 fail)

Results summary:

MetricBeforeAfter
SEO Title82 chars (too long, no keyword)58 chars ✅ with keyword
Meta Description202 chars (too long, no keyword)153 chars ✅ with keyword
Social MetaEmptyFacebook & Twitter configured ✅
Images with Alt Text0/33/3 ✅

All 5 SEO tests now pass. Previously: 1 pass, 3 warnings, 1 fail.

Let me verify in the WordPress admin:

Rank Math SEO panel in WordPress showing SEO score improved to 71/100, with preview displaying new title "Claude Skill Design System:..." and description, focus keyword "claude skill design system" set and highlighted

SEO score: 71/100.

Not quite the 80+ the plan aimed for—but jumping from 33 to 71? I’ll take it.

Especially considering I did nothing except approve a plan.

Rank Math Preview Snippet Editor showing General tab with optimized title "Claude Skill Design System: Create Reusable Frontend Styles" at 59/60 characters, permalink, and description at 152/160 characters with visual length indicators

The snippet preview shows proper character counts. Title at 59/60. Description at 152/160. Both in the green zone.

And the images:

WordPress block editor showing financial dashboard image with Image settings panel displaying alt text "Smashing Advantage financial dashboard with dark theme showing income, expenses, profit metrics and charts"
WordPress block editor showing Claude Code terminal screenshot with Image settings panel displaying alt text "Claude Code terminal invoking frontend-design skill to explore dashboard implementation"
WordPress block editor showing dashboard design variants image with Image settings panel displaying alt text "Five dashboard design variants generated by Claude Skill: Neo-Brutalist, Glass Aurora, Editorial Mono, Warm Minimal, and Dark Command"

All three images now have descriptive, contextual alt text. Claude understood what each image showed and wrote appropriate descriptions.

.

.

.

Try It Yourself

Want to run this on your own site?

  1. Download the plugin: https://github.com/nathanonn/wp-abilities-seo-extension/releases/download/v1.0.0/wp-abilities-seo-extension-latest.zip
  2. Install the MCP Adapter: Grab it from the GitHub releases page
  3. Follow the setup instructions: Check the README for configuration details
  4. Connect Claude Code (or any MCP-compatible AI agent)
  5. Start optimizing

If you want to extend the plugin further—maybe add content analysis, FAQ generation, or schema markup—fork the repo:

github.com/nathanonn/wp-abilities-seo-extension

.

.

.

What We Built (And What It Means)

Let’s zoom out for a second.

In under 6 minutes of build time, we created a WordPress plugin that:

  • Exposes 10 SEO abilities through the WordPress Abilities API
  • Integrates with Rank Math (with architecture ready for Yoast, AIOSEO, etc.)
  • Lets AI agents read, analyze, and update SEO settings
  • Handles bulk operations for mass optimization
  • Manages image alt text across your entire content library

The real unlock?

Your WordPress site now speaks MCP.

Any AI agent—Claude Code, custom bots, automation pipelines—can now optimize your SEO programmatically. No clicking through admin panels. No manual data entry. No tedious bulk editing. You describe what you want. The AI executes using the abilities you’ve exposed through the WordPress Abilities API.

This is the promise of WordPress 6.9’s Abilities API.

And we’re just scratching the surface.

.

.

.

What’s Next?

Two plugins down. Both solving real problems I face on my own site.

The pattern works:

  1. Brainstorm requirements with Claude
  2. Set up project with the right skills
  3. One-shot build with comprehensive prompt
  4. Test and iterate
  5. Deploy and use

For extending third-party plugins, add one step: point Claude at the source code.

Remember those 28 weeks of newsletters I mentioned at the start? The mountain of SEO work that made me want to lie down and stare at the ceiling?

It’s not a mountain anymore.

It’s a checklist. And I have an AI agent with a pen.

What tedious WordPress task are you going to automate next?

The WordPress Abilities API is waiting.

Go build something.

9 min read The Art of Vibe Coding, Claude, WordPress Automation

I Built an AI-Powered Internal Links Plugin Using WordPress 6.9’s Abilities API and Claude Code

You know that thing where you’ve got 47 browser tabs open?

Not because you’re researching anything profound. No. You’re just trying to find that one post you wrote six months ago—the one about WooCommerce setup, or was it the product pages tutorial?—because you need to link to it from the article you’re publishing today.

Tab after tab after tab. Command+F. Scroll. Squint. Copy URL. Switch back. Find the right words to anchor. Paste. Format.

Thirty minutes later, you’ve added three internal links.

Three.

And honestly? They’re probably not even the best ones.

Here’s the thing: I’ve been that person. Staring at a perfectly good 2,000-word post with zero internal links, knowing full well that Google loves them, readers need them, and my inner SEO voice won’t shut up about it.

So I built something.

And what I discovered about WordPress 6.9’s new Abilities API might just change how you think about your entire site.

Stay with me.

.

.

.

The Problem Nobody’s Actually Solving

Let’s be honest about what’s out there right now.

  • Manual linking eats 10-30 minutes per post. That’s not a workflow—that’s a hostage situation.
  • Keyword-based plugins spray links everywhere like a toddler with a garden hose. “AI” gets linked to “AirAsia.” I wish I were joking.
  • Regex matching sounds smart until it isn’t. It matches strings. It doesn’t understand meaning. Big difference.
  • Context blindness is the real killer. These tools can’t tell the difference between your Gutenberg tutorial and your post about WordPress editor basics—even though they’re obviously related.

The existing solutions are solving the wrong problem.

They’re trying to match strings when they should be understanding meaning.

And then WordPress 6.9 launched on December 2nd, 2025.

Buried in the release notes was something called the Abilities API. Most developers scrolled right past it.

I didn’t.

.

.

.

The Discovery That Changed Everything

What happens when you combine WordPress’s new Abilities API with Claude Desktop and an MCP server?

Magic. Actual magic.

(Okay, not actual magic. But close enough that I did a little chair dance when it worked.)

Instead of regex patterns hunting for keywords, I created abilities that do something radical—they think.

  • Search posts semantically. When you write about “selling products online,” it finds your WooCommerce setup guide. Because it understands what you mean.
  • Analyze content context. It knows your Gutenberg blocks tutorial relates to your WordPress editor basics post. Not because of keywords. Because of meaning.
  • Add links intelligently. Places them where readers actually need them—not just where a keyword appears.
  • Validate links automatically. Checks if targets still exist. No more embarrassing 404s hiding in your archive.

The kicker?

AI decides where to place links based on actual content understanding.

Not keywords. Not patterns. Understanding.

.

.

.

Building the Plugin: From Idea to Production

Here’s where it gets fun.

I’m going to walk you through exactly how I built this—from brainstorming to a working plugin with 9 abilities. The whole journey took about 3 hours.

(Three hours! To build something that would’ve taken weeks the traditional way. I’m still a little giddy about it.)

Phase 1: Getting Clear on What I Actually Wanted

I started in Claude Web with my wp-abilities-api skill loaded.

No documentation hunting. No API reference rabbit holes. Claude already knew the patterns.

Brainstorming prompt describing five abilities for internal linking: search posts, get post, add/update/remove internal links, validate links, and generate reports
PROMPT: Abilities API requirements brainstorming
I want to use the latest abilities API from WordPress to create abilities to add / update / remove internal links for posts.

The abilities I'm thinking of are:

-   Search posts, custom post types, pages (default: post) by keywords, categories, tags, custom taxonomies, id, author, date range, etc
-   get post, custom post type, page (default: post) by id. This would retrieve the full content of the post including title, content, excerpt, featured image, taxonomies, author info for that post.
-   add / update / remove internal links in a post, custom post type, page (default: post) by id. This would involve specifying the source post id, target post id, anchor text, and link attributes (like nofollow, target blank, etc).
-   validate internal links to ensure they point to existing posts, custom post types, or pages within the WordPress site.
-   generate a report of all internal links within a specific post, custom post type, or page (default: post), including broken links, link attributes, and anchor texts.

Please use the "wp-abilities-api" skill to help you with any WordPress Abilities API related tasks.

The idea is to create a plugin that exposes a REST API for adding, updating, and removing internal links using LLM via MCP server.

I want you to help me brainstorm for the requirements of this plugin. Focus on business logic and rules, user stories, and acceptance criteria. No need to include technical implementation details.
I want to use the latest abilities API from WordPress to create abilities to add / update / remove internal links for posts.

The abilities I'm thinking of are:

-   Search posts, custom post types, pages (default: post) by keywords, categories, tags, custom taxonomies, id, author, date range, etc
-   get post, custom post type, page (default: post) by id. This would retrieve the full content of the post including title, content, excerpt, featured image, taxonomies, author info for that post.
-   add / update / remove internal links in a post, custom post type, page (default: post) by id. This would involve specifying the source post id, target post id, anchor text, and link attributes (like nofollow, target blank, etc).
-   validate internal links to ensure they point to existing posts, custom post types, or pages within the WordPress site.
-   generate a report of all internal links within a specific post, custom post type, or page (default: post), including broken links, link attributes, and anchor texts.

Please use the "wp-abilities-api" skill to help you with any WordPress Abilities API related tasks.

The idea is to create a plugin that exposes a REST API for adding, updating, and removing internal links using LLM via MCP server.

I want you to help me brainstorm for the requirements of this plugin. Focus on business logic and rules, user stories, and acceptance criteria. No need to include technical implementation details.

My initial prompt was simple: I want to create abilities for managing internal links.

Claude came back with targeted questions. Not generic ones—targeted.

Claude reading WordPress Abilities API skill documentation and presenting 12 clarifying questions about post types, editor support, and implementation approach

My answers to Claude’s questions:

User answering Claude's questions with choices like "1/c" for configurable post types, "2/a" for API-only, "3/c" for both Gutenberg and Classic editor support

Notice what’s happening here. Each answer shaped the architecture. No guessing. No over-engineering. No building features I’d never use.

After a few rounds, Claude produced a comprehensive requirements document:

Requirements document showing plugin name "Internal Links API", ability namespace "internal-links-api", core principles including LLM-First Design and Editor-Aware architecture

The key architectural decisions that emerged:

  • LLM-First Design — All abilities optimized for AI consumption via MCP. Because that’s the whole point.
  • Editor-Aware — Handles Gutenberg blocks vs Classic Editor automatically. No more “works in one, breaks in the other.”
  • Permission-Based — Respects WordPress capabilities system. Because security isn’t optional.
  • Operation-Focused — The plugin handles CRUD operations. AI handles the intelligence. Clean separation.

Phase 2: Letting Claude Code Do the Heavy Lifting

With requirements locked, I opened VS Code and set up my workspace:

VS Code project structure showing abilities-api-internal-links folder with skills including wp-abilities-api, mcp-builder, skill-creator, and requirements.md in notes folder

The setup was deliberate.

wp-abilities-api skill installed. Build-insights-logger to capture discoveries. Requirements document in the notes folder. Clean plugin directory ready to go.

Then I triggered Claude Code with plan mode:

Terminal prompt asking Claude Code to build the plugin from scratch using wp-abilities-api skill and build-insights-logger, with WP-CLI access mentioned
PROMPT: Build Plugin From Scratch
Based on the requirements at @notes/requirements.md, please help me build the plugin from scratch.

Please use the "wp-abilities-api" skill to help you with any WordPress Abilities API related tasks.

Please use the "build-insights-logger" skill to automatically log meaningful insights, discoveries, and decisions during coding session.

You have access to WP-CLI commands to help you with the development.
Based on the requirements at @notes/requirements.md, please help me build the plugin from scratch.

Please use the "wp-abilities-api" skill to help you with any WordPress Abilities API related tasks.

Please use the "build-insights-logger" skill to automatically log meaningful insights, discoveries, and decisions during coding session.

You have access to WP-CLI commands to help you with the development.

Watch what happened next.

Claude Code reading requirements (975 lines) and exploring current plugin state, showing "wp-abilities-api skill is running" with incubating status

Claude Code immediately read the requirements document, explored the current plugin state, activated the wp-abilities-api skill automatically, and studied the API documentation patterns.

Claude Code reading WordPress Abilities API documentation files including registering-abilities.md, categories.md, and error-handling.md

Then came clarifying questions.

Even Claude Code wanted to be sure:

Interactive prompt showing Claude Code asking about PHP autoloading (Composer PSR-4), implementation approach (all at once), and testing strategy (no tests initially)

Three critical decisions:

  • Autoloading: Composer PSR-4. The professional standard.
  • Implementation: All 9 abilities at once. Comprehensive from the start.
  • Testing: No unit tests initially. Faster iteration. (We can add tests later. Don’t @ me.)
Implementation plan summary showing 9 abilities to implement, core services like LinkParserService and LinkModifierService, and technical approach using DOMDocument

The plan was complete. Nine abilities. Core services. Professional architecture.

And I hadn’t written a single line of code yet.

Phase 3: Watching the Build Happen

Claude Code creating composer.json and main plugin file, showing green progress indicators for file creation

Here’s what fascinates me—Claude Code used WP-CLI to test in real-time:

WP-CLI command executing add-link ability with parameters for source post ID 1, target post 915, anchor text "WordPress", showing test execution in progress

Real post IDs. Real execution. Real validation.

WP-CLI testing get-link-report ability showing successful link report generation with internal links found and validated

Every ability got tested. No assumptions. No “it should work” moments.

Just… working code.

.

.

.

The Final Result: 9 Abilities, One Plugin

Plugin structure tree showing main plugin file, composer.json, src folder with Plugin.php, AbilityRegistrar.php, Settings.php, 9 Ability classes, Services folder, and Schemas folder
Table continuation showing key features including Editor-aware handling, Permission-based access, Post lock support, MCP-ready status, and REST API enabled

Here’s what we built:

9 Registered Abilities:

  • Read operations: search-posts, get-post, validate-links, get-link-report
  • Write operations: add-link, update-link, remove-link
  • Batch operations: batch-add-links, batch-remove-links

The features that matter:

  • Editor-aware — Properly handles Gutenberg blocks AND Classic Editor. Finally.
  • Permission-based — Uses WordPress capabilities (read, read_post, edit_post). Your site stays secure.
  • Post lock support — Respects WordPress post editing locks. No stepping on collaborators’ toes.
  • MCP-ready — All abilities exposed via mcp.publicapi=true. AI can actually use them.
  • REST API enabled — Available via REST endpoints for whatever else you dream up.

.

.

.

The Real Test: Can AI Actually Use This?

The plugin was built. The abilities were registered.

But could AI actually use them?

Time to find out.

Setting Up the Bridge

First, I installed the MCP Adapter plugin. This brilliant piece of engineering transforms WordPress abilities into MCP tools that AI can trigger.

WordPress plugins page showing MCP Adapter version 0.1.0 activated with description "Adapter for Abilities API, letting the abilities to be used as MCP tools, resources or prompts"

The setup took 2 minutes. Two.

mcp.json configuration file with wordpress-http-default server settings including WP_API_URL pointing to localhost:8882, admin username, and API password

When I opened Claude Code, it immediately detected the MCP server:

Claude Code notification showing "New MCP server found in .mcp.json: wordpress-http-default" with options to use the server or continue without it

The Moment of Truth

I started simple: “What kind of abilities does my WordPress site have?”

Terminal prompt asking "what kind of abilities my WordPress site have?"

Claude Code triggered the discover-abilities tool:

Claude Code response showing a table of 9 abilities split into Read Operations (search-posts, get-post, validate-links, get-link-report) and Write Operations (add-link, update-link, remove-link, batch-add-links, batch-remove-links) with descriptions

All 9 abilities. Ready. Waiting.

Autonomous Internal Linking in Action

I grabbed a post from my site—an article about Claude Skills with zero internal links.

Post ID: 1557.

I asked Claude Code to scan the post, search for related content, and add internal links.

Terminal showing the prompt to add internal links to post 1557

Here’s what happened.

Step 1: Reading the post

Tool use notification showing Claude Code executing "internal-links-api/get-post" with post_id 1557

Claude read the entire post. Understood it was about Claude Skills, design systems, and creating reusable components.

Step 2: Searching for relevant content

Tool use showing search-posts ability being called with keyword "Claude" and per_page limit of 20

26 related posts found. But Claude didn’t just grab random matches.

Step 3: Intelligent link selection

Table showing 5 selected internal links with columns for Anchor Text, Target Post, and Rationale - including links for "Claude Skills", "Claude Code", "component library", and "reusable forever"

Look at those choices:

  • “Claude Skills” → Links to Part 1 intro article
  • “Claude Code” → Links to tips article for tool mastery
  • “component library” → Connects to Part 3 about mastering libraries
  • “reusable forever” → Points to Part 2 about code reusability

Each link made semantic sense. No keyword stuffing. No forced matches. Just… relevance.

Step 4: Applying the links

Terminal showing batch-add-links ability being executed with 4 link objects containing anchor text, target post IDs, and occurrence settings

One API call. Four links inserted.

Summary table showing 4 links added with their anchor texts, target posts, and URLs, plus explanations of why each link was chosen based on content relevance

The Results

I opened my post in the WordPress editor.

There they were:

The transformation:

Before: 0 internal links, isolated content

After: 4 contextually perfect internal links

Time taken: Less than 2 minutes

Human effort: One prompt

But here’s what really got me.

Claude understood that when I mentioned “component library” in the context of ShadCN UI, it should link to my article about mastering libraries in Claude Skills.

When I wrote “reusable forever” about turning code into superpowers, it linked to Part 2 of my Claude Skills series—which is literally about that exact topic.

No regex could do this. No keyword matching could understand this context.

This is what the WordPress Abilities API makes possible.

.

.

.

What We Built (The Recap)

Let’s step back for a second:

  1. Brainstormed requirements with Claude using the wp-abilities-api skill
  2. Built the plugin with Claude Code in plan mode—9 abilities, full architecture
  3. Connected via MCP to enable AI-powered internal linking
  4. Tested with real content—AI understanding context and applying relevant links

The entire journey: 3 hours.

The result: A production-ready plugin that fundamentally changes how WordPress handles internal linking.

.

.

.

Why This Actually Matters

Remember the old way?

  • Manual linking: 30 minutes to add 5-10 links
  • Keyword plugins: Spam with irrelevant matches
  • Zero context: No understanding of content meaning

Now?

  • AI-powered linking: Less than 2 minutes for contextually perfect links
  • Semantic understanding: Links based on actual meaning
  • Full automation: One prompt, complete results

The WordPress Abilities API combined with AI doesn’t just save time.

It changes what’s possible.

.

.

.

Your Turn

Ready to try this yourself?

Get the Internal Links Plugin

Step 1: Install the MCP Adapter first

Step 2: Grab the Internal Links API plugin

Step 3: Connect Claude Code, Claude Desktop, Cursor, VS Code—or any platform that connects to MCP servers—and let AI handle your internal linking

Build Your Own Abilities Plugin

Want to create custom abilities for your WordPress site?

The wp-abilities-api skill is your secret weapon.

Get it from: https://github.com/nathanonn/claude-skills-wp-abilities-api

  • For Claude Code users: Install directly from the Claude plugin marketplace. Search for “wp-abilities-api” and click install.
  • For Claude Web users: Download the wp-abilities-api.skill file from the repo and upload it as a custom skill.

The skill contains complete API documentation, code patterns and examples, error handling guides, and best practices for MCP integration.

.

.

.

What’s Next

Here’s the thing about WordPress plugins…

Most have zero REST API. No endpoints. No abilities. No way for AI to communicate with them.

Next week, I’ll show you how to build WordPress Abilities API wrappers for other people’s plugins.

Imagine AI controlling:

  • Your SEO plugin.
  • Your forms plugin.
  • Your membership system.
  • Your page builder.

Any plugin. Any functionality. All accessible to AI.

The WordPress repository has 60,000+ plugins. Maybe 100 have proper APIs.

That’s 59,900 opportunities waiting.

What plugin will you make AI-compatible?

Go build.

13 min read The Art of Vibe Coding, Claude

My App Looked Like Everyone Else’s Until I Discovered This Claude Skill Trick

Here’s a confession…

My accounting app was giving me existential dread.

Not because of the numbers.

(Well, okay, sometimes because of the numbers.)

But because every time I opened it, I felt like I was staring at the digital equivalent of beige wallpaper.

You know that feeling, right? When your app works perfectly but has all the personality of a doctor’s waiting room?

Mine tracked profit and loss beautifully. Managed transactions like a champ. Did everything an accounting app should do. It was built with ShadCN UI—that clean, functional, utterly forgettable component library that makes every SaaS tool look like it came from the same factory.

It was the IKEA furniture of web apps.

Gets the job done.

Zero personality.

(Sorry, IKEA. I still love your chicken wings.)

.

.

.

Here’s the thing: I needed something that felt like mine.

Something with actual personality.

Something that made number-crunching feel less like detention and more like… well, still accounting, but prettier accounting. The kind where you actually want to open the app instead of avoiding it like that one friend who only calls when they need help moving.

Redesigning an entire app though?

That’s like deciding to repaint your house yourself.

Sounds doable until you’re standing there with a brush, realizing you need to paint Every. Single. Room. Every. Single. Wall. And somehow make them all match.

Unless…

(Stay with me here.)

What if you could redesign ONE room, capture that exact paint color and technique, then magically apply it everywhere else?

That’s exactly what I did with Claude Skills.

And friend, it changed everything.

.

.

.

The Thing We Don’t Talk About: Generic Design Syndrome

my-existing-dashboard-design-shadcn-ui

Look familiar?

That screenshot is my accounting dashboard.

Could be yours. Could be literally anyone’s. It’s the starter home of SaaS designs—functional, affordable, and identical to every other one on the block.

It’s not bad.

It’s just… there.

Like elevator music. Like hotel art. Like those conversations where someone asks “how are you?” and you say “fine” even though you’re absolutely not fine because your app looks like it was designed by a committee of robots who’ve never felt joy.

(Too dramatic? Maybe. But you’re still reading, aren’t you?)

Here’s the choice every developer faces—and it’s a lousy choice:

  1. Use a component library → Fast to build, looks like everyone else’s
  2. Design from scratch → Unique, but requires the time commitment of a second mortgage
  3. Hire a designer → Professional, costs more than your monthly coffee budget (and that’s saying something)

But wait.

There’s a door number four that nobody talks about.

What if you could create a design system once—just once—turn it into a Claude Skill, and apply it everywhere automatically?

Let me show you how.

(Spoiler: It takes less time than your last Zoom call.)

.

.

.

Step 1: Let Claude Show You What’s Possible (5 Minutes)

I opened Claude Code and pointed it at my sad, slate dashboard.

The key move?

I used the frontend-design skill (you can download it from here) and asked for 5 completely different HTML variants.

Not tweaks. Not “make the blue slightly bluer.”

I wanted personality. Drama. Something that would make my accountant jealous.

(Do accountants get jealous of app designs? Let’s say yes.)

Claude Code activating the frontend-design skill

Claude Code immediately understood the assignment:

Look at these descriptions—each one a different personality:

  • Neo-Brutalist: Like your app went to art school and came back wearing all black
  • Glass Aurora: What happens when the Northern Lights become a UI (dreamy!)
  • Editorial Mono: The New Yorker meets your dashboard
  • Warm Minimal: Like a hygge hug for your data
  • Dark Command: For when you want to feel like you’re hacking the Matrix while doing expense reports

Five completely different vibes.

From one prompt.

It’s like speed-dating for design systems. (Is that a thing? It should be a thing.)

variant-1 - Neo-Brutalist design
variant-1 – Neo-Brutalist design
variant-2 – Glass Aurora design
variant-3 - Editorial Mono design
variant-3 – Editorial Mono design
variant-4 - Warm Minimal design
variant-4 – Warm Minimal design
variant-2 - Glass Aurora design
Variant-5 – Dark Command design

Each one broke free from that typical AI-generated aesthetic we all recognize. You know the one—like someone asked a robot to paint a sunset.

I fell hard for the Glass Aurora variant.

Yes, it had that slightly AI-ish glassmorphism thing happening.

But those aurora gradients?

Chef’s kiss.

It was like my dashboard went to Iceland and came back enlightened.

.

.

.

Step 2: Make It Yours (2 Minutes of Pure Joy)

The Glass Aurora design only came in dark mode.

But I needed both themes because I’m one of those people who switches to light mode at 6 AM like a responsible adult.

(I switch back to dark mode by lunch. We all have our limits.)

Requesting light mode version of the Glass Aurora variant

Claude Code didn’t just invert the colors like a lazy Instagram filter:

Claude Code creating the light mode version with details about the changes

Look at that attention to detail:

  • Soft gradients from slate to purple/teal (not harsh, not boring)
  • White glass panels with 60-75% opacity (visible but not overwhelming)
  • Pastel backgrounds that don’t burn your retinas
  • Subtle gradient borders for depth (the devil’s in the details, friend)

Perfect.

I had my design.

Now here’s where most people would start the tedious work of manually copying styles across 47 different components.

Don’t be most people.

.

.

.

Step 3: Turn Your Design Into Documentation (10 Minutes That Save Your Life)

I switched to Claude Web (it’s better for this documentation dance) and attached both HTML files:

Claude Web interface with two HTML files attached - dashboard.html and dashboard-light.html

My request was specific.

(Specificity is your friend here. Vague requests get vague results. It’s like ordering “food” at a restaurant.)

PROMPT: Generate Complete Design System Documentation from HTML Files
I need you to analyze the attached HTML files and create two comprehensive design system documents:

### Document 1: Complete Design Guidelines (Markdown)
### Document 2: Interactive Reference Style Guide (HTML)

## Requirements for Both Documents

### Analysis Phase
First, thoroughly analyze ALL attached HTML files to extract:
1. **All CSS variables and design tokens** (colors, spacing, shadows, radius, etc.)
2. **All typography patterns** (font families, sizes, weights, line heights)
3. **All component patterns** (buttons, cards, forms, navigation, etc.)
4. **All layout patterns** (grids, containers, multi-column layouts)
5. **All utility classes** (margins, padding, text alignment, colors)
6. **All interaction patterns** (hover states, transitions, animations)
7. **Responsive breakpoints and mobile patterns**
8. **Naming conventions and prefixes used**

---

## Document 1: Design Guidelines (Markdown)

Create a comprehensive markdown file named `design-guidelines-complete.md` that includes:

### 1. Introduction Section
- **Design Philosophy**: Extract and articulate the design principles evident in the HTML
- **Key Characteristics**: What makes this design system unique
- **When to Use**: Guidance on appropriate use cases

### 2. Design Tokens
Complete CSS variable documentation with:
```css
:root {
    /* Extract ALL CSS variables from the HTML files */
    /* Group by category: colors, spacing, radius, shadows, etc. */
    /* Include comments describing each token */
}
```

### 3. Typography System
- Font family stack
- Complete typography scale table with:
  - Element/Use Case
  - Font Size
  - Font Weight
  - Color
  - Line Height
- Typography utility classes with code examples

### 4. Component Classes
Document EVERY component found in the HTML files with:
- Class name and purpose
- Complete CSS code
- Variants (if applicable)
- Usage notes

Organize by category:
- **Layout** (containers, grids, columns)
- **Cards** (all card variations)
- **Buttons** (all button types and states)
- **Forms** (inputs, textareas, selects, labels, file uploads)
- **Navigation** (navbar, links, menus)
- **Content Components** (articles, lists, chat bubbles, etc.)
- **UI Elements** (badges, tags, status indicators)
- **Specialized Components** (search bars, CTAs, heroes, sidebars)

### 5. Utility Classes
Complete list of utility classes for:
- Spacing (margins, padding)
- Typography (alignment, colors, weights)
- Display (flex, grid)
- Visibility
- Other utilities

### 6. Responsive Design
- Breakpoints used
- Mobile-first patterns
- Responsive grid behaviors
- Mobile-specific overrides

### 7. Animation & Transitions
- Timing functions
- Duration standards
- Transition patterns for different element types

### 8. Usage Examples
For each major component type, provide:
- Clean, minimal HTML example
- Real-world usage scenario
- Multiple examples showing variants

### 9. Accessibility Guidelines
- Color contrast requirements
- Focus states
- Semantic HTML recommendations
- Keyboard navigation notes
- ARIA considerations

### 10. Best Practices
- Implementation guidelines
- Common patterns
- Things to avoid
- Performance considerations

### 11. Additional Sections (if relevant)
- Color usage guidelines
- Icon/emoji usage
- Spacing scale
- Shadow elevation system

---

## Document 2: Reference Style Guide (HTML)

Create a comprehensive, interactive HTML file named `reference-styleguide-complete.html` that includes:

### Structure Requirements

1. **Self-Contained**: All CSS inline in a `<style>` tag
2. **Complete Design Tokens**: Include ALL CSS variables extracted from source files
3. **Live Examples**: Working, interactive examples of every component
4. **Organized Sections**: Clear sections with headers for each component category

### Required Sections

#### Header/Navigation
- Working navigation example from the source files

#### Color Palette Section
- Visual swatches for all colors
- Hex codes displayed
- Color names/variable names
- Organized by category (primary, secondary, neutrals, etc.)

#### Typography Section
- Live examples of every heading level
- Body text examples
- All typography variants demonstrated
- Labels, captions, meta text

#### Button Section
Demonstrate:
- All button variants (primary, secondary, outline, etc.)
- All sizes (small, medium, large)
- All states (normal, hover-able)
- Special buttons (pill, block, icon buttons)
- Button groups (if applicable)

#### Card Section
Show examples of:
- Basic cards
- Card variants (large, compact, etc.)
- Category cards
- Interactive cards with hover states
- Cards in grid layouts

#### Form Section
Include working examples of:
- Text inputs
- Textareas
- Select dropdowns (with custom styling)
- Checkboxes and radios (if in source)
- File uploads
- Input groups
- Form validation states (if applicable)
- Complete form layout example

#### Layout Section
Demonstrate:
- Container widths
- Grid systems
- Multi-column layouts
- Responsive behavior examples

#### Component Sections
For EVERY component found in source files, create a demo section:
- Search bars
- Navigation menus
- Article lists
- Chat interfaces
- Status badges
- Tabs/Pills (if applicable)
- Modals/Dialogs (if applicable)
- Tables (if applicable)
- Pagination (if applicable)
- Breadcrumbs (if applicable)
- And any other unique components

#### Utility Classes Section
Demonstrate utility classes with before/after examples

### Styling for the Style Guide Itself

Create a clean, professional layout for the style guide:
```css
.demo-section {
    /* Section container styling */
}

.demo-header {
    /* Section header styling - make it distinctive */
}

.demo-content {
    /* Content area styling */
}

.color-swatch {
    /* Color display boxes */
}
```

### Footer
- Notes about class prefixes
- Link to design guidelines
- Version information (if applicable)

---

## Output Format

Provide both files as downloadable outputs:
1. `/mnt/user-data/outputs/design-guidelines-complete.md`
2. `/mnt/user-data/outputs/reference-styleguide-complete.html`

---

## Quality Checklist

Before completing, ensure:

### Design Guidelines (MD)
- [ ] All CSS variables extracted and documented
- [ ] Every component class has complete CSS code
- [ ] At least 3-5 usage examples per major component
- [ ] Typography scale is complete with all variants
- [ ] Responsive patterns documented
- [ ] Accessibility guidelines included
- [ ] Best practices section is actionable

### Reference Style Guide (HTML)
- [ ] File opens and displays correctly in browser
- [ ] All colors displayed with swatches and codes
- [ ] Every component from source files is demonstrated
- [ ] Interactive elements work (hover states visible)
- [ ] Forms are functional (inputs accept text, etc.)
- [ ] Layout is clean and organized
- [ ] Sections are clearly labeled
- [ ] Self-contained (no external dependencies)

---

## Additional Instructions

1. **Be Thorough**: Don't skip any components, even small ones
2. **Extract Patterns**: If you see a pattern repeated, create a documented component for it
3. **Maintain Consistency**: Use the same class naming conventions from the source
4. **Provide Context**: Explain WHEN and WHY to use each component
5. **Think Developer-First**: Make it easy to copy-paste and implement
6. **Include Edge Cases**: Show how components look with long text, empty states, etc.

---

## Example Usage

After receiving these documents, a developer should be able to:
1. Understand the entire design system philosophy
2. Find any component they need with working code
3. Copy-paste implementation examples
4. See visual examples of every component
5. Understand responsive behavior
6. Know accessibility requirements
7. Follow best practices for implementation

---

Begin by analyzing all attached HTML files, then create both comprehensive documents.
I need you to analyze the attached HTML files and create two comprehensive design system documents:

### Document 1: Complete Design Guidelines (Markdown)
### Document 2: Interactive Reference Style Guide (HTML)

## Requirements for Both Documents

### Analysis Phase
First, thoroughly analyze ALL attached HTML files to extract:
1. **All CSS variables and design tokens** (colors, spacing, shadows, radius, etc.)
2. **All typography patterns** (font families, sizes, weights, line heights)
3. **All component patterns** (buttons, cards, forms, navigation, etc.)
4. **All layout patterns** (grids, containers, multi-column layouts)
5. **All utility classes** (margins, padding, text alignment, colors)
6. **All interaction patterns** (hover states, transitions, animations)
7. **Responsive breakpoints and mobile patterns**
8. **Naming conventions and prefixes used**

---

## Document 1: Design Guidelines (Markdown)

Create a comprehensive markdown file named `design-guidelines-complete.md` that includes:

### 1. Introduction Section
- **Design Philosophy**: Extract and articulate the design principles evident in the HTML
- **Key Characteristics**: What makes this design system unique
- **When to Use**: Guidance on appropriate use cases

### 2. Design Tokens
Complete CSS variable documentation with:
```css
:root {
    /* Extract ALL CSS variables from the HTML files */
    /* Group by category: colors, spacing, radius, shadows, etc. */
    /* Include comments describing each token */
}
```

### 3. Typography System
- Font family stack
- Complete typography scale table with:
  - Element/Use Case
  - Font Size
  - Font Weight
  - Color
  - Line Height
- Typography utility classes with code examples

### 4. Component Classes
Document EVERY component found in the HTML files with:
- Class name and purpose
- Complete CSS code
- Variants (if applicable)
- Usage notes

Organize by category:
- **Layout** (containers, grids, columns)
- **Cards** (all card variations)
- **Buttons** (all button types and states)
- **Forms** (inputs, textareas, selects, labels, file uploads)
- **Navigation** (navbar, links, menus)
- **Content Components** (articles, lists, chat bubbles, etc.)
- **UI Elements** (badges, tags, status indicators)
- **Specialized Components** (search bars, CTAs, heroes, sidebars)

### 5. Utility Classes
Complete list of utility classes for:
- Spacing (margins, padding)
- Typography (alignment, colors, weights)
- Display (flex, grid)
- Visibility
- Other utilities

### 6. Responsive Design
- Breakpoints used
- Mobile-first patterns
- Responsive grid behaviors
- Mobile-specific overrides

### 7. Animation & Transitions
- Timing functions
- Duration standards
- Transition patterns for different element types

### 8. Usage Examples
For each major component type, provide:
- Clean, minimal HTML example
- Real-world usage scenario
- Multiple examples showing variants

### 9. Accessibility Guidelines
- Color contrast requirements
- Focus states
- Semantic HTML recommendations
- Keyboard navigation notes
- ARIA considerations

### 10. Best Practices
- Implementation guidelines
- Common patterns
- Things to avoid
- Performance considerations

### 11. Additional Sections (if relevant)
- Color usage guidelines
- Icon/emoji usage
- Spacing scale
- Shadow elevation system

---

## Document 2: Reference Style Guide (HTML)

Create a comprehensive, interactive HTML file named `reference-styleguide-complete.html` that includes:

### Structure Requirements

1. **Self-Contained**: All CSS inline in a `<style>` tag
2. **Complete Design Tokens**: Include ALL CSS variables extracted from source files
3. **Live Examples**: Working, interactive examples of every component
4. **Organized Sections**: Clear sections with headers for each component category

### Required Sections

#### Header/Navigation
- Working navigation example from the source files

#### Color Palette Section
- Visual swatches for all colors
- Hex codes displayed
- Color names/variable names
- Organized by category (primary, secondary, neutrals, etc.)

#### Typography Section
- Live examples of every heading level
- Body text examples
- All typography variants demonstrated
- Labels, captions, meta text

#### Button Section
Demonstrate:
- All button variants (primary, secondary, outline, etc.)
- All sizes (small, medium, large)
- All states (normal, hover-able)
- Special buttons (pill, block, icon buttons)
- Button groups (if applicable)

#### Card Section
Show examples of:
- Basic cards
- Card variants (large, compact, etc.)
- Category cards
- Interactive cards with hover states
- Cards in grid layouts

#### Form Section
Include working examples of:
- Text inputs
- Textareas
- Select dropdowns (with custom styling)
- Checkboxes and radios (if in source)
- File uploads
- Input groups
- Form validation states (if applicable)
- Complete form layout example

#### Layout Section
Demonstrate:
- Container widths
- Grid systems
- Multi-column layouts
- Responsive behavior examples

#### Component Sections
For EVERY component found in source files, create a demo section:
- Search bars
- Navigation menus
- Article lists
- Chat interfaces
- Status badges
- Tabs/Pills (if applicable)
- Modals/Dialogs (if applicable)
- Tables (if applicable)
- Pagination (if applicable)
- Breadcrumbs (if applicable)
- And any other unique components

#### Utility Classes Section
Demonstrate utility classes with before/after examples

### Styling for the Style Guide Itself

Create a clean, professional layout for the style guide:
```css
.demo-section {
    /* Section container styling */
}

.demo-header {
    /* Section header styling - make it distinctive */
}

.demo-content {
    /* Content area styling */
}

.color-swatch {
    /* Color display boxes */
}
```

### Footer
- Notes about class prefixes
- Link to design guidelines
- Version information (if applicable)

---

## Output Format

Provide both files as downloadable outputs:
1. `/mnt/user-data/outputs/design-guidelines-complete.md`
2. `/mnt/user-data/outputs/reference-styleguide-complete.html`

---

## Quality Checklist

Before completing, ensure:

### Design Guidelines (MD)
- [ ] All CSS variables extracted and documented
- [ ] Every component class has complete CSS code
- [ ] At least 3-5 usage examples per major component
- [ ] Typography scale is complete with all variants
- [ ] Responsive patterns documented
- [ ] Accessibility guidelines included
- [ ] Best practices section is actionable

### Reference Style Guide (HTML)
- [ ] File opens and displays correctly in browser
- [ ] All colors displayed with swatches and codes
- [ ] Every component from source files is demonstrated
- [ ] Interactive elements work (hover states visible)
- [ ] Forms are functional (inputs accept text, etc.)
- [ ] Layout is clean and organized
- [ ] Sections are clearly labeled
- [ ] Self-contained (no external dependencies)

---

## Additional Instructions

1. **Be Thorough**: Don't skip any components, even small ones
2. **Extract Patterns**: If you see a pattern repeated, create a documented component for it
3. **Maintain Consistency**: Use the same class naming conventions from the source
4. **Provide Context**: Explain WHEN and WHY to use each component
5. **Think Developer-First**: Make it easy to copy-paste and implement
6. **Include Edge Cases**: Show how components look with long text, empty states, etc.

---

## Example Usage

After receiving these documents, a developer should be able to:
1. Understand the entire design system philosophy
2. Find any component they need with working code
3. Copy-paste implementation examples
4. See visual examples of every component
5. Understand responsive behavior
6. Know accessibility requirements
7. Follow best practices for implementation

---

Begin by analyzing all attached HTML files, then create both comprehensive documents.
Claude beginning to analyze and create the design documentation

Claude didn’t just list colors and fonts like a paint chip catalog.

It created a complete design philosophy:

Example of the comprehensive design guidelines document showing the SoloLedger Glass Aurora Design System

Look at that structure—it’s like a love letter to your future self:

  • Design philosophy (the WHY behind your choices)
  • Design tokens (the WHAT of your system)
  • Typography system (how words should dance)
  • Component classes (the building blocks)
  • Utility classes (your Swiss Army knife)
  • Responsive patterns (because phones exist)
  • Animation guidelines (movement with meaning)
  • Usage examples (show, don’t just tell)
  • Accessibility guidelines (because everyone deserves pretty apps)
  • Best practices (learned the hard way so you don’t have to)

This isn’t documentation.

This is your design DNA.

The interactive reference was even better:

Interactive reference style guide showing color palette with actual color swatches

Live examples! Real components! Interactive demos!

It’s like having a tiny designer living in your computer.

(But less expensive and doesn’t judge your font choices.)

.

.

.

Step 4: Package Your Magic Into a Claude Skill (5 Minutes to Immortality)

Here’s where we turn stone into gold. Or design into reusable superpower.

(Same thing, really.)

Still in Claude Web, I asked:

Asking Claude to use skill-creator to package the design system

Claude got it immediately:

Claude using the skill-creator skill to package the design system

Watch what’s happening—it’s like watching someone pack for a trip, but instead of forgetting their toothbrush, they remember everything:

  • Reading the skill-creator documentation
  • Understanding how to package design systems
  • Checking reference patterns
  • Organizing files with the care of Marie Kondo
Claude showing the skill packaging process

The result:

Final packaged skill with download link and contents description

Your skill package contains:

  • SKILL.md (~300 lines of pure implementation wisdom)
  • references/design-tokens.md (~1,900 lines of every design variable you’ll ever need)
  • assets/template.html (~1,200 lines of interactive component library goodness)

Everything Claude Code needs to apply your design system to ANY component. It’s like having a design degree in a ZIP file.

.

.

.

Step 5: Installation Is So Easy It Feels Like Cheating (2 Minutes)

I downloaded the skill and added it to my project:

Project structure showing the sololedger-glass-aurora skill in the .claude/skills folder

That’s it. That’s the installation process.

If you were expecting more steps, sorry to disappoint. Sometimes good things are simple.

(Unlike my relationship with CSS, which remains complicated.)

.

.

.

Step 6: Watch the Magic Happen (10 Minutes of Pure Satisfaction)

Back in Claude Code, I typed the magic words:

Invoking the skill in Claude Code

Claude recognized my skill immediately, like bumping into an old friend:

Claude Code asking permission to use the sololedger-glass-aurora skill

Then it went to work.

And friend, watching this is better than those satisfying pressure-washing videos:

Claude Code exploring the dashboard page and all its components

Claude Code wasn’t just slapping styles around like a drunk painter.

It was methodical. Thoughtful. It:

  • Read every component in the dashboard (getting to know the neighborhood)
  • Understood the existing structure (respecting what was there)
  • Mapped design patterns to components (matchmaking at its finest)
  • Applied the Glass Aurora system consistently (no component left behind)
Claude Code showing the summary of changes made to all components

The transformation touched everything:

  1. dashboard-client.tsx – Header, glass buttons, financial cards (the main stage)
  2. dashboard-filters-bar.tsx – Glass-card container, themed filters (the supporting cast)
  3. income-expense-chart-widget.tsx – Glass-card with gradient backgrounds (data, but make it fashion)
  4. category-breakdown-chart-widget.tsx – Theme-aware chart colors (coordination is key)
  5. accounts-overview-widget.tsx – Glass tooltips and grid layouts (the finishing touches)

Every. Single. Component.

Speaking the same design language.

Like a well-rehearsed choir instead of karaoke night at the dive bar.

The final redesigned dashboard in dark mode 1
The final redesigned dashboard in dark mode 2
The final redesigned dashboard in light mode 1

The transformation?

From “generic SaaS tool #47,293” to “wait, what app is that and where can I get it?”

From forgettable to memorable.

From IKEA furniture to custom-built beauty.

And here’s the kicker: I can now redesign any page in seconds.

Not minutes. Not hours. Seconds.

(Are you crying? I’m not crying. It’s just… very dusty in here.)

.

.

.

Why This Changes Everything (And I Mean Everything)

Let’s talk about what just happened, because it’s bigger than it looks:

  1. One design exploration session → 5 unique options to choose from
  2. One selected design → Complete design system automatically documented
  3. One Claude Skill → Infinite reusability across all your projects

Compare this to the traditional redesign process (aka the path of pain):

  • Week 1: Design exploration (and existential crisis)
  • Week 2: Component library building (and caffeine overdose)
  • Week 3: Implementation (and debugging nightmares)
  • Week 4: Consistency fixes (and more debugging)
  • Week 5: Documentation (just kidding, nobody documents)

This approach?

  • 30 minutes total
  • Perfect consistency
  • Reusable forever
  • Documentation included

But here’s what really gets me excited (and I don’t get excited about many things anymore—I’m old and tired):

The skill gets smarter over time.

  • Find a bug in the glass effect? Fix it once in the skill. Every project gets the update.
  • Want to add a new component pattern? Update the skill. It’s everywhere instantly.
  • Need to onboard a developer? Share the skill. They’re designing consistently from minute one.

Every improvement compounds.

It’s like investing in index funds, but for your design system. (That’s the most adult sentence I’ve ever written. I need to go lie down.)

.

.

.

The Benefits Nobody Mentions at Parties

Benefit #1: Design Consistency Without The Design Drama

You get enterprise-level design consistency without:

  • Figma (and its 47 comments per component)
  • Storybook (and its 3-hour setup process)
  • A design team (and their strong opinions about kerning)

Just you, your skill, and perfect consistency.

It’s beautiful.

Benefit #2: Instant Design Language That Actually Makes Sense

That 300-line SKILL.md?

It’s not just documentation. It’s your design philosophy, your patterns, your principles—all captured automatically.

It’s like having a tiny design consultant living in your codebase, but one that never sends invoices.

Benefit #3: Version Control for Visual Design

Your design system is now code. Which means:

  • Git trackable (see what changed and when)
  • PR reviewable (catch issues before they ship)
  • Rollback-able (when that neon green seemed like a good idea at 3 AM)

It’s version control for visuals.

The future is now, friend.

Benefit #4: Team Scalability Without the Scaling Pains

New developer joins the team?

Old way: “Here’s our 47-page design guide. Good luck!”

New way: “Use the sololedger-glass-aurora skill.”

Done.

They’re designing consistently from day one.

No training montage required.

Benefit #5: Professional Client Deliverables

That skill package? It’s also professional documentation you can hand to clients.

“Here’s our complete design system.”

Hands over ZIP file

Client is impressed

You look like a genius

(You ARE a genius, but now you have proof.)

.

.

.

Your Turn: From Generic to Gorgeous in 30 Minutes

Ready?

Here’s your recipe for design transformation:

Step 1: Pick Your Victim (I mean, page)

Don’t try to redesign everything at once. (That way lies madness.)

Start with one page. Dashboard, landing page, settings—doesn’t matter.

Pick the one that makes you saddest.

Step 2: Generate Your Options

Use Claude Code with the frontend-design skill. Ask for 5 variants.

Be specific about the vibe you want. “Make it pretty” is not specific. “Make it look like Spotify met a disco ball at a Nordic design conference” is specific.

(Also intriguing.)

Step 3: Fall in Love (Then Refine)

Choose your favorite. Get both theme versions. Make sure it sparks joy. (Yes, I’m Marie Kondo-ing your design system. Deal with it.)

Step 4: Birth Your Skill

Switch to Claude Web. Attach the HTML files. Generate comprehensive documentation. Package with skill-creator.

Watch your design system become immortal.

Step 5: Deploy Your Beauty Everywhere

Add to your project. Use the skill to redesign everything.

Feel that? That’s the satisfaction of consistency. It’s better than finding matching socks.

Step 6: Make It Better (Forever)

Your skill isn’t frozen in carbonite. Improve it. Expand it. Share it.

Every enhancement makes every project better.

It’s compound interest for your eyeballs.

.

.

.

The Real Talk Conclusion

I spent years accepting generic designs.

Not because I liked them.

But because custom design seemed too expensive—not in money, but in time.

Time I didn’t have.

Energy I couldn’t spare.

Mental bandwidth already allocated to remembering my passwords.

But what if custom design took 30 minutes instead of 30 days?

What if consistency was automatic instead of aspirational?

What if your design system could teach itself to any AI that needed it?

That’s not the future, friend. That’s what I just showed you.

My accounting app no longer looks like everyone else’s. It has personality. It has presence. It has that glass aurora glow that makes even tax calculations feel slightly magical. (Slightly. Let’s not get carried away—they’re still tax calculations.)

And it took less time than watching a Netflix episode.

(A short one. Not one of those prestige drama episodes that’s basically a movie.)

.

.

.

Here’s My Challenge to You

Open that project with the generic UI. You know the one. The one you show people quickly while saying “it’s still in beta.”

Give it 30 minutes. Just 30.

Generate your variants. Pick your favorite. Make it a skill.

Watch as your entire app transforms from “functional” to “fascinating.”

Because life’s too short for boring dashboards, friend.

And your apps deserve to be as unique as you are.

(Even if you’re not that unique. I’m kidding! You’re totally unique. Your mother was right.)

What design will you capture as a Claude Skill today?

Go. Create. Make the internet prettier.

We’re all counting on you.

(No pressure.)


P.S. – That glass aurora design I fell in love with? I’ve now applied it to three different projects. Same skill. Same consistency. Same “ooh, what’s that?” reaction from everyone who sees it. Total time to redesign all three: under an hour. The old way would have taken weeks, and they all would have looked slightly different, like siblings who don’t quite look related.

P.P.S. – Want to create your own design skills but feeling overwhelmed? Start here: Download the frontend-design skill from GitHub. Ask for design variants. Pick your favorite. Watch the magic happen. Then write me a thank-you note. Or don’t. I’ll just be here, admiring my glass aurora dashboard and feeling quietly superior to everyone still using default Bootstrap.

P.P.P.S. – Yes, I know that’s too many P.S.’s. But you’re still reading, aren’t you? See? Sometimes breaking the rules works. Just like breaking free from generic design. Full circle, friend. Full. Circle.

12 min read The Art of Vibe Coding, Claude

How I Built a Claude Skill That Makes Claude Code Never Forget What It Learns

Let’s say you’re debugging.

Again.

That same gnarly issue that made you question your entire career choice last Tuesday. And the Tuesday before that. Your brain does that thing where it whispers: “Wait… didn’t I fix this already?”

You definitely fixed this already.

The solution exists somewhere—buried in a three-week-old Slack thread, or maybe that commit message you wrote at 2 AM when you were feeling particularly verbose. (Spoiler: You weren’t. The message says “fixed bug.”)

Here’s the thing: We’re hemorrhaging wisdom every single day.

Not because we’re not learning. We learn constantly. We discover edge cases, make architectural decisions, stumble upon performance tricks that would make your CS professor weep with joy.

But then? We move on. Next feature. Next sprint. Next fire.

And all that hard-won knowledge?

Poof.

Gone like your willpower at 3 PM when someone mentions there’s leftover birthday cake in the break room.

.

.

.

The Problem: Claude Code Has The Memory of a Goldfish

Picture this: You’re vibe coding with Claude Code. (Yes, that’s a technical term now. Roll with it.)

Together, you and Claude are making dozens of micro-decisions every session:

  • “Oh right, this package completely changed its API in v2”
  • “We need to store files in org-scoped directories for multi-tenancy”
  • “This approach is 10x faster than the obvious solution”
  • “Never—and I mean NEVER—use pattern X here because of edge case Y”

These aren’t just code comments, friend. This is architectural wisdom. The kind that separates the “I can center a div” developers from the “I’ve seen things you wouldn’t believe” architects.

But here’s what happens next. (You already know where this is going, don’t you?)

  1. Claude Code discovers something important
  2. You fix the issue together
  3. You high-five virtually and move on
  4. Next week, Claude Code makes the exact. Same. Mistake.
  5. You debug the exact. Same. Issue.
  6. Rinse, repeat, cry a little

Sure, we’ve got CLAUDE.md for project rules.

But let me ask you something: When was the last time you updated that file after a coding session?

Cricket sounds.

Exactly.

Nobody has time to document discoveries when you’re in the zone. Nobody.

So I built a Claude Skill that remembers everything for us.

(Stay with me. This gets good.)

.

.

.

The Complete Workflow: Capture, Review, Integrate

GitHub Repo: https://github.com/nathanonn/claude-skill-build-insights-logger

The Build Insights Logger skill creates what I like to call a “knowledge management system.” (Fancy, right? It’s actually pretty simple.)

  • Step 1: Automatic Capture – Logs insights while you’re coding
  • Step 2: Smart Review – Shows you insights organized by category
  • Step 3: Selective Integration – Adds the good stuff to CLAUDE.md
  • Step 4: Compound Learning – Every future session gets smarter

Let me show you how this saved my bacon. (Actually, it was more like saving me from a dependency nightmare, but “saved my bacon” sounds more dramatic.)

.

.

.

Step 1: Automatic Knowledge Capture (While You Code!)

Here’s what the Build Insights Logger does brilliantly: it automatically logs meaningful insights as Claude Code works.

No manual documentation.
No “I’ll add this to the docs later.” (You won’t.)
No lost learnings.

Just automatic capture of:

  • Non-trivial edge cases you stumble upon
  • Design decisions and their rationale (the WHY behind the WHAT)
  • Performance optimizations that made you go “whoa”
  • Security implications that could bite you later
  • Architecture patterns you actually adopt
  • API gotchas and their fixes
  • Implementation trade-offs

Everything gets logged to .claude/insights/ during your session. Ready for review when YOU’RE ready.

Real-World Example: Building a Document Management System

On Monday, I was building a document management system. The complex kind—file uploads, multi-tenant storage, previews, the whole enchilada.

I started with my standard instruction to Claude Code

01-include-instructions-to-use-build-insights-logger-skill

Notice the magic phrase: “Please use the build-insights-logger skill.”

That’s it. That’s all it takes.

Claude Code immediately gets it:

cc-ask-to-use-skills

With the skill activated, Claude Code starts building. But—and here’s where it gets interesting—it’s not just coding. It’s documenting its discoveries:

skill-activated-cc-start-building

As Claude works through the implementation, it automatically creates an insights log:

cc-log-insights-as-it-build

What Gets Captured: Real Architectural Decisions

These insights aren’t fluff. They’re the real deal—architectural decisions that matter:

example-of-insights-logged

Look at that first insight—a pluggable storage abstraction. Claude Code discovered you needed to support multiple storage backends (local disk, S3, Azure Blob) and documented the pattern.

Key insight captured: “By storing files in org-scoped directories with year/month structure (storage/documents/{orgId}/{yyyy}/{mm}/{filename}), we maintain tenant isolation at the filesystem level and enable efficient cleanup/archiving strategies.”

That’s not a code comment, friend.

That’s institutional knowledge.

As development continues, more insights accumulate:

example-of-insights-logging-01
example-of-insights-logging-02

Notice the categories:

  • Architecture: System design decisions
  • UI Patterns: Implementation approaches that actually work
  • Navigation: Integration strategies
  • Implementation Strategy: Why we’re building it this way

Each insight includes:

  • The files involved
  • Relevant tags (for finding it later)
  • Clear explanation of the decision
  • Why it matters (the part everyone forgets to document)

The Moment That Made Me a Believer: The cuid2 Bug

Here’s where the skill earned its keep.

After implementing the core functionality, I hit an error:

I-discover-error-in-the-implementation

The build was failing. The error message? Cryptic as a fortune cookie: “Export cuid doesn’t exist in target module.”

Now, normally this triggers The Debugging Dance. You know the one—check imports, read docs, sacrifice a rubber duck to the Stack Overflow gods.

But watch what happened when I asked Claude Code to fix it and log the insight:

i-ask-cc-to-fix-it-and-log-insights

Claude Code didn’t just fix the bug.

It:

  1. Researched the root cause
  2. Created a comprehensive fix plan
  3. Documented the gotcha for future reference
cc-plan-including-logging-the-issue-to-avoid-future-bugs

The fix was simple—the package had changed its API between v1 and v2:

cc-implment-fixes

But here’s the crucial part—this knowledge was captured permanently:

example-of-insights-updated

Look at that bug fix documentation:

  • Clear problem statement
  • Root cause analysis
  • Wrong pattern marked (with a big ❌)
  • Correct pattern provided (with a reassuring ✅)
  • Package version context

This bug will never bite us again.

Never.

(Well, unless we forget to use the skill. But we won’t. Right?)

.

.

.

Step 2: Transforming Raw Insights Into Permanent Knowledge

So you’ve been capturing insights automatically. Your .claude/insights/ folder is filling up with valuable learnings like a wisdom piñata.

But insights in session files are like vegetables in your crisper drawer—valuable, but not helping anyone if they’re just sitting there.

Time for the review workflow. This is where the magic happens.

Triggering the Review: On YOUR Schedule

The Build Insights Logger respects your flow. It never interrupts with “Hey! Want to review your insights? How about now? Now? What about now?”

Never.

You review when YOU want. After the feature ships. After the bug is squashed. After your coffee. (Definitely after coffee.)

Here’s how simple it is:

use-skill-to-review-insights

One command: “Please use the build-insights-logger skill to review the insights from existing sessions.”

Claude Code immediately understands:

cc-trigger-build-insights-logger-skill

Watch what happens next. Claude doesn’t just dump a wall of text like your cousin’s Facebook posts. It systematically explores your insights directory:

cc-first-review-existing-sessions

Two session files found. 160 lines of insights total.

Raw knowledge waiting to be refined. Like coffee beans waiting to become that sweet, sweet nectar of productivity.

The Presentation: Organized, Categorized, Actually Useful

This is where the skill really shines.

Instead of showing you raw session logs (boring), Claude Code presents your insights like a senior architect presenting findings to the team:

cc-return-key-insights-ask-user-to-choose-01

Look at that organization!

Architecture & Design Patterns

  • Document storage abstraction with migration paths
  • Backend-first implementation strategy

Prisma & Database Patterns

  • Complex filtering with OR/AND combinations
  • Many-to-many relations with soft deletes

Each insight is:

  • Numbered for easy selection (1/, 2/, 3/…)
  • Categorized for context (because context is everything)
  • Summarized with key details
  • Explained with why it matters

The presentation continues:

cc-return-key-insights-ask-user-to-choose-02

Security & Permissions

  • Tiered permission levels for different operations
  • Defensive soft-delete checking

Data Integrity & Business Logic

  • Transaction links removed on soft delete
  • Per-file error handling in batch operations

And more:

cc-return-key-insights-ask-user-to-choose-03

UI Implementation Patterns

  • File upload with hidden input ref pattern
  • Document preview with MIME-type detection
  • Two-level navigation integration

Bug Fixes & Dependencies

  • That @paralleldrive/cuid2 import issue (remember that little rascal?)

13 insights total. Each one a potential bug prevented, a pattern established, a decision documented.

It’s like having a time machine that lets you send wisdom to your future self.

.

.

.

Step 3: Curating Your Knowledge Base (Be Picky!)

Claude asks: “Which insights would you like to add to CLAUDE.md?”

This is where you become the curator of your own knowledge museum. (Fancy!)

i-choose-which-insights-to-keep

My selections:

  • 2 – Backend-first implementation strategy (methodology worth preserving)
  • 3 & 4 – Prisma patterns (made generic for any schema)
  • 5 – Tiered permissions (security pattern)
  • 13 – The cuid2 import bug (never. again.)

Notice what I did with insight 3? “Make this rule generic so that it can be applicable for any Prisma schema.”

The skill doesn’t just copy-paste like a lazy intern. It adapts insights to be broadly useful.

I didn’t select everything. Some insights were too specific. Others were already covered.

Quality beats quantity.

Every. Single. Time.

The Integration: Surgical Precision (No Mess)

Watch what happens when Claude Code integrates my selected insights:

cc-update-claude-md-file-based-on-my-selections-01

Claude reads my existing CLAUDE.md (278 lines) and begins surgical integration.

It doesn’t just slap new stuff at the end like a P.S. on a love letter. It finds the RIGHT sections:

cc-update-claude-md-file-based-on-my-selections-02

The Permission Layers section gets enhanced with the tiered strategy:

  • GET endpoints for regular members
  • PATCH/POST/DELETE for destructive operations require admin
  • Clear examples with specific routes
cc-update-claude-md-file-based-on-my-selections-03

A new Prisma Query Patterns section appears with that complex OR/AND filtering pattern:

// When combining multiple OR conditions in a single query, wrap them in AND:
if (where.OR) {
  where.AND = [{ OR: where.OR }, { OR: searchConditions }];
  delete where.OR;
}

This pattern will save you hours of debugging Prisma query conflicts.

Hours.

11-cc-update-claude-md-file-based-on-my-selections-04

The Common Pitfalls section gets the cuid2 import pattern:

// ❌ WRONG - v1 pattern, will fail with "Export cuid doesn't exist"
import { cuid } from '@paralleldrive/cuid2';

// ✅ CORRECT - v2 exports createId
import { createId } from '@paralleldrive/cuid2';

Complete with root cause explanation. This bug will never happen again in any project.

(I’m not crying. You’re crying.)

The Confirmation: Knowledge Preserved

cc-done-updating-claude-md-file

The summary tells the complete story:

Added to CLAUDE.md:

  1. Backend-first implementation strategy → Coding Standards section
  2. Complex Prisma filtering → New Prisma Query Patterns section
  3. Filtering many-to-many relations → Same section, generalized
  4. Tiered permission strategy → Enhanced Permission Layers section
  5. @paralleldrive/cuid2 import → Common Pitfalls section

Session files archived:

  • session-2025-11-18-003404.md.claude/insights/archive/
  • session-2025-11-18-121019.md.claude/insights/archive/

The insights aren’t lost. They’re archived. But the valuable patterns? They’re now in CLAUDE.md where they’ll guide every future coding session.

It’s like upgrading from sticky notes to a proper filing system. (But one that actually works.)

.

.

.

The Selection Philosophy: What Makes the Cut?

Not every insight belongs in CLAUDE.md.

Here’s my selection criteria. (Yes, I have criteria. I’m fancy like that.)

Always Include:

  • Universal patterns that apply across features
  • Security decisions that affect the whole app
  • Performance optimizations that should be standard
  • Bug fixes for external dependencies
  • Architectural principles that guide development

Usually Skip:

  • Feature-specific implementation details
  • One-off workarounds
  • Obvious patterns Claude already knows
  • Project-specific business logic
  • Temporary fixes waiting for upstream patches

Transform When Adding:

  • Make patterns generic (not tied to specific models)
  • Extract the principle, not just the implementation
  • Add context about when to apply (and when NOT to)
  • Include examples that clarify usage

The goal isn’t to document everything. The goal is to capture patterns that make your next project better.

Less encyclopedia, more greatest hits album.

.

.

.

The Compound Effect:

Here’s what happens over time. (Spoiler: It’s beautiful.)

  • Week 1: You capture 10 insights about authentication patterns
  • Week 2: You capture 8 insights about performance optimizations
  • Week 3: You capture 12 insights about error handling
  • Month 2: You have 100+ insights spanning every aspect of your codebase

Now imagine Claude Code with access to all of that institutional knowledge.

It’s not just avoiding bugs. It’s:

  • Consistent architectural decisions
  • Proven patterns applied automatically
  • Edge cases handled proactively
  • Performance optimizations baked in
  • Security considerations from day one

Your codebase doesn’t just grow. It evolves.

(Like Pokémon, but for code.)

Picture this:

Before this review:

  • 2 session files with 13 insights
  • Knowledge trapped in temporary logs
  • Claude Code blissfully unaware

After 2 minutes of review:

  • 5 critical patterns added to permanent knowledge
  • CLAUDE.md enhanced with battle-tested wisdom
  • Every future session benefits

Now multiply this across every coding session:

  • Week 1: 5 insights added → Next development avoids 5 issues
  • Week 2: 8 more insights → Next development avoids 13 issues
  • Month 2: 50+ insights → Your codebase is basically bulletproof

Each review session doesn’t just improve documentation. It improves every future line of code Claude writes.

It’s compound interest for your codebase.

.

.

.

Your Complete Workflow: From Chaos to Compound Knowledge

Here’s your complete workflow. (Print this out. Stick it on your monitor. Tattoo it on your forearm. Whatever works.)

During Development (Automatic):

  1. Activate build-insights-logger at session start
  2. Code normally—insights log automatically
  3. Discoveries, decisions, and fixes are captured
  4. Session file grows with valuable learnings

After Development (5 minutes):

  1. Request review: “Review insights from existing sessions”
  2. Read through categorized insights
  3. Select the valuable patterns (usually 30-50%)
  4. Let Claude integrate into CLAUDE.md
  5. Session files archive automatically

Next Development (Automatic Benefits):

  1. Claude reads enhanced CLAUDE.md
  2. Applies all captured patterns
  3. Avoids all documented pitfalls
  4. Implements proven architectures
  5. Your code is better without trying

It’s not just documentation.

It’s evolutionary development.

Each development builds on the learnings of the last. Like standing on the shoulders of giants, except the giant is your past self. (Your past self is very tall in this metaphor. Roll with it.)

.

.

.

Your Action Items (Yes, You. Right Now.)

  1. Implement the Build Insights Logger skill in your current project
  2. Activate it at the start of your next coding session
  3. Code normally—let insights capture automatically
  4. Review weekly—spend 5 minutes curating insights
  5. Watch your CLAUDE.md grow from basic rules to battle-tested wisdom
  6. Measure the difference—track how many repeated bugs you avoid

What insights are waiting in your .claude/insights/ folder right now?

Go review them.

Your future self will thank you. (Your future self might even buy you coffee. Your future self is thoughtful like that.)


Resources:

11 min read The Art of Vibe Coding, Claude

Claude Skills Part 3: How to Make Claude Code Master Any Library in 15 Minutes (Even If It Launched Yesterday)

Let’s say you’re sitting there at 2 AM.

You’ve just discovered this game-changing AI Elements library—launched recently, perfect for what you need. Your brain is doing that excited thing where it’s already building the feature before your fingers touch the keyboard.

You fire up Claude Code.

Type with the confidence of someone who’s done this a thousand times: “Build me an AI chat interface using AI Elements.”

Claude starts coding.

It looks… plausible.

Convincing, even.

Then you spot it: import { AIChat } from '@ai-sdk/elements'

That import doesn’t exist. The component is called Conversation. Claude is hallucinating an API that sounds right but isn’t.

It’s writing fiction dressed up as code.

You correct it.

Claude apologizes—sweet, polite, completely unhelpful.

Tries again.

Different hallucination.

Round and round you go.

Like trying to teach someone to cook while they’re blindfolded and you’re speaking different languages.

The documentation is literally right there on your screen. But Claude can’t see it.

Well.

That used to be true.

.

.

.

Here’s the Thing About AI and Documentation

Every week—every blessed week—new libraries launch.

The ones you already use? They’re dropping breaking changes like confetti at a wedding nobody wanted to attend.

Meanwhile, your AI coding agent is stuck in the past.

Claude Opus 4.1 doesn’t know about the library that launched last month. It definitely doesn’t know about the v2.0 that dropped while you were eating lunch yesterday.

(Is it weird that we expect AI to be omniscient? Like it should somehow absorb knowledge through the ethernet? Stay with me.)

You’ve probably tried the usual suspects:

  • The copy-paste marathon—where you dump documentation into the prompt until your context window explodes like an overfilled water balloon.
  • The MCP server hunt—searching for something that usually doesn’t exist. (Spoiler: it doesn’t.)
  • The Context7 lottery—sometimes brilliant, sometimes returns docs from the Mesozoic era.
  • The manual correction dance—where you become a human API reference for three hours. (Fun!)

Each approach fails spectacularly in its own special way.

  • Copy-pasting burns through 80% of your context before you write a single line of actual code. Good luck debugging when you’ve already consumed 100k tokens on documentation alone.
  • MCP servers are amazing. When they exist. Which is approximately never for the library you need right now.
  • Context7 is like a box of chocolates—you never know if you’re getting current docs or something from 2022. You’ll find out the hard way.
  • Manual correction? Sure, if your idea of a good time is playing “human API dictionary” until your eyes bleed.

There had to be a better way.

(There is.)

.

.

.

Enter Claude Skills: Your Documentation Superpower

Imagine this: You could teach Claude ANY library’s documentation.

Permanently.

Not the copy-paste-and-pray method. Not the please-let-there-be-an-MCP-server wishful thinking.

Actual knowledge.

The kind Claude can reference intelligently, pulling only the relevant bits for each task.

Like having a senior developer who’s memorized every documentation page but only shares what you need to know right now.

Here’s what becomes possible:

Claude Skills package documentation in a way that makes Claude understand not just WHAT the API is, but HOW to use it correctly. The difference between knowing the words to a song and understanding why it makes people cry.

Once you create a skill, it works forever.

Every project.

Every session.

Perfect implementation every time.

(Is it magic? Kind of. But the boring, repeatable kind.)

Let me show you exactly how I turned brand-new AI Elements documentation into a Claude Skill. Then used it to build a complete AI chat application.

Without a single hallucination.

Ferpetesake, it actually worked.

.

.

.

Step 1: Gather Your Documentation (2 Minutes, If You’re Slow)

I started at ai-sdk.dev/elements.

Downloaded everything—component references, examples, tutorials, the works.

Dropped them in my project like this:

Location of AI Elements documentation in project structure

Here’s the thing: Grab everything. Even that weird edge-case page you think you’ll never need. That’s the page that’ll save your bacon at 3 AM when nothing else makes sense.

(Trust me on this one.)

.

.

.

Step 2: Brainstorm Like You Mean It (5 Minutes)

Most people would jump straight into creating the skill here.

Don’t.

(Seriously. Stop. Put down the keyboard.)

First, you need to define exactly how you want Claude to use this documentation. Think of it like training a brilliant but literal-minded assistant—you need to be specific about expectations.

Here’s my exact prompt:

Initial prompt asking Claude to brainstorm requirements

Prompt:

I want to create a skill that reads the docs in this folder @docs/ai-sdk-ai-elements-doc/.

The idea: whenever we work with AI elements or build an AI native app, we'll refer to the relevant docs first before building the app.

The docs are in markdown format and contain detailed information about the AI elements SDK including usage examples, and best practices.

Ask me clarifying questions until you are 95% confident you can complete this task successfully.

a. If the question is about choosing different options, please provide me with a list of options to choose from. Mark the option with a clear label, like a, b, c, etc.
b. If the question need custom input that is not in the list of options, please ask me to provide the custom input.

Always mark each question with a number, like 1/, 2/, 3/, etc. so that I can easily refer to the question number when I answer.

For each question, add your recommendation (with reason why) below the options. This would help me in making a better decision.

Watch what happens next.

Claude Code analyzing and asking clarifying questions

Claude doesn’t just accept the task like an overeager intern. It asks targeted questions:

How should the skill activate?

  • Automatic (when AI Elements terms pop up)
  • Manual only (when you explicitly call it)
  • Hybrid (best of both worlds)

Where should documentation live?

  • Local markdown files
  • WebFetch from the mothership
  • Both (local with web backup)
Me answering with "1/a, 2/a, 3/c"

I answer with quick picks. No dissertations needed.

Claude then creates a complete requirements document.

The comprehensive requirements compilation 1
The comprehensive requirements compilation 2
The comprehensive requirements compilation 3

We’re talking 654 lines of specifications. It includes:

  • Activation triggers (automatic when components are mentioned—like a helpful friend who knows when to chime in)
  • 4 intelligent routing modes
  • Smart multi-page fetching rules
  • Response format templates
  • Query interpretation patterns

This isn’t busy work.

This is Claude learning HOW you want it to think about this documentation.

Time invested: 5 minutes of Q&A.

(Worth every second.)

.

.

.

Step 3: Transform Requirements Into Reality (3 Minutes)

Now for the satisfying part.

Asking Claude to create the skill

I tell Claude: “Let’s use the ‘skill-creator’ skill to create the skill”

(Yes, we’re using a skill to create a skill. It’s skills all the way down. Stay with me.)

Claude creating the skill

Watch as Claude:

  1. Packages all 39 markdown files (31 components plus the kitchen sink)
  2. Creates intelligent routing rules
  3. Builds activation triggers
  4. Generates a searchable index

The result?

Your documentation is now a reusable Claude Skill.

Forever.

(Take a moment. This is big.)

.

.

.

Step 4: Watch the Magic Happen (10 Minutes of Pure Joy)

Time to see if this actually works.

I tell Claude: “Read the @.notes/requirements.md, and use the ‘ai-elements’ skill to build the AI Chat Application.”

Claude recognizes the skill immediately:

Now here’s where it gets interesting.

Claude reading documentation 1

Instead of guessing the API—or worse, making stuff up—Claude reads the actual docs:

  • INDEX.md for component reference
  • examples/chatbot.md for patterns
  • components/conversation.md for core components
  • components/prompt-input.md for input handling

Notice something?

Claude read 8 files out of 39. Not the entire documentation set. Just what it needed.

Surgical precision.

(This is the opposite of the copy-paste-everything approach. And it’s beautiful.)

Now Claude builds with the confidence of someone who actually knows what they’re doing:

Claude building with confidence 1

Every import correct. Every API call accurate. Zero hallucinations.

Want proof this actually works? Here’s what I built:

The entire AI chat application builds perfectly:

  • Database schema with Prisma
  • API routes for chat sessions
  • Real-time streaming with AI Elements
  • Proper component composition
  • Error handling
  • State management

No back-and-forth. No corrections. No “actually, that’s not how it works.”

It. Just. Works.

(I may have done a small victory dance. Don’t judge.)

.

.

.

Why This Isn’t Just Another MCP Alternative

“But wait,” you’re thinking. “Isn’t this what MCP servers do?”

Kind of. But also not at all.

MCP servers:

  • Require the library author to build one (good luck with that)
  • Need constant maintenance (who has time?)
  • Often lag behind latest versions (naturally)
  • You have zero control (hope you like their choices)

Claude Skills:

  • You create them yourself (15 minutes, tops)
  • Work with ANY documentation (even that obscure library from 2019)
  • Update when YOU want (not when someone else gets around to it)
  • Full control over what’s included (your docs, your rules)

But here’s the feature that makes me want to write poetry:

Claude Skills read intelligently.

When working with AI Elements, Claude didn’t inhale all 39 documentation files like some kind of context-window glutton. It read the 8 relevant ones. No waste. No bloat. Just what it needed.

Try that with copy-paste.

(Spoiler: you can’t.)

.

.

.

The Compound Effect (Or: Why This Changes Everything)

Think about your current stack for a hot second:

  • React components library
  • Your database ORM
  • Payment provider SDK
  • Authentication library
  • UI component system
  • Analytics platform
  • Email service
  • File storage API
  • That weird library Bob insisted on using

Each one could be a Claude Skill.

Do the math with me:

1 library skill = 2 hours saved per project 10 library skills = 20 hours saved Your entire stack as skills = Never manually correct AI again

But wait. (There’s more.)

  • Version updates? Update the skill once. Every project gets the new version. Like magic, but boring and reliable.
  • Team knowledge? Share the skill. Everyone codes like they wrote the docs. Instant expertise, just add water.
  • New libraries? 15 minutes to perfect implementation. Even if it launched during your lunch break.

.

.

.

Your Library Skills Arsenal: A Field Guide

The Golden Rules

Rule 1: Include Everything, Let Claude Filter

Don’t try to curate “only the important docs.” You’re not the documentation police.

Claude Skills are intelligent. They’ll find what’s relevant. Your job is comprehensive coverage. Be the completionist.

Rule 2: Update Regularly (Set a Calendar Reminder)

Monthly skill updates. Put it in your calendar. Title it “Feed the Skills.” Your future self will send you thank-you notes.

Rule 3: Create Composite Skills

Building with Next.js + Prisma + tRPC? Create a “nextjs-stack” skill with all three. One activation, complete stack knowledge.

(Why make three trips when one will do?)

Rule 4: Test in Isolation

Before using a library skill in production:

  • Create a simple test project
  • Ask Claude to build a basic example
  • Verify the generated code matches current docs

Trust, but verify.

Rule 5: Share Your Skills

That React Native Navigation skill you perfected? Your team needs it. That Stripe integration skill? The community wants it.

Build once. Help everyone.

(Be the hero.)

.

.

.

Your Action Plan (Do This Today)

Step 1: Identify Your Most Frustrating Library

Which one causes the most AI hallucinations?

  • That new API you’re wrestling?
  • The library with the major update?
  • The complex SDK with 100+ endpoints?

Pick your nemesis.

Step 2: Gather Documentation (2 minutes)

Download or clone the docs. Create a folder. Done.

(Easier than making coffee.)

Step 3: Brainstorm Requirements (5 minutes)

Use my prompt. Answer the questions. Let Claude build comprehensive requirements.

No shortcuts here. Do the work.

Step 4: Create The Skill (3 minutes)

Run skill-creator. Package the documentation.

Watch as months of frustration evaporate.

Step 5: Test Immediately

Build something simple. Verify accuracy. Refine if needed.

(But honestly? It usually works perfectly the first time.)

Step 6: Use It Everywhere

Every project. Every feature. Perfect implementation.

No exceptions.

.

.

.

The Future You’re Building (Whether You Know It Or Not)

Picture this: You open Claude Code six months from now.

Your skills library includes:

  • Every major framework (even the ones that don’t exist yet)
  • Your company’s internal SDKs (the undocumented ones)
  • That obscure library only you use (we all have one)
  • The cutting-edge tool that launched this morning

You type: “Build me a real-time collaborative editor with our standard stack”

Claude activates:

  • nextjs-15-skill
  • collaboration-sdk-skill
  • your-ui-components-skill
  • websocket-patterns-skill

Perfect implementation. First try. Every single time.

No more “Claude doesn’t know this library.”

No more debugging hallucinated APIs.

No more being a human API reference.

Just your documentation, permanently accessible, intelligently used.

(Is this what peace feels like?)

.

.

.

Here’s What I Know to Be True

Every library you use regularly should be a Claude Skill.

Not because it’s trendy. Not because it’s the cool new thing. Not even because I said so.

Because spending 15 minutes creating a skill saves you hours of correction. Forever.

Because your team deserves consistent implementation without the learning curve.

Because you have better things to do than correct AI hallucinations all day.

(Like, literally anything else.)

Claude Skills aren’t just about saving time. They’re about eliminating an entire category of AI coding friction. The kind that makes you want to throw your laptop out the window.

So here’s my challenge:

Take that new library. The one with no MCP server. The one Claude keeps getting wrong. The one that’s been making you question your career choices.

Spend 15 minutes. Create the skill. Watch it work perfectly.

Then ask yourself:

Why would you ever go back to the old way?

Stop correcting hallucinations.

Start building with confidence.

Right now.

(Seriously. What are you waiting for?)


Resources:

16 min read ChatGPT, The Art of Vibe Coding, WordPress Automation

How AI Agents Completely Eliminated My WordPress Click-and-Repeat Hell (And Your Clients Will Never Know)

Quick note: If you’re expecting Claude Skills Part 3 this week – it’s coming next week! I’m presenting this WordPress automation topic at WordCamp Taiwan 2025, so I’m switching up the schedule. Part 3 of the Claude Skills series (the one you’ve been waiting for drops next week. Trust me, it’ll be worth the wait.


It’s Friday night, 11:40 p.m.

You’re staring at wp-admin on client site number nine.

Updates → Clear cache → Regenerate CSS → Woo settings check → Lighthouse quick run → Screenshot the results.

You could do it with your eyes closed.

And that’s the problem.

You’re not developing anymore.

You’re a highly-paid mouse with a checklist.

More than 80% of your workload every week is just doing the same 20-30 clicks over and over and over.

What if I told you an AI agent could do all these clicks for you?

Not through APIs.
Not through custom code.

Through the exact same wp-admin interface you’re clicking right now.

.

.

.

The WordPress Pain Nobody Talks About

Here’s what your week actually looks like:

  • Monday morning: Update plugins on 5 client sites (45 minutes of clicking)
  • Tuesday: VAT tax increased – update rates on 12 WooCommerce stores (2 hours)
  • Wednesday: Deploy the same security settings to 8 new sites (90 minutes)
  • Thursday: Set up another identical WooCommerce store (3 hours)
  • Friday: Check all sites for updates, run reports (2 hours)

Sound familiar?

You didn’t become a WordPress developer to be a professional button-clicker.

Yet here you are, executing the same sequences like a well-trained automaton.

The worst part?

You know there’s an API for most of this.

But setting up proper API automation for 20 different client sites?

That’s a week-long project.

By the time you finish, you could have just… clicked the buttons.

Until browser-using AI agents changed everything.

.

.

.

July 2025: The ChatGPT Agent Launch That Changed Everything

I remember exactly where I was when OpenAI announced ChatGPT Agent.

Mid-morning.

Coffee getting cold while I watched the demo.

ChatGPT was… using a browser. Clicking buttons. Filling forms. Reading screens. Making decisions.

That’s when it hit me like a lightning bolt.

WordPress is entirely browser-based.

Every setting. Every configuration. Every update. It’s all just… clicking buttons in wp-admin.

If ChatGPT could use a browser, it could manage WordPress sites.

The possibilities exploded in my mind:

  • Bulk updates across client sites
  • WooCommerce store setups from scratch
  • Tax rate changes across multiple installations
  • Security configurations replicated perfectly
  • Plugin compatibility testing on staging sites

Everything I’d been doing manually could be delegated to an AI that never gets tired, never makes typos, and never accidentally clicks the wrong button at 11:40 p.m.

And ChatGPT wasn’t alone.

There are a few more browser-using AI agents in the market like Perplexity Comet and Claude for Chrome.

The game had changed.

WordPress automation that was impossible six months ago was suddenly trivial.

I immediately started experimenting.

And what I discovered changed my entire business.

.

.

.

How Browser-Using AI Agents Actually Work

A browser-using AI agent is exactly what it sounds like – an AI that can use a browser like a human.

It can:

  • Open websites and navigate pages
  • Read what’s on the screen
  • Click buttons and links
  • Fill out forms
  • Take screenshots
  • Document what it did

But here’s the killer feature for WordPress:

It uses the same wp-admin interface you already know.

No API setup. No authentication headaches. No custom code.

Picture this scenario:

The government just announced a tax rate change from 5% to 7%.

You have 20 WooCommerce client sites.

Each site requires:

  1. Log in to wp-admin
  2. Navigate to WooCommerce → Settings
  3. Click Tax tab
  4. Click Standard Rates
  5. Find the rate field
  6. Change 5% to 7%
  7. Click Save

That’s 7 clicks per site. 20 sites = 140 clicks.

Two hours of your life.

Gone.

Doing the exact same sequence over and over.

Now watch what happens with an AI agent:

You tell it once: “Update the tax rate from 5% to 7% on these 20 sites.”

It does exactly what you would do – logs in, navigates to WooCommerce → Tax → Standard Rates, changes the value, saves.

Across all 20 sites…. while you make coffee.

.

.

.

The WooCommerce Setup That Convinced Me This Was Real

Let me show you what made me a believer.

Setting up a WooCommerce store from scratch involves:

  • Store configuration (15-20 fields)
  • Tax setup (10+ settings)
  • Shipping zones (5-10 configurations per zone)
  • Payment gateways (multiple API keys and settings)
  • Product creation (categories, attributes, variations)

Manually?

That’s 100+ clicks and at least 5 hours of mind-numbing work.

Watch what happened when I gave an AI agent a simple checklist:

The result?

A fully configured WooCommerce store.

Every setting perfect. Every product created. Ready for orders.

100+ clicks. Zero human involvement after providing the checklist.

Want techniques like these weekly?

Join The Art of Vibe Coding—short, practical emails on shipping with AI (without the chaos).

No spam. Unsubscribe anytime. Seriously.

.

.

.

The Secret: It’s All About The Checklist

Here’s what nobody tells you about AI automation:

Your AI agent is only as good as your checklist.

But here’s the beautiful part – you already have these checklists.

  • They’re in your SOPs.
  • Your client documentation.
  • Your head (you’ve done this 100 times).

The even better news?

AI can help you create perfect checklists in two revolutionary ways.

.

.

.

Method #1: Let AI Interview You (The Clarifying Questions Technique)

This changed my entire workflow.

Instead of writing a 200-line checklist from scratch, I give the AI a rough idea and let it interview me.

Here’s exactly how it works:

Step 1: Give AI Your Rough Concept

The full “Let AI Interview You” prompt:

I want to create a demo site for a WooCommerce website. The data for this site needs to be Malaysia-centric, as I am based there.

To achieve this, we will need to set up several key elements: the business address, tax, shipping options, and approximately five products. We'll focus on selling physical products, specifically t-shirts.

For tax, we need to use the local Malaysian SST. Regarding shipping, we will configure it for the US, UK, Singapore, and Malaysia.

For payments, I initially considered a gateway that offers a sandbox environment. However, for now, let's proceed with Stripe as the payment gateway.

So, to summarize, we'll have the address, tax, shipping settings, payment gateway, and physical products (t-shirts) configured for the countries mentioned.

My request from you is a comprehensive list of all necessary items and data points I can use to populate the WooCommerce website, including specific details for the address, tax, shipping, and any other relevant information you deem necessary.

Ask me clarifying questions until you are 95% confident you can complete this task successfully.

a. If the question is about choosing different options, please provide me with a list of options to choose from. Mark the option with a clear label, like a, b, c, etc.
b. If the question need custom input that is not in the list of options, please ask me to provide the custom input.

Always mark each question with a number, like 1/, 2/, 3/, etc. so that I can easily refer to the question number when I answer.

For each question, add your recommendation (with reason why) below the options. This would help me in making a better decision.

Step 2: AI Asks Clarifying Questions

Look at what the AI does. It doesn’t just ask “what do you want?” It provides specific options:

1/ Brand for the demo store
a) BajuLab (fictional)
- Recommendation: Great for demos; avoids mixing with your real brand.
b) Smashing Advantage Apparel (uses your existing brand umbrella)
- Recommendation: Useful if you'll demo to your clients as "your studio's" store.
c) Custom brand (tell me the exact name)

Every question has:

  • Clear options (a, b, c)
  • Recommendations with reasoning
  • Custom input if needed

The AI continues with granular questions about:

  • Tax configuration (SST vs GST)
  • Shipping zones and methods
  • Payment gateway preferences
  • Product catalog structure

Step 3: Answer With Simple Choices

My responses? Dead simple:

No lengthy explanations, or complex configurations. Just pick from the menu.

Step 4: AI Generates Perfect Checklist

The AI transforms my simple answers into a comprehensive, copy-paste kit:

Shows the final comprehensive checklist

But, it’s not done yet.

Next, we will ask the AI to convert it into a detailed checklist (with click-path + values):

From vague idea to perfect checklist in 10 minutes.

.

.

.

Method #2: Turn Your Screen Recording Into a Checklist

Already know how to do the task?

This method is even faster.

Step 1: Record Yourself Doing It Once

Open your screen recorder. Do the task once. Don’t explain anything – just do it normally.

Step 2: Upload to AI

Drop your video into Google AI Studio. No editing needed.

The “Turn Your Screen Recording Into a Checklist” prompt:

I've uploaded a video demonstrating the WordPress plugin update process. The video covers:

1. Creating a backup using a backup plugin to protect against issues
2. Navigating to the plugins page and identifying plugins that need updates
3. Updating plugins one-by-one and verifying the site after each update
4. Restoring from backup if problems occur

**Your Task:**
Analyze the video thoroughly and create a **comprehensive, step-by-step checklist** for updating WordPress plugins. This checklist must be:

- **Generic and reusable** - Don't reference specific plugin names; use placeholders like "[Plugin Name]" or "[Backup Plugin]"
- **Detailed with exact click-paths** - Format: `Dashboard > Section > Subsection > Button/Field`
- **Include specific values** - Note any settings, options, or fields that need to be filled/selected
- **Action-oriented** - Each step should start with a clear action verb (Click, Navigate, Select, Enter, Verify, etc.)
- **Include verification steps** - After each critical action, specify what to check/verify
- **Organized by phases** - Group steps into: Preparation/Backup, Pre-Update Checks, Update Process, Post-Update Verification, and Troubleshooting/Restore

**Format the checklist as:**
- [ ] **Step description** → `Click path` → Value/Action → ✓ Verification checkpoint

This checklist should enable anyone to replicate the process consistently across different WordPress sites and various plugins.

Step 3: AI Documents Every Click

The AI watches your video and creates step-by-step documentation:

Your muscle memory becomes reusable documentation.

Every click.
Every navigation.
Every setting.

Captured and structured automatically.

.

.

.

From “Update and Pray” to “Update and Relax”

WordPress updates.

We all know the feeling.

That red notification bubble haunting your admin bar: “12 updates available.”

Your stomach drops.

Because you know what’s coming.

The Official Best Practice:

  1. Make a full backup
  2. Update on staging first
  3. Test all functionality
  4. Check for conflicts
  5. Document changes
  6. Then update production

The Reality at 11:40 p.m.: “Select all → Update → Pray”

We’ve all been there.

Rolling the dice.

Hoping this isn’t the update that breaks everything.

Remember the last time an update went wrong?

  • The payment gateway that stopped working (discovered by an angry customer)
  • The contact form that suddenly disappeared
  • The shipping calculator that decided everything costs $0
  • The homepage that went completely blank
  • That “minor” security update that broke your custom CSS

The recovery process is its own special hell:

  • Frantically googling error messages
  • SSH-ing into the server at midnight
  • Trying to remember which backup actually works
  • Explaining to the client why their site was down for 3 hours
  • Promising yourself you’ll “do it properly next time”

But next time comes, and you’re exhausted, and there are 12 sites to update, and…

“Select all → Update → Pray”

What if I told you an AI agent could handle all of this automatically?

Not just the updates.

The entire process:

The Challenge: Update multiple WordPress plugins across a client site
The Twist: If anything breaks, automatically rollback

Watch what happened:

The AI agent:

  • Created a backup first (verified it was complete)
  • Updated plugins systematically (one at a time)
  • Checked the site after each update (front-end and critical functions)
  • When it detected a broken plugin, deactivate it.
  • Documented exactly which plugin caused the issue
  • Sent a report with screenshots and recommendations

Total human involvement: Zero.

No stress.
No late-night panic.
No angry client calls.

Just a calm notification: “Updates completed. One compatibility issue detected and resolved. Full report attached.”

.

.

.

“But Isn’t It Risky?” Let’s Talk Security

I know what you’re thinking.

“Giving an AI access to my WordPress sites? That sounds like a security nightmare.”

Valid concern. Let’s address it head-on.

Here’s the reality:

Your WordPress sites are already at risk every day from:

  • Plugin vulnerabilities (remember that massive security hole last month?)
  • Weak passwords (“password123” is still in your client’s database)
  • Human error (ever updated the wrong site at 11:40 p.m.?)
  • Outdated themes causing conflicts
  • That intern who has admin access for some reason

You already know how to handle these risks: backups, staging, testing, proper procedures.

With AI agents, we apply the exact same precautions.

.

.

.

The Three Commandments of AI Agent Security

Rule #1: Never Give AI Your Actual Credentials

Never. Ever. EVER.

Instead:

  • Use one-time passwordless login links
  • Log in first, then hand control to AI
  • Store API keys in wp-config.php, not in checklists
  • Use placeholders in checklists, update manually after

Rule #2: AI Works on Staging, Not Production

Your workflow becomes:

  1. AI agent does its work on staging
  2. You review the results (30 seconds)
  3. If good → merge to production (one click)
  4. If broken → no harm done

Almost every decent host offers staging now. No excuses.

Rule #3: Always Make Backups First

This should already be your religion. But with AI agents, it’s scripture:

  • Backup before any major changes
  • Verify the backup actually works
  • Know your restoration process cold

These aren’t new risks. They’re the same risks you already manage.

The AI agent is just another tool. Like giving your assistant access to update plugins. Except this assistant never gets tired, never makes typos, and documents everything.

.

.

.

The Hidden Benefits Nobody Talks About

Once I started using AI agents for WordPress tasks, unexpected benefits emerged:

Benefit #1: Perfect Documentation

Every task the AI performs is documented. Every click. Every change. Every result.

Client asks “what changed on my site last month?”

Here’s the exact log of every update, every setting change, every modification. With timestamps.

Benefit #2: Consistency Across All Sites

That security configuration you perfected? It’s now identical across all 20 client sites.

No more “I think I configured this one differently” or “Did I remember to add that firewall rule?”

Benefit #3: Testing Becomes Trivial

Want to test how a plugin update affects 5 different theme configurations?

  • Spin up 5 staging sites.
  • Give the AI agent the same checklist for each.
  • Watch it test all 5 simultaneously while you grab coffee.

Benefit #4: You Can Take a Real Vacation

Picture this: You’re on a beach in Bali. Feet in the sand. Favorite beverage in hand (mine’s a cold coconut water, but you do you).

Your phone buzzes. It’s your AI agent:

“Weekly maintenance complete. 47 plugins updated across 12 sites. Two compatibility issues detected and resolved. All sites passing health checks. Full report ready for client review.”

You take another sip. Maybe check the report. Maybe don’t.

Site maintenance doesn’t stop because you’re sipping margaritas on a beach. Your AI agents run on the cloud, execute your checklists, handle the issues.

You only intervene if something actually needs your expertise. Which, let’s be honest, is rare when it comes to routine updates.

.

.

.

Your WordPress Workflow, Transformed

Let’s get specific about what this means for your daily workflow:

Before AI Agents (Your Current Week)

  • Monday: 3 hours of plugin updates across client sites
  • Tuesday: 2 hours setting up a new WooCommerce store
  • Wednesday: 1 hour updating tax rates and shipping zones
  • Thursday: 2 hours running security audits and fixing issues
  • Friday: 2 hours generating reports and maintenance

Total: 10 hours of clicking

After AI Agents (Your New Week)

  • Monday morning: 15 minutes reviewing AI agent reports from weekend maintenance
  • Monday afternoon: Actually building that custom feature your client wants
  • Tuesday – Thursday: Real development work
  • Friday: Planning next week while AI agents run all maintenance

Total: 15 minutes of oversight

That’s not a 50% improvement. That’s not even a 90% improvement.

That’s 40 hours per month of your life back.

.

.

.

How to Start Tomorrow Morning

Here’s exactly how to implement this:

Step 1: Pick Your Most Painful Task

What did you do this week that made you want to quit WordPress?

  • Setting up another identical WooCommerce store?
  • Updating plugins across 10 sites?
  • Migrating settings between staging and production?

Pick ONE task. The one that hurts the most.

Step 2: Create Your First Checklist

Use Method #1 (AI interview) or Method #2 (screen recording).

Don’t overthink it.

Your first checklist won’t be perfect. That’s fine.

Step 3: Test on a Staging Site

Never test on production first. Clone one of your sites to staging.

Give the AI agent your checklist. Watch it work.

Step 4: Refine and Scale

Your first run will reveal issues:

  • Missing steps in the checklist
  • Unclear instructions
  • Edge cases you forgot

Fix them. Run again. Once it’s perfect, you have a reusable automation forever.

Step 5: Expand Systematically

One task automated successfully? Move to the next:

  1. Week 1: Plugin updates
  2. Week 2: WooCommerce setups
  3. Week 3: Security configurations
  4. Month 2: Everything routine is automated

.

.

.

The Real Question: What Will You Do With Your Time?

Remember that Friday night at 11:40 p.m.? Clicking through client site number nine?

That version of you doesn’t have to exist anymore.

You didn’t become a WordPress developer to click buttons. You got into this to build things. To solve problems. To create.

When 80% of your routine work is handled by AI agents, what will you do?

Maybe you’ll:

  • Take on more clients (without burning out)
  • Build that SaaS you keep dreaming about
  • Actually enjoy your weekends
  • Learn that new framework you’ve been putting off
  • Spend time with your family instead of wp-admin

Or maybe you’ll just sleep better knowing that while you rest, your AI agents are handling the midnight maintenance, the weekend updates, the mind-numbing configurations.

All the work. None of the clicking.

.

.

.

Your Challenge This Week

I’m not asking you to automate everything. I’m not even asking you to trust AI with production sites yet.

I’m asking you to do ONE thing:

Pick one repetitive task you did this week.

Just one.

Create a checklist for it. Hand it to an AI agent. Watch what happens.

Because once you see it work – once you watch an AI agent perfectly execute 100 clicks in 6 minutes – you’ll realize something profound:

You’ve been doing WordPress on hard mode this entire time.

The age of manual WordPress management is over.

The age of AI agents is here.

What will you automate first?

Stop clicking.

Start delegating.

Your future self – the one actually building cool stuff instead of clicking buttons – will thank you.


9 min read The Art of Vibe Coding, Claude, Codex, GPT-5, Vibe Coding

Claude Skills Part 2: How to Turn Your Battle-Tested Code Into a Reusable Superpower

You’ve built the perfect authentication system.

It took months. Every edge case handled. Every security hole plugged. Production-tested across three different apps.

And now you’re starting project number four.

Time to rebuild it. Again. From scratch.

Because that’s how AI works, right? It gives you a solution, not your solution.

Wrong.

Last week, I showed you how Claude Skills changed everything – letting you replicate YOUR exact patterns across every project.

Today, I’m going to show you exactly how to create your own Claude Skills.

By the end of this article, you’ll know how to turn any feature into a reusable skill that Claude Code can deploy perfectly every time.

.

.

.

The Secret: It’s Not About Code, It’s About Documentation

Here’s what most developers get wrong about Claude Skills.

They think it’s about copying code files. Dumping your lib/auth folder into a skill and calling it done.

That’s not how it works.

Claude Skills aren’t code repositories.

They’re implementation guides that teach Claude your specific patterns, your architecture decisions, your way of solving problems.

And the key to creating a powerful skill?

Comprehensive documentation that captures not just WHAT your code does, but HOW and WHY it works.

Let me show you exactly how I turned my authentication system into the Claude Skill I demonstrated in Part 1.

.

.

.

Step 1: Let GPT-5 Document Your Implementation (10 Minutes)

This is counterintuitive, but stay with me.

I don’t use Claude to document my Claude Skills. I use GPT-5.

Why? Because GPT-5 is meticulous. It’s the senior architect who notices every pattern, every decision, every subtle implementation detail.

Here’s my exact process:

Initial prompt to GPT-5 asking it to analyze the authentication codebase

I give GPT-5 this prompt:

I want to update the authentication implementation docs at 
#file:authentication.md to match the current implementation of authentication for 
this app.

Read the codebase, analyze how this app implemented the authentication, then 
update the docs.

Ask me clarifying questions until you are 95% confident you can complete this task 
successfully.

a. If the question is about choosing different options, please provide me with a list 
of options to choose from. Mark the option with a clear label, like a, b, c, etc.
b. If the question need custom input that is not in the list of options, please ask me 
to provide the custom input.

Always mark each question with a number, like 1/, 2/, 3/, etc. so that I can easily 
refer to the question number when I answer.

For each question, add your recommendation (with reason why) below each 
options. This would help me in making a better decision.

Notice the key elements:

  • 95% confidence threshold (forces thoroughness)
  • Structured question format (speeds up the process)
  • Recommendations included (leverages GPT-5’s analysis)
GPT-5 analyzing the codebase, showing it reading files and understanding patterns

Watch as GPT-5 systematically explores:

  • Authentication routes (/app/api/auth/**)
  • Library files (auth.ts, jwt.ts, rate-limit.ts)
  • Middleware implementation
  • Database schema
  • Environment variables

GPT-5 asks targeted questions:

GPT-5 asking clarifying questions about CSRF protection, hCaptcha, and other implementation details

I answer with just the option letters.

Me answering with simple "1/a, 2/a, 3/a" format

No lengthy explanations needed. GPT-5 already understands my intent.

The result?

GPT-5 compiling the comprehensive authentication documentation

A complete authentication implementation guide covering:

  • System architecture
  • Security measures (CSRF, rate limiting, audit logging)
  • Database schema with relationships
  • API endpoints with exact paths
  • JWT token strategy with sessionVersion
  • Environment variables with defaults
  • Migration checklist for new projects

302 lines of detailed documentation. Every decision documented. Every pattern explained.

Time spent: 10 minutes.

Now, you might notice something different in my screenshots – I’m using GPT-5 in GitHub Copilot instead of my usual Codex.

The reason?

I’d hit my Codex weekly limits when writing this. (Yes, even I burn through those limits when I’m deep in development mode.)

But here’s what I discovered: GPT-5 in GitHub Copilot is an excellent substitute for Codex. In terms of performance – especially when it comes to analyzing codebases – I honestly can’t tell the difference.

Same meticulous analysis.
Same comprehensive documentation.
Same quality output.

.

.

.

Step 2: Create ASCII Wireframes for the UX Flow (5 Minutes)

Here’s where most skill creators stop. They have the backend documentation.

But Claude Skills need to understand the FULL implementation – including the UI.

This is where ASCII Wireframes become your secret weapon.

I ask GPT-5:

Asking GPT-5 to create ASCII wireframes

Why ASCII instead of HTML mockups?

HTML mockup for login page: ~500 lines, ~15,000 tokens ASCII wireframe for login page: ~50 lines, ~1,500 tokens

Same information. 90% less tokens.

GPT-5 creating comprehensive ASCII wireframes document

GPT-5 creates wireframes for every screen:

Every interaction mapped. Every flow documented. Claude will know EXACTLY what UI to build.

Total documentation time: 15 minutes.

.

.

.

Step 3: Transform Documentation Into a Claude Skill (5 Minutes)

Now we have comprehensive documentation and wireframes. Time to turn them into a Claude Skill.

First, you need the skill-creator skill itself. Get it from Anthropic’s skills repository.

Project structure showing skill-creator in .claude/skills folder and documentation in notes folder

My project structure:

.claude/
  skills/
    skill-creator/     # The skill that creates skills
notes/
  authentication.md            # Our documentation
  authentication_wireframes.md # Our wireframes

Start a new Claude Code session and ask:

Asking Claude "what are the available skills?"

Claude shows the available skills:

Now the magic moment:

Asking Claude to create authentication skill
Please use the skill-creator skill to create a new skill with the skill-creator that shows 
how to set up authentication exactly like this app does. Please refer to the documentation 
@.notes/authentication.md and wireframes @.notes/authentication_wireframes.md.

Watch as Claude:

  1. Reads the skill-creator instructions
  2. Explores your authentication codebase
  3. Analyzes your documentation
  4. Studies the wireframes
Claude exploring the codebase to understand the authentication implementation

It’s not just copying files.

It’s understanding your implementation and transforming it into teachable instructions.

Claude creating the authentication-setup skill structure

Claude creates a complete skill structure:

authentication-setup/
  ├── SKILL.md                    # Main skill instructions
  ├── scripts/                    # Initialization scripts
  ├── references/                 # Your documentation
  │   ├── database_schema.md      # Prisma schema reference
  │   ├── environment_variables.md # Required env vars
  │   ├── dependencies.md         # NPM packages needed
  │   └── implementation_guide.md # Step-by-step guide
  └── assets/                     # Templates and examples
      └── migration_checklist.md  # Deployment checklist

Key insight: The skill doesn’t contain your actual code files. It contains instructions for recreating your patterns.

Claude packages everything into authentication-setup.zip:

Claude showing the packaged skill is ready

Time to create skill: 5 minutes.

.

.

.

Step 4: Deploy Your Skill to Another Project (2 Minutes)

This is where the payoff happens.

Uploading the skill to a new Next.js project's .claude/skills folder

Take your authentication-setup.zip and extract it to any project:

new-project/
  .claude/
    skills/
      authentication-setup/  # Your skill goes here

Start Claude Code in the new project. Type:

In new project, typing "/authentication-setup" to trigger the skill

Claude immediately recognizes the skill:

Claude recognizing and loading the authentication-setup skill
Claude implementing the complete authentication system

Claude doesn’t just copy files. It:

  • Analyzes your current project structure
  • Adapts to your existing patterns
  • Integrates with your current code
  • Maintains your architectural decisions

Your exact authentication system. In a completely new project. In under 10 minutes.

.

.

.

The Power of Compound Knowledge

Think about what just happened.

You took months of refinement, every bug fix, every security improvement, every UX enhancement…

And packaged it into 20 minutes of documentation work.

Now that skill can be deployed to:

  • Every new project you start
  • Every team member’s workspace
  • Every client implementation
  • Every prototype that needs auth

The math is staggering:

1 skill × 10 projects = 10 hours saved 10 skills × 10 projects = 100 hours saved Your entire toolkit as skills = Career-changing productivity

But here’s what nobody talks about…

.

.

.

Why GPT-5 + Claude Skills Is The Ultimate Combo

Using GPT-5 to document for Claude Skills isn’t random. It’s strategic.

GPT-5’s superpower: Meticulous analysis and comprehensive documentation
Claude’s superpower: Following detailed instructions perfectly

When you combine them:

  1. GPT-5 extracts every pattern and decision from your code
  2. Claude Skills preserves that knowledge permanently
  3. Claude Code implements it flawlessly every time

It’s like having a senior architect (GPT-5) document your best practices, then having infinite junior developers (Claude Code instances) who can implement those practices perfectly.

No knowledge loss.
No pattern drift.
No “I think I did it differently last time.”

.

.

.

Common Mistakes to Avoid

Mistake #1: Skipping the Documentation Phase

“I’ll just copy my code files into the skill.”

Wrong.

Skills need context, not just code.

Without documentation, Claude won’t understand your architectural decisions.

Mistake #2: Forgetting the UI Wireframes

Backend-only skills create Frankenstein features.

Same logic, completely different UI.

Always include wireframes.

Mistake #3: Not Testing in a Clean Project

Always test your skill in a fresh project.

That’s where you’ll discover missing dependencies or assumptions.

.

.

.

Your Skills Library Starts Today

Here’s your action plan:

1. Identify Your Most Reused Feature

What do you build in every project?

  • Authentication system?
  • Admin dashboard?
  • Payment integration?
  • File upload handling?

2. Document It With GPT-5 (15 minutes)

Use my exact prompt. Let GPT-5 extract every pattern.

3. Create ASCII Wireframes (5 minutes)

Map the UI flow. Every screen. Every interaction.

4. Generate The Skill (5 minutes)

Use skill-creator. Let Claude package your knowledge.

5. Test In a New Project

Deploy it. Use it. Refine it.

6. Repeat For Your Next Feature

Build your library one skill at a time.

.

.

.

The Compound Effect Nobody Sees Coming

Every skill you create makes the next project easier.

But here’s what really happens:

Month 1: You create 3 skills (auth, payments, dashboard) Month 2: You create 5 more (file upload, search, notifications…) Month 3: You realize you can build entire apps in hours

By month 6?

You’re not coding anymore. You’re orchestrating.

  • “Use authentication-setup skill.”
  • “Use payment-processing skill.”
  • “Use admin-dashboard skill.”

Complete applications assembled from your battle-tested components.

Each implementation identical to your best work.

No quality degradation.
No pattern drift.
No forgotten edge cases.

This isn’t the future of development. It’s available right now.

.

.

.

Part 3 Preview: Teaching Claude Any Library

Next week, I’ll show you something even more powerful.

How to create Claude Skills that teach Claude to perfectly integrate ANY library or SDK into your apps.

Imagine:

  • “Use the stripe-integration skill” → Your exact Stripe patterns
  • “Use the websocket-setup skill” → Your real-time architecture
  • “Use the testing-harness skill” → Your testing methodology

Not generic implementations. YOUR implementations.

But for now…

Open that project with your best authentication system.

Document it with GPT-5.

Turn it into a skill.

Watch as 10 minutes of work today saves you 10 hours next month.

What feature will you turn into a Claude Skill first?

Stop rebuilding.

Start packaging.

Now.


P.S. – Since creating my authentication-setup skill two weeks ago, I’ve deployed it to 6 different projects. Total time saved: 14 hours. Total consistency: 100%. Every deployment identical to my best implementation. That’s the power of turning your code into Claude Skills.

P.P.S. – The skill-creator skill itself is open source. You can find it at github.com/anthropics/skills. But the real magic? It’s in the skills YOU create from YOUR battle-tested code.

8 min read Claude, Codex, The Art of Vibe Coding, Vibe Coding

Claude Skills: Your “I Know Kung Fu” Moment Has Arrived (Part 1 of 3)

You’re building your fifth Next.js app this month.

Time for authentication. Again.

You fire up Claude Code. “Build me email OTP authentication with JWT, password management, rate limiting, CSRF protection…”

Claude starts coding.

It looks good.

But wait – the JWT implementation is different from your last project. The rate limiting uses a different pattern.

The password hashing… is this bcrypt or argon2 this time?

Every. Single. App.

A different variation of the same feature.

Not because you want variety.

But because that’s how AI works – it gives you a solution, not your solution.

Until now.

.

.

.

The Problem That’s Been Staring Us in the Face

We’ve all been here.

You’ve built authentication for your SaaS app.

It’s perfect.
Production-tested.
Battle-hardened.

Next project comes along.

Same authentication needs.

But when you ask Claude Code to build it:

  • Different JWT strategy (why are we using RS256 now?)
  • Different database schema (wait, where’s the sessionVersion field?)
  • Different security patterns (no rate limiting on the OTP endpoint?)
  • Different file structure (why is auth logic scattered across 15 files?)

Sure, it works.

But it’s not your authentication system. The one you’ve refined over months. The one with all the edge cases handled.

It’s like having a master chef forget their signature recipe every time they walk into a new kitchen.

The real tragedy?

You have the perfect implementation.

It’s sitting right there in your last project. But there’s been no way to teach Claude Code your patterns, your architecture, your way of doing things.

Until Claude Skills changed everything.

.

.

.

Enter Claude Skills: The “I Know Kung Fu” Moment

Remember that scene in The Matrix?

Neo downloads kung fu directly into his brain. Instant mastery. No training montage required.

That’s Claude Skills.

But instead of martial arts, you’re uploading your battle-tested code patterns directly into Claude’s knowledge base.

Here’s what just became possible:

Before Claude Skills:

  • “Build authentication” → Random implementation each time
  • Hours of tweaking to match your standards
  • Inconsistent patterns across projects
  • The eternal “wait, how did I do this last time?” dance

After Claude Skills:

  • “Use the authentication-setup skill” → Your exact implementation
  • Same patterns, same structure, same security measures
  • 10 minutes from zero to production-ready auth
  • Perfect consistency across every project

This isn’t just about saving time. It’s about something much bigger.

.

.

.

The Authentication Skill That Changes Everything

Let me show you exactly what I mean.

I built a Next.js boilerplate with a complete authentication system:

  • Email OTP with 6-digit codes via Resend
  • JWT sessions (access + refresh tokens)
  • Password management with bcrypt
  • CSRF protection on all mutations
  • Rate limiting per email/IP
  • Audit logging for security events
  • Whitelist-only email access
  • PostgreSQL + Prisma ORM

This wasn’t a weekend hack.

This was weeks of refinement. Every edge case handled. Every security hole plugged.

Then I turned it into a Claude Skill.

Now watch what happens.

Claude listing available skills when asked

I simply ask: “What are the available skills?”

Claude shows me my arsenal:

  • authentication-setup – Complete auth system with everything I mentioned
  • multi-tenant-setup – Organizations, memberships, invitations
  • dashboard-shell-setup – Production-ready dashboard with resizable sidebar
  • ai-sdk-v5 – AI integrations for OpenAI, Anthropic, Gemini

Each skill is a complete feature set, ready to deploy.

.

.

.

The 10-Minute Authentication Implementation

Here’s where it gets interesting.

I tell Claude: “Please use the authentication-setup skill to setup the email OTP authentication for this app.”

I provide my PostgreSQL connection string and mention I need dev-only password login for testing.

Claude recognizes the skill and asks permission.

This is important – you maintain control over what gets implemented.

Claude asking permission to use the skill

Watch as Claude:

  1. Examines your current project structure
  2. Reads the skill instructions
  3. Checks for existing code to avoid conflicts
Claude initializing the skill and exploring the codebase

This isn’t blind copy-paste. It’s intelligent integration.

Here’s the genius part.

Claude asks configuration questions:

  • Want to use shadcn/ui components or plain HTML?
  • Have a Resend API key ready?
  • Which additional features to include?

These aren’t random questions.

They’re part of the skill definition, ensuring the implementation matches YOUR specific needs for THIS project.

I select my preferences.

User answering the configuration questions

Notice how Claude provides options but also accepts custom inputs. The skill is flexible, not rigid.

Then Claude presents the complete implementation plan:

The plan includes:

  • Phase 1: Dependencies & Infrastructure
  • Phase 2: Core Library Files
  • Phase 3: API Routes
  • Phase 4: Middleware & Route Protection
  • Phase 5: UI Implementation
  • Phase 6: Database & Scripts
  • Phase 7: Configuration & Documentation

Every. Single. Detail. Planned. Before writing any code.

.

.

.

Watching the Magic Happen

With the plan approved, Claude goes to work.

Installing dependencies and setting up Prisma

First, dependencies. Notice it installs exactly what my authentication system needs:

  • @prisma/client for database
  • bcrypt for password hashing
  • jose for JWT operations
  • resend for emails
  • zod for validation
  • @zxcvbn-ts for password strength

Not a generic “auth package” in sight. These are my chosen tools.

Creating the database schema and migrations

The Prisma schema matches my pattern exactly:

  • User model with sessionVersion for instant session invalidation
  • OtpToken model with attempt tracking
  • AuditLog for security events

This isn’t Claude’s guess at a schema.

This is MY schema.

Building the authentication library files

Watch as it creates:

  • lib/auth.ts – Core authentication logic
  • lib/csrf.ts – CSRF protection
  • lib/rate-limit.ts – Rate limiting with database tracking
  • lib/jwt.ts and lib/jwt-edge.ts – Separate JWT handlers for Node and Edge runtime
Creating API routes with proper structure

326 lines in lib/auth.ts alone. Every function, every pattern, exactly as I designed it.

The API routes follow my exact pattern:

app/api/auth/
├── request-otp/route.ts
├── verify-otp/route.ts
├── dev-signin/route.ts
├── signout/route.ts
├── refresh/route.ts
└── profile/
    ├── set-password/route.ts
    └── change-password/route.ts

Not scattered.

Not random.

My structure.

Implementing middleware and protected routes

Edge middleware that:

  • Verifies JWT without database calls (performance!)
  • Protects /dashboard/* and /settings/*
  • Redirects with ?next= parameter for smooth auth flow

The login page with:

  • Tabbed interface (OTP + Dev Password)
  • React Hook Form + Zod validation
  • Sonner toast notifications
  • Proper loading states
More UI implementation details

Protected layouts, profile pages, dashboard – all following the same patterns.

Claude completing the implementation

Done.

In under 10 minutes of actual implementation time.

The complete getting started guide

Claude even provides a getting started guide:

  1. Create superadmin: SEED_EMAIL=you@example.com npm run seed:superadmin
  2. Start dev server: npm run dev
  3. Visit http://localhost:3000
  4. Sign in with your email

Everything documented. Everything working.

.

.

.

The Proof: Side-by-Side Comparison

But does it actually match the original?

Login page comparison - original boilerplate (top) vs Claude Skills implementation (bottom)
Login page comparison – original boilerplate (top) vs Claude Skills implementation (bottom)]

Look at those login pages.

The structure, the tabs, the form layout – virtually identical.

Some minor styling differences, but the core implementation?

Exact match.

Profile page comparison - original (left) vs Claude Skills implementation (right)
Profile page comparison – original (left) vs Claude Skills implementation (right)

The profile pages tell the same story. Same sections, same password management, same session handling.

Here’s the kicker: The Claude Skills version actually improved on my original in some places. Cleaner code organization. Better error messages. More consistent styling.

The student became the master.

Then taught the next student to be even better.

Want techniques like these weekly?

Join The Art of Vibe Coding—short, practical emails on shipping with AI (without the chaos).

No spam. Unsubscribe anytime. Seriously.

.

.

.

Why This Changes Everything

This isn’t just about authentication.

Think bigger.

Every feature you’ve perfected can become a skill:

  • Your payment integration with Stripe
  • Your real-time notification system
  • Your file upload handling
  • Your admin dashboard layout
  • Your API error handling patterns
  • Your testing setup

Build once. Refine until perfect. Convert to skill. Deploy everywhere.

The compound effect:

1 perfected feature × 10 projects = 10 hours saved 10 perfected features × 10 projects = 100 hours saved 100 perfected features × Your entire career = …you do the math

But it’s not just time saved.

It’s consistency gained. It’s quality guaranteed. It’s your personal coding style, preserved and replicated perfectly.

.

.

.

The Hidden Benefits Nobody Talks About

Benefit #1: Your Code Patterns Become Your Coding Standard

No more “wait, which project had the good auth implementation?”

Your Claude Skills ARE your coding standard.

Benefit #2: Onboarding Becomes Trivial

New developer joins your team? “Here are our Claude Skills. Use them.”

Instant consistency.

Benefit #3: You Stop Reinventing Wheels

That perfect rate limiting implementation from 6 months ago?

It’s in your skill.

Ready to deploy.

Benefit #4: Your Skills Get Better Over Time

Find a bug in your auth flow? Fix it in the skill.

Every future project gets the improvement.

Benefit #5: You Can Share (Or Sell) Your Expertise

Those Claude Skills you’ve perfected?

They’re valuable. Share with your team. Open source them. Monetize them.

.

.

.

Your “I Know Kung Fu” Moment Awaits

Here’s what you need to understand:

Claude Skills aren’t just another AI feature. They’re the bridge between “AI that codes” and “AI that codes the way YOU code.”

It’s the difference between:

  • A junior developer googling solutions
  • A senior developer implementing YOUR solutions

Every pattern you’ve perfected.
Every architecture you’ve refined.
Every security measure you’ve battle-tested.

All of it can become a Claude Skill.

All of it can be replicated perfectly across every project you ever build.

The question isn’t whether you should start using Claude Skills.

The question is: which of your battle-tested features will you turn into a skill first?

In Part 2, I’ll show you exactly how to convert your existing codebase into a Claude Skill.

The process is simpler than you think, and the payoff is massive.

But for now, open that project with the perfect authentication system.

The one you’ve been copying manually to every new project.

It’s time to teach Claude YOUR kung fu.


P.S. – That authentication skill I demonstrated? It’s now deployed in 5 different production apps. Same code. Same patterns. Same security. Total implementation time across all 5 apps: under an hour. The old way would have taken days, and each would have been slightly different. That’s the power of Claude Skills.

P.P.S. – Part 2 drops next week: “How to Convert Your Battle-Tested Code Into Claude Skills.” I’ll walk you through turning your existing codebase into reusable skills, with specific examples and templates you can use immediately.