Something strange happened to my workflow last month. I stopped handing off designs to developers. Not because the projects ended. Because I started shipping them myself.

I am not a developer. Well, not anymore. In my early career, I worked as a full-stack developer and designer at creative agencies. Back then, we called it being a "webmaster." You did everything: design, frontend, backend, deployments, the whole stack.

Over the years, I focused on design strategy and moved away from writing code daily. But I never stopped keeping up with development, especially frontend. It was always there, like a skill I had put on pause but never forgotten.

Then Claude Code came along, and it felt like unlocking something I had forgotten I had. All that development knowledge was not just useful for understanding technical constraints or talking to dev teams anymore. It became a way to ship things independently again.

Over the past few months, I have built more functional prototypes, internal tools, and client demos than I did in the previous year. Not by writing code from scratch, but by leveraging what I already understood about how code works.

This is not about learning to code. It is about fundamentally changing how designers work.


The Translation Problem

For years, the advice to designers was always the same: learn to code.

I already knew how to code. JavaScript, React, Node, databases. I had built production systems in creative agencies back when responsive design was cutting-edge and we were hand-coding CSS media queries.

But as I moved into design leadership, the gap between knowing how to code and actually coding grew wider. Not because I forgot, but because the overhead became too much. Setting up build tools, managing dependencies, debugging webpack configs, keeping up with framework churn. The cognitive load of switching between design thinking and syntax debugging was exhausting.

The problem was not capability. It was the translation layer between design intent and implementation.

I could see the solution in my head: the interaction, the data flow, the edge cases. But translating that vision into working code meant fighting with tooling, hunting for the right packages, debugging mysterious errors, and constantly switching between designer brain and developer brain.

What changed was not learning a new framework. It was finding a tool that removed the translation layer entirely.

Claude Code understands design intent and translates it directly into working software. I describe what I want to build using my designer vocabulary and my developer intuition. It writes the code. I iterate by giving feedback on what I see, informed by years of knowing what should happen under the hood.

This is what some call vibe coding. And for someone with a developer background, it is like having a senior developer pair-programming with you who executes at the speed of thought.


What This Actually Looks Like in Practice

Project 1: Personal AI Agent for Vintage Watch Hunting

I was trying to find the perfect gift for my wife: a vintage Cartier Tank. The problem was time. I simply could not keep up with the endless searching, comparing, and bidding across multiple vintage watch marketplaces.

So over a weekend, I decided to build a personal web app: an AI-powered agent that could help me search, monitor, and bid on vintage watches across different platforms.

Using Claude Code, I moved from idea to a working prototype in just a few days. Literally a weekend.

I described the outcome I wanted: how the agent should search, evaluate listings, and surface the best opportunities. Claude helped me design the system architecture, integrate marketplace data, and translate my product and UX thinking directly into functional code. I iterated by giving feedback on behavior, logic, and interactions rather than fighting syntax or debugging loops.

What would normally require weeks of development and coordination became a focused design-and-build sprint. The result was not just a prototype. It was a practical tool that solved a real problem in my life, built at exactly the moment I needed it.

Project 2: Figma-to-Development Workflow

I integrated Figma's Model Context Protocol (MCP) with Claude Code to create a design-to-development pipeline. Designers update components in Figma, Claude Code pulls the latest design tokens and generates production-ready React components.

Built in 5 days. Now running for client projects.

These are not just prototypes. They are production tools that real people actually use.


The Full Workflow: Step by Step

Everything you need to know as a designer, non-technical edition.

Step 1: Set Up Claude Code + Get Shit Done

You need two things: Claude Code (the coding agent) and Get Shit Done (the meta-prompting system that makes it think like a designer).

Install Claude Code

On Mac, open Terminal (Applications → Utilities → Terminal) and run:

npm install -g @anthropic-ai/claude-code

If you do not have npm, install Node.js first from nodejs.org.

On Windows, download the native installer from Anthropic's website.

Verify it works by typing claude in your terminal. You should see Claude Code launch with a welcome message.

Install Get Shit Done

GSD Install

This is the step most designers skip, but it is actually the most important one. Claude Code is powerful, but without proper context engineering, it degrades as the conversation gets longer. Get Shit Done (GSD) solves this.

npx get-shit-done-cc

Choose Runtime: Claude Code, and Location: Global (so it works across all projects).

Verify by running claude --dangerously-skip-permissions and typing /gsd:help inside Claude Code. You should see a full list of GSD commands.

Why --dangerously-skip-permissions?

GSD automates git commits, file operations, and date stamps. Approving each action manually defeats the purpose. This flag lets Claude work autonomously, which is how you should use it for serious projects.

What GSD Does:

GSD makes Claude question your assumptions before building anything. Instead of immediately generating code, it asks:

  • "What happens when there's no data to display?"
  • "Should this work on mobile?"
  • "What's the error state look like?"
  • "How do users undo this action?"

This is the designer mindset. Without GSD, Claude jumps straight to code. With GSD, it thinks through the product first.


Step 2: Understanding the Terminal

The terminal is not as scary as it looks. Here are the only commands you need to know:

claude                    # Start Claude Code
cd folder-name            # Navigate into a folder
cd ..                     # Go back one folder
ls                        # List files (Mac/Linux)
dir                       # List files (Windows)
pwd                       # Show current location

That is it. Everything else, Claude Code handles.

Pro tip: You can also use Cursor, Antigravity or Visual Studio Code with a built-in terminal, which lets you see your files and code alongside Claude Code. Go to View → Terminal or press Cmd+J to open it.


Step 3: Build Your First Project (The GSD Way)

This is where everything changes.

Most AI coding tools let you describe what you want and immediately start generating code. That is why most AI-generated projects fall apart. They optimize for speed, not thinking.

GSD forces Claude to think like a product designer first.

Let us build a personal portfolio, but properly.

Start a new project:

cd Desktop
mkdir my-portfolio
cd my-portfolio
claude --dangerously-skip-permissions

Then inside Claude Code type /gsd:new-project.

What happens next: Phase 1 - Questions

GSD does not jump to code. It interrogates your idea:

  • What is the primary goal of this portfolio?
  • Who is the target audience?
  • What feeling should visitors have when they land on the site?
  • Do you have existing brand guidelines or color preferences?
  • What happens if a project has no image?
  • Should projects link to live demos or case studies?
  • Do you want analytics tracking?
  • What is the call-to-action? Contact form, email, LinkedIn?
  • How will you update project content later? CMS? Markdown files?

This is the part most designers skip when working with developers. We assume shared context that does not exist. GSD makes that context explicit.

Answer each question. Be specific. The clarity here determines everything downstream.

Phase 2: Research (Optional but Recommended)

GSD spawns parallel research agents to investigate:

  • Stack options: What is the best tech for a static portfolio in 2025?
  • Feature patterns: How do modern portfolios handle navigation, project grids, contact forms?
  • Architecture: SSG vs SSR? MDX for content? Image optimization?
  • Pitfalls: Common mistakes in portfolio sites (slow loading, poor mobile UX, broken links)

This research is specific to your answers. If you said "I want a CMS," it researches headless CMS options. If you said "no CMS, just Markdown," it skips that.

Phase 3: Requirements Extraction

GSD generates REQUIREMENTS.md:

# Requirements

## V1 (Must Have)
- Full-screen hero with name and tagline
- Project grid showing 4 recent works with images and descriptions
- About section with background and skills
- Contact section with LinkedIn and email links
- Responsive design (mobile, tablet, desktop)
- Fast page load (<2s)

## V2 (Nice to Have)
- Dark mode toggle
- Project filtering by category
- Case study pages with detailed breakdowns
- Form submission handling

## Out of Scope
- Blog
- E-commerce
- User accounts

You approve or adjust this. Once locked, GSD will not add scope creep later.

Phase 4: Roadmap Creation

GSD breaks V1 into phases:

# Roadmap

## Phase 1: Foundation
- Project structure
- Design system (typography, spacing, colors)
- Base HTML/CSS architecture

## Phase 2: Core Layout
- Hero section with vertical centering
- Responsive grid for projects
- About section layout

## Phase 3: Content & Polish
- Project data structure
- Responsive images with optimization
- Contact section with links
- Mobile navigation

## Phase 4: Deployment
- Vercel setup
- Performance optimization
- Custom domain configuration

You approve the roadmap. Now you are ready to build.

What just got created:

.planning/
  ├── PROJECT.md          # Vision, approved by you
  ├── REQUIREMENTS.md     # V1/V2 scope with phase mapping
  ├── ROADMAP.md          # Phases with clear deliverables
  ├── STATE.md            # Current position and decisions
  └── research/           # Domain knowledge (if research enabled)
      ├── stack.md
      ├── features.md
      ├── architecture.md
      └── pitfalls.md

Why This Matters: With vs Without GSD

Without GSD:

  • You: "Build me a portfolio site"
  • Claude: Immediately generates generic HTML/CSS
  • You: "Actually, I wanted dark mode and mobile looks broken"
  • Claude: Refactors everything, breaks other things
  • Result: Endless iteration, degrading quality

With GSD:

  • You: "Build me a portfolio site"
  • GSD: Questions your assumptions, researches the domain, creates requirements, maps a roadmap
  • You: Approve or adjust before any code is written
  • Claude: Builds exactly what you specified, no surprises

The quality difference is significant. This is spec-driven development, but the spec is generated through conversation, not written in Jira by a project manager.


Step 3.5: Discuss Phase (The Secret Weapon)

Before GSD plans or builds anything, you shape the implementation.

Your roadmap says "Phase 2: Core Layout," but that is not enough context to build it your way. This step captures your design preferences before research or planning begins.

Run /gsd:discuss-phase 2.

What happens:

GSD analyzes Phase 2 and identifies decision points based on what is being built:

Phase 2 involves visual layout components. Let's define your preferences:

1. Hero section layout
   - Centered vs left-aligned?
   - Background treatment (solid color, gradient, image)?
   - Text hierarchy (size relationships between name and tagline)?

2. Project grid
   - Card density (compact, spacious, generous)?
   - Hover behavior (lift, shadow, scale, none)?
   - Image aspect ratio (16:9, 4:3, 1:1)?
   - Empty state handling (show placeholder, hide section, message)?

3. Content flow
   - Scroll behavior (smooth scroll, instant, snap)?
   - Section transitions (hard break, gradient fade, overlap)?
   - Spacing rhythm (tight, balanced, generous)?

For each area, what's your vision?

You respond:

Hero: Centered, solid dark background (#0A0A0A), name significantly larger 
than tagline (48px vs 18px).

Project grid: Spacious density with 48px gaps, subtle lift on hover with 
soft shadow, 16:9 images, show placeholder for missing images with dashed border.

Content flow: Smooth scroll, hard section breaks with 120px spacing, 
balanced rhythm.

GSD creates 02-CONTEXT.md:

# Phase 2: Core Layout - Context

## Hero Section
- Layout: Centered alignment
- Background: Solid #0A0A0A
- Typography: Name at 48px, tagline at 18px
- Vertical centering in viewport

## Project Grid
- Density: Spacious (48px gaps between cards)
- Hover: Subtle lift + soft shadow
- Images: 16:9 aspect ratio
- Empty state: Placeholder with dashed border

## Content Flow
- Scroll: Smooth scroll behavior
- Transitions: Hard breaks, 120px vertical spacing
- Rhythm: Balanced spacing scale

Why this step is critical:

Without discuss-phase:

  • Planner researches generic portfolio patterns
  • Generates reasonable defaults
  • You get a portfolio site that works but does not feel like yours

With discuss-phase:

  • Planner knows: "User wants 48px gaps, not 24px or 32px"
  • Research focuses on: "How to implement smooth scroll, spacious card layouts"
  • Plans include: "Apply 48px gap in grid, add hover transform and shadow"

The difference: Generic AI output vs your actual design vision.

This is where designers win. You are not explaining CSS syntax. You are describing the experience you want. GSD translates that into technical requirements.


Step 4: Plan the Phase (Research → Plan → Verify)

Now GSD plans how to build Phase 2, informed by your CONTEXT.md decisions.

Run /gsd:plan-phase 2.

What happens:

1. Research

GSD spawns a research agent that investigates:

  • Stack patterns: Best practices for HTML/CSS layouts with smooth scroll
  • Component libraries: Card hover effects, image placeholders, spacing systems
  • Architecture: CSS Grid vs Flexbox for project layouts
  • Pitfalls: Common issues with viewport centering, image aspect ratios, mobile responsiveness

The researcher reads your 02-CONTEXT.md and focuses research on your specific decisions:

  • "User wants 48px gaps" → Research CSS Grid gap property vs margin approaches
  • "Smooth scroll" → Research scroll-behavior CSS vs JS libraries
  • "Placeholder for missing images" → Research empty state patterns

Creates: 02-RESEARCH.md

2. Planning

A planner agent creates 2-3 atomic task plans using XML structure optimized for Claude:

<plan id="02-01">
  <name>Hero Section Layout</name>
  
  <task type="auto">
    <n>Create hero section HTML structure</n>
    <files>index.html</files>
    <action>
      Add hero section with semantic HTML.
      Include h1 for name, p for tagline.
      Wrap in section with id="hero".
    </action>
    <verify>Hero section exists in DOM with correct elements</verify>
    <done>Hero section renders with name and tagline</done>
  </task>
  
  <task type="auto">
    <n>Style hero section</n>
    <files>styles.css</files>
    <action>
      Background: #0A0A0A solid
      Name: 48px font-size
      Tagline: 18px font-size
      Center content vertically using flexbox
      Full viewport height (100vh)
    </action>
    <verify>Hero fills viewport, text is centered, colors match spec</verify>
    <done>Hero section matches Phase 2 CONTEXT.md specifications</done>
  </task>
</plan>

Each plan is:

  • Small: Can be executed in a fresh context window without degradation
  • Atomic: One clear deliverable with verification steps
  • Traceable: Maps back to Phase 2 requirements

3. Verification

A checker agent reviews each plan against:

  • Phase 2 deliverables in ROADMAP.md
  • V1 requirements in REQUIREMENTS.md
  • Design decisions in 02-CONTEXT.md

Questions it asks:

  • Does this plan implement 48px gaps as specified?
  • Is the hover effect (lift + shadow) included?
  • Are empty states with dashed borders planned?
  • Will this work on mobile?

If gaps are found, the planner revises and the checker reviews again. This loop continues until plans pass verification.

Why this works:

Without GSD:

  • You describe what you want
  • Claude starts coding immediately
  • Halfway through you realize it is using 24px gaps instead of 48px
  • You correct, Claude refactors, something else breaks
  • Quality degrades with each iteration

With GSD:

  • Research identifies the right approach
  • Plans are verified against your specs before any code is written
  • Execution happens in fresh contexts with clear instructions
  • Each task gets exactly 200k tokens to work with, no accumulated garbage

Creates: 02-RESEARCH.md, 02-01-PLAN.md (Hero section), 02-02-PLAN.md (Project grid), 02-03-PLAN.md (About section)


Step 5: Execute the Phase (Parallel Execution + Atomic Commits)

Plans are ready. Time to build.

Run /gsd:execute-phase 2.

What happens:

1. Parallel Wave Execution

GSD analyzes plan dependencies:

Wave 1 (parallel):
  - 02-01: Hero section (no dependencies)
  - 02-02: Project grid (no dependencies)

Wave 2 (sequential):
  - 02-03: About section (depends on design system from Wave 1)

Each plan gets its own fresh executor agent with 200k tokens.

This is the key difference from normal Claude Code usage:

  • Your main session stays clean
  • Each executor starts with zero context garbage
  • No quality degradation even on complex phases

2. Atomic Git Commits

Each task gets committed immediately after completion:

abc123f feat(02-01): create hero section HTML structure
def456g feat(02-01): style hero with centered layout and colors
hij789k feat(02-02): build project grid with 48px gaps
lmn012o feat(02-02): add hover effects and image placeholders

Why this matters:

  • git bisect can find exact failing task
  • Each commit is independently revertable
  • Clear history for future Claude sessions
  • Perfect for AI-automated workflows

3. Automatic Verification

After execution, a verifier agent checks the codebase against Phase 2 goals:

# Phase 2 Verification

✅ Hero section is full viewport height
✅ Hero content is vertically centered
✅ Hero uses #0A0A0A background
✅ Name is 48px, tagline is 18px
✅ Project grid uses 48px gaps
✅ Cards have lift + shadow on hover
✅ Images are 16:9 aspect ratio
✅ Placeholder shown for missing images
⚠️ Mobile layout needs adjustment (cards not stacking properly below 768px)

Status: PASSED WITH NOTES

Creates: 02-01-SUMMARY.md, 02-02-SUMMARY.md, 02-03-SUMMARY.md, 02-VERIFICATION.md

Preview Your Work

Run npx serve and open http://localhost:3000 to see your portfolio with:

  • Full-height hero, perfectly centered
  • Project grid with your exact spacing preferences
  • Hover effects that feel polished
  • Empty states that make sense

The difference: This is not generic AI output. This is your design vision, built correctly, first time.


Step 5.5: Verify Work (Human UAT)

Automated verification checks that code exists and tests pass. But does it actually work the way you expected?

Run /gsd:verify-work 2.

What happens:

GSD extracts testable deliverables from Phase 2:

Let's verify Phase 2 deliverables one by one:

1. Can you see the hero section with your name and tagline?
2. Is the hero section full viewport height and vertically centered?
3. Do the project cards display in a grid with 48px spacing?
4. When you hover over a project card, does it lift with a shadow?
5. Do images maintain 16:9 aspect ratio?
6. If you remove an image, do you see a placeholder with dashed border?
7. On mobile (resize browser below 768px), do cards stack vertically?

For each item, respond: Yes / No / Issue: [describe problem]

You test manually:

1. Yes
2. Yes
3. Yes
4. Yes
5. Yes
6. Issue: Placeholder shows but text is cut off
7. Issue: Cards stack but spacing is too tight on mobile

Automatic Issue Diagnosis

For each issue, GSD spawns a debug agent:

Issue 1: Placeholder text cut off

# Debug Report: Placeholder Text Cut Off

## Root Cause
Placeholder div has overflow:hidden and fixed height that doesn't 
account for text content.

## Fix Required
- Remove fixed height on placeholder
- Use min-height instead
- Add padding for text breathing room

## Proposed Fix Plan
Update placeholder CSS to use flexible height with padding.

Issue 2: Mobile spacing too tight

# Debug Report: Mobile Spacing Too Tight  

## Root Cause
Grid gap of 48px is preserved on mobile. On small screens this 
creates cramped vertical spacing.

## Fix Required  
- Add media query for mobile (<768px)
- Reduce gap to 24px on mobile
- Maintain 48px on desktop

## Proposed Fix Plan
Add responsive gap values in grid CSS.

GSD creates fix plans: 02-04-FIX-PLAN.md, 02-05-FIX-PLAN.md

Next step: Run /gsd:execute-phase 2. GSD detects existing summaries and only executes the new fix plans. You verify again. Loop until everything passes.

Why This Matters:

Without verify-work:

  • Automated checks pass
  • You deploy
  • Users find UX issues in production
  • You patch frantically

With verify-work:

  • You catch UX issues before they ship
  • GSD auto-diagnoses root causes
  • Fix plans are generated and verified
  • You re-execute only what needs fixing

This is user acceptance testing built into the workflow.


Step 6: Connect to GitHub

GitHub is like Google Drive for code. It keeps your project safe and lets you track changes.

GSD handles git commits automatically, but you still need to push to GitHub for backup and collaboration.

Create a GitHub account: Go to github.com and sign up (free).

Create a new repository:

  • Click the + icon → New repository
  • Name it my-portfolio
  • Keep it Public or Private (your choice)
  • Do not initialize with README (GSD already created one)
  • Click Create repository
  • Copy the repository URL

Connect your project to GitHub:

/gsd:quick
> "Connect this project to my GitHub repository: 
   https://github.com/yourusername/my-portfolio.git and push all commits"

GSD will initialize git remote, push all existing commits (preserving the atomic commit history), and set up tracking for future pushes.


Step 7: Deploy with Vercel

Create a Vercel account: Go to vercel.com and sign up with your GitHub account.

Deploy:

  • In Vercel's dashboard, click Add New → Project
  • Import your GitHub repository
  • Click Deploy

That is it. Vercel will give you a live URL like https://your-portfolio.vercel.app.

Automatic updates: From now on, every time you push changes to GitHub, Vercel automatically redeploys your site. Your live site always matches your latest code.

This is the workflow I use for client demos. Make changes, push to GitHub, share the link.


Step 8: Add a Custom Domain

Buy a domain: You can buy directly in Vercel (easiest, it auto-configures everything) or use Namecheap, Google Domains, or Cloudflare.

Connect to Vercel:

  • In your Vercel project dashboard, go to Settings → Domains
  • Add your domain (e.g., yourname.com)
  • Vercel shows you DNS records to add

Update DNS: If you bought your domain elsewhere, go to your domain provider's DNS settings and add:

Type: A
Name: @
Value: 76.76.21.21

Type: CNAME
Name: www
Value: cname.vercel-dns.com

Wait 5-30 minutes for DNS propagation. Visit your custom domain. Your site should load.


Going Further: Building Real Web Apps with GSD

Steps 1-7 cover static websites. Now let us build something with users, databases, and AI.

Step 9: Plan a Web App

If you wanted to add to your portfolio:

  • User authentication (visitors sign in with Google)
  • AI chat interface (ask questions about my design work)
  • Comment system (people can leave feedback)

Research prompt:

I want to expand this portfolio into a web app with:
- Google OAuth authentication
- An AI chat interface powered by Claude API that can answer questions 
  about my design projects and philosophy
- A comment section where authenticated users can leave messages

Research the best approach and create an implementation-plan.md with:
1. Services needed (auth, database, AI API)
2. Architecture overview
3. Security considerations (especially for API keys)
4. Step-by-step implementation phases

Environment variables:

For apps with API keys, you need a .env file:

Create a .env file for storing API keys. Also create a .gitignore file 
that excludes .env from being uploaded to GitHub.

Your .env file will look like:

SUPABASE_URL=https://xxxxx.supabase.co
SUPABASE_ANON_KEY=eyxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxx

Critical: Never commit .env to GitHub. The .gitignore file prevents this automatically.


Step 10: Set Up Supabase + Anthropic API

Supabase (database + auth):

  1. Go to supabase.com and create an account
  2. Create a new project
  3. Go to Settings → API and copy Project URL and anon public key

Enable Google Auth:

  • In Supabase: Authentication → Providers → Google → Enable
  • You need a Google Cloud OAuth client ID
  • Go to console.cloud.google.com
  • Create a project → APIs & Services → Credentials → Create OAuth Client ID
  • Copy the Client ID and Secret back to Supabase

Anthropic API:

  1. Go to console.anthropic.com
  2. Create an API key
  3. Store it in Supabase Edge Functions (not in frontend code): Settings → Edge Functions → Add Secret

Implementation prompt:

Implement the web app according to implementation-plan.md.

Use:
- Supabase for authentication and database (credentials in .env)
- Anthropic Claude API for the chat feature (key stored in Supabase Edge Functions)
- Google OAuth for sign-in (no email/password)

Implementation order:
1. Set up authentication with Google OAuth
2. Build the AI chat interface with streaming responses
3. Add the comment system with real-time updates

The design should match the existing portfolio aesthetic—minimal, clean, 
with generous spacing.

Testing locally:

Run the project locally and test:
1. Google sign-in flow (sign in, sign out, session persistence)
2. AI chat responses (test with questions about design methodology)
3. Leaving a comment as an authenticated user

Debugging:

If something breaks, paste the error message:

I'm getting this error: [paste error message]. What's wrong and how do I fix it?

Common issues involve database permissions. Claude will generate SQL to run in Supabase:

-- Example: Allow authenticated users to insert comments
CREATE POLICY "Users can insert comments" ON comments
FOR INSERT WITH CHECK (auth.uid() = user_id);

Deploy:

Once it works locally:

Commit all changes with message "Add authentication, AI chat, and comments" 
and push to GitHub.

Vercel auto-deploys. Add your production environment variables in Vercel: go to your project → Settings → Environment Variables → Add each variable from your .env file → Redeploy.


The Complete GSD Workflow Summary

Here is the full loop you just learned:

1. /gsd:new-project
   → Questions → Research → Requirements → Roadmap

2. /gsd:discuss-phase N
   → Capture design decisions for this phase

3. /gsd:plan-phase N
   → Research → Create plans → Verify plans

4. /gsd:execute-phase N
   → Parallel execution → Atomic commits → Auto-verification

5. /gsd:verify-work N
   → Manual UAT → Auto-diagnose issues → Generate fix plans

6. Repeat 2-5 for each phase

7. /gsd:complete-milestone
   → Archive milestone → Tag release

8. /gsd:new-milestone
   → Start next version (same flow as new-project)

Why This Works: The Technical Foundation

Context Engineering

  • Every file has a size limit based on where Claude's quality degrades
  • Context is structured: PROJECT.md (vision), REQUIREMENTS.md (scope), ROADMAP.md (phases), STATE.md (decisions)
  • Fresh 200k token contexts per executor, no garbage accumulation

Multi-Agent Orchestration

  • Thin orchestrator coordinates specialized agents
  • Research agents investigate in parallel
  • Planner creates, checker verifies, loop until plans pass
  • Executors work in waves (parallel where possible)
  • Verifier confirms deliverables match goals

Atomic Git Commits

  • Each task = one commit
  • git bisect finds exact failing task
  • Each commit independently revertable
  • Clean history for future Claude sessions

Designer Mindset

  • GSD asks the questions you would ask in a design review
  • Captures edge cases, empty states, responsive behavior
  • No vibe coding chaos, every decision is documented and traceable

Advanced: Integrating Figma MCP with Claude Code

This is where it gets powerful.

Figma's Model Context Protocol lets Claude Code directly access your Figma files and design tokens.

Setup:

Set up Figma MCP integration so Claude Code can:
1. Read design tokens from my Figma design system
2. Pull component specs and props
3. Generate React components that match Figma designs exactly

Create a workflow where I can point Claude Code to a Figma component 
and it generates production-ready code.

Result: Designers update Figma → Claude Code pulls changes → generates updated components → pushes to GitHub → auto-deploys.

No more design-to-development handoff. The handoff is the workflow.


The Figma-First Development Workflow

This is how I actually work: design in Figma, build with Claude Code + GSD, prototype and iterate without context switching.

The Complete Loop

Design in Figma → Extract with MCP → Build with GSD → Deploy → Test → Iterate

Step 1: Design in Figma

Create your interface in Figma as you normally would:

  • Design system with colors, typography, spacing tokens
  • Components with variants (buttons, cards, forms, etc.)
  • Layouts with Auto Layout for responsiveness
  • Prototypes with interactions and flows

Critical: Use proper naming conventions and component organization. Claude Code reads this structure.

Example Figma structure:

🎨 Design System
  ├── Colors
  ├── Typography
  ├── Spacing
  └── Components
      ├── Button (Primary, Secondary, Tertiary variants)
      ├── Card (Default, Featured, Compact variants)
      └── Input (Text, Email, Password states)

📱 Screens
  ├── Landing Page
  ├── Dashboard
  └── Settings

Step 2: Initialize Project with GSD

Start your project with the Figma file URL:

/gsd:new-project

When GSD asks about your tech stack preferences:

I have a Figma design ready. I want to build this with:
- React + Tailwind CSS
- Figma MCP integration for design tokens
- Component library matching Figma components exactly
- Deployed on Vercel

Figma file: https://figma.com/design/abc123/my-project

GSD will ask clarifying questions about interactions, states, and responsive behavior, then research best practices for Figma-to-code workflows, create requirements that reference specific Figma components, and build a roadmap that maps to your design structure.

Step 3: Extract Design Tokens with Figma MCP

First phase should always be design system extraction.

Run /gsd:discuss-phase 1.

GSD asks about design preferences:

Phase 1 is about extracting design tokens from Figma. Let's define how to handle:

1. Color naming
   - Keep Figma variable names exactly?
   - Semantic naming (primary, secondary, accent)?
   - CSS custom properties or Tailwind config?

2. Typography scale
   - Figma text styles → CSS classes?
   - Fluid typography (clamp values)?
   - Font loading strategy?

3. Spacing system
   - Figma Auto Layout spacing → Tailwind spacing scale?
   - Custom values or standard scale (4px, 8px, 16px...)?

4. Component tokens
   - Extract component-specific variables (button padding, card radius)?
   - Border radius values from Figma?

Your response:

Colors: Use semantic naming mapped to Tailwind. Primary = blue palette, 
secondary = gray.

Typography: Extract Figma text styles as Tailwind typography classes. 
Use system font stack (no web fonts).

Spacing: Map Figma Auto Layout to Tailwind's default scale. Use clamp() 
for responsive spacing.

Components: Extract all border-radius, padding, shadow values as CSS 
custom properties.

Then run /gsd:plan-phase 1.

GSD uses Figma MCP to read your Figma file structure, extract color variables, text styles, spacing values, generate Tailwind config with your exact design tokens, and create CSS custom properties for component-specific values.

Run /gsd:execute-phase 1.

Result: Your entire design system is now code, perfectly matching Figma.

Step 4: Build Components Matching Figma

For each component phase, run /gsd:discuss-phase 2.

GSD analyzes the Figma component and asks about implementation:

Phase 2: Button Component

I can see your Figma Button has:
- 3 variants: Primary, Secondary, Tertiary
- States: Default, Hover, Active, Disabled
- Sizes: Small (32px), Medium (40px), Large (48px)
- Icons: Leading and trailing icon support

Implementation questions:

1. Component API
   - Props: variant, size, icon, disabled, onClick?
   - Should it accept children for label text?
   - Loading state needed?

2. Accessibility
   - aria-label required or optional?
   - Keyboard navigation behavior?
   - Focus visible styling?

3. Figma specifics
   - Your Primary variant has 16px padding. Should this scale with size?
   - Hover state shows 8px lift. Should this be a transform or box-shadow change?
   - Disabled state is 40% opacity in Figma. Keep exact?

Your response:

API: variant, size, leftIcon, rightIcon, loading, disabled, onClick, 
children for text.

Accessibility: aria-label optional, full keyboard support, custom focus 
ring matching brand.

Figma specifics: Padding scales proportionally, hover is transform: 
translateY(-2px), disabled is exactly 40% opacity.

Then run /gsd:plan-phase 2 and /gsd:execute-phase 2.

Result: React component that matches Figma exactly, with TypeScript, accessibility, and Storybook docs.


Real Example: Dashboard Prototype in 2 Days

Day 1 Morning: Design dashboard in Figma

  • 6 screens: Overview, Analytics, Settings, Users, Reports, Profile
  • Component library: Buttons, Cards, Tables, Forms, Navigation
  • Design system with colors, typography, spacing

Day 1 Afternoon: Initialize with GSD

/gsd:new-project
> "Build a dashboard matching this Figma design: [URL]"

/gsd:discuss-phase 1  # Design tokens
/gsd:plan-phase 1
/gsd:execute-phase 1  # Extracts all tokens from Figma

/gsd:discuss-phase 2  # Component library
/gsd:plan-phase 2
/gsd:execute-phase 2  # Builds all components matching Figma

Day 2 Morning: Build screens

/gsd:discuss-phase 3  # Overview screen
/gsd:plan-phase 3
/gsd:execute-phase 3

/gsd:discuss-phase 4  # Analytics screen
/gsd:plan-phase 4
/gsd:execute-phase 4

Day 2 Afternoon: Polish and deploy

/gsd:verify-work 3
/gsd:verify-work 4
> Deploy to Vercel

Result: Fully functional dashboard that matches Figma pixel-perfect, with:

  • All components built as reusable React components
  • Design system tokens in Tailwind config
  • Responsive layouts
  • Interactive states matching prototypes
  • Deployed and shareable with stakeholders

Time comparison: Would take 1-2 weeks with traditional dev handoff. Built in 2 days by one designer.


My Workflow for Client Projects

Here is how I use Claude Code for real client work:

Technical Proposals

For client proposals, I use Claude Code to:

  • Build interactive prototypes that demonstrate AI-driven conversion optimization
  • Create data visualization dashboards that show projected impact
  • Deploy working demos that clients can actually use

Time saved: 80% compared to coordinating with developers.

Design System Exploration

I use Claude Code to:

  • Rapidly prototype design system variations
  • Generate component libraries from Figma designs
  • Test accessibility and responsive behavior across devices

Example prompt:

Extract the design tokens from this Figma file (spacing, typography, colors) 
and generate a CSS custom properties file with semantic naming. Then create 
a component library using these tokens.

Workshop Demos

For client workshops, I build live demos:

  • Conversational commerce flows
  • Predictive UX patterns
  • AI-assisted user journeys

These are not clickable prototypes. They are functional experiences that actually work.


For Ad-Hoc Tasks: Quick Mode

/gsd:quick
> "Add a dark mode toggle to the header"

GSD still gives you atomic commits and state tracking, just skips research and verification for small tasks.


Why This Matters for Designers

For the past decade, designers have been stuck in a specific role: we make things look good, developers make them work.

Claude Code and Get Shit Done collapse that boundary.

Get Shit Done is the Missing Layer

Claude Code is powerful, but without GSD's meta-prompting system, it is just faster vibe coding. You still get:

  • Inconsistent output quality
  • Context rot as conversations get longer
  • Generic solutions that do not match your vision
  • No traceability when things break

GSD adds:

Designer Thinking

  • Questions assumptions before building
  • Explores edge cases and empty states
  • Captures your aesthetic preferences
  • Plans for mobile, accessibility, performance

Context Engineering

  • Structures information so Claude stays sharp
  • Fresh 200k token contexts per task
  • Zero quality degradation across long projects

Spec-Driven Development

  • Every decision documented and traceable
  • Requirements locked before planning
  • Plans verified before execution
  • Work validated before moving forward

Multi-Agent Orchestration

  • Research agents investigate in parallel
  • Planner creates, checker verifies
  • Executors work in waves
  • Verifier confirms deliverables

What You Can Now Do

You can now:

  • Ship ideas faster: test concepts in production, not just in Figma
  • Control the full experience: interaction, animation, data flow, edge cases
  • Learn by building: you understand systems better when you build them
  • Own your craft: you are not waiting for sprint capacity or developer interpretation

This is not about replacing developers. It is about expanding what designers can do independently.

The best design teams will have designers who can prototype at production quality, test with real users, and iterate based on real data, not static mockups.


Final Thoughts

The shift from "designing interfaces" to "designing systems that work" is already happening.

For me, it is not really a shift. It is more like coming back to something. Back when I was a webmaster, we had to think in complete systems. Design, code, deployment, maintenance. The separation of design and development into distinct roles made sense at scale, but it also created friction.

AI tools like Claude Code are not replacing designers or developers. They are collapsing the artificial boundary we created. They are letting designers who understand systems (whether from dev experience or deep technical curiosity) build at a level that would have required a team.

But raw AI alone is not enough. You need the structure that Get Shit Done provides:

  • Meta-prompting that thinks like a product designer
  • Context engineering that prevents quality degradation
  • Spec-driven development without enterprise theater
  • Multi-agent orchestration that keeps Claude focused

The designers who adapt to this shift will ship more, learn faster, and create experiences that actually exist in the world, not just in mockups.

If you have any development background, even if it has been dormant for years, this is your moment. That knowledge does not just help you understand technical constraints. It becomes a direct line from design vision to working software.

Start small. Build something simple. Use GSD to keep quality high. Deploy it.

The future of design is not about learning to code. It is about learning to build, with systems that think the way designers think, enhanced by the technical intuition you already have.


FAQ

Do I need to know how to code?

No, but if you do have a development background (even a rusty one from years ago), Claude Code becomes incredibly powerful. You will spot architectural issues faster, understand trade-offs better, and give more precise feedback.

If you do not know how to code at all, you can still use Claude Code effectively. You just need to know what you want to build and describe it clearly. Claude Code handles the syntax.

What if I used to code but I am out of practice?

That is the perfect position. Your intuition about how things should work is still there. Claude Code handles the implementation details you have forgotten (or that have changed with new frameworks). You provide the architectural thinking, Claude writes the modern syntax.

What if something breaks?

Paste the error message into Claude Code. It will debug and fix it. With a development background, you will often spot the issue immediately and can guide Claude more precisely. Without that background, Claude will still solve it, you just will not know why it broke, which is usually fine.

How much does this cost?

  • Claude Code: Free to start, paid plans for heavy usage
  • Vercel: Free for personal projects, paid for production apps
  • Supabase: Free tier is generous, paid for scale

For most designer use cases, you will stay in the free tiers.

Is this actually production-ready?

Yes. I have shipped client work built entirely with Claude Code. The code quality is often better than what junior developers write because Claude follows best practices consistently.

What about security?

Claude Code knows security best practices. Always store API keys in environment variables, never in code. Use Supabase's Row Level Security for database access control. Claude will guide you.

What is GSD and why do I need it?

GSD (Get Shit Done) is a meta-prompting and context engineering system that makes Claude Code reliable for real projects. Without it, Claude suffers from context rot as conversations get longer. GSD structures information properly, spawns specialized agents, and ensures every decision is documented and traceable.

How does the Figma integration work?

Figma's Model Context Protocol lets Claude Code directly access your Figma files. You can extract design tokens, component specs, and layout information. Claude Code generates code that matches your Figma designs exactly. Update Figma, run the workflow, get updated components.

Can I use this for client work?

Absolutely. I use Claude Code for technical proposals, design system exploration, and workshop demos. Time saved compared to coordinating with developers is approximately 80%.

What is the difference between Claude Code and other AI coding tools?

Traditional AI coding tools live in your editor as glorified autocomplete. Claude Code runs as an independent process with full system access, handling everything from file operations to multi-step workflows. It can read a codebase, understand context, and implement features spanning multiple files from a single prompt.


How Web Designers Can Make Themselves Competitive in the Age of AI
This article explores the current and future impact of AI on the web design profession — from worst-case fears to best-case outcomes. 8 practical strategies web designers can use to stay relevant, competitive, and secure in an AI-driven world.
Vibe Coding for Designers: The 2026 Guide
Master vibe coding in 2026 with this complete designer’s guide. Learn to use Figma Make, Cursor, Lovable, and MCP to turn ideas into production-ready products. Includes tool comparisons, workflows, and practical techniques for building consistent design systems with AI.
AI for Designers: How Figma, Genius, and Galileo Are Revolutionizing Creative Work
Discover how AI-powered design tools like Figma, Genius, and Galileo are revolutionizing workflows for modern designers. Learn how to work faster, ideate smarter, and deliver top-tier UI/UX with AI as your creative partner.