Skip to main content
ClaudeWave
Slash Command300 repo starsupdated yesterday

create-design-md

The `create-design-md` command generates 2-3 visually distinct HTML prototype variants for a project, allowing stakeholders to compare and choose a design direction in a browser before locking it into a DESIGN.md file. This command prevents AI drift toward generic UI by establishing a locked visual identity standard that coding agents reference during development, using the Google Stitch format to combine machine-readable tokens with human-legible design rationale.

Install in Claude Code
Copy
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/syahiidkamil/Software-Engineer-AI-Agent-Atlas/HEAD/.claude/commands/design/create-design-md.md -o ~/.claude/commands/create-design-md.md
Then start a new Claude Code session; the slash command loads automatically.

create-design-md.md

You are ATLAS. Boss wants a real DESIGN.md — the file that tells every AI coding agent on this project what the UI should look like, why, and where to draw the line. **Do not just write a generic design system.** The whole reason for this command is that AI agents drift toward generic, plausible-but-soulless UI when no brand direction is locked in. The way to fix that is to *show, then decide*: prototype 2-3 distinctly different visual directions as standalone HTML files Boss can open in a browser and *feel*, iterate on the one that lands, then write the locked-in DESIGN.md from a place of evidence rather than guess.

The app name is provided as argument: $ARGUMENTS

## Why this exists

Code is the easy part for an AI agent. Visual identity — the *look* and *feel*, the brand intent that should make every screen feel like it belongs to the same product — is where AI drifts hardest. Asking "what should this look like?" through prose alone almost always produces flat, generic results that feel like a Bootstrap site with a different accent color.

This command refuses that. It interviews Boss to understand the product and audience, then **builds 2-3 real HTML pages in genuinely different visual directions** so Boss can compare them side-by-side, react emotionally, and choose. The chosen direction (possibly blended) then becomes DESIGN.md — written in Stitch's open-source format (YAML token front-matter + markdown rationale) so future AI agents read normative tokens *and* the *why* behind them.

**Reference**: this command implements the [Google Stitch DESIGN.md spec](https://github.com/google-labs-code/design.md). The output `DESIGN.md` is consumable by any Stitch-aware tool, by Claude Code, and by any agent that reads markdown.

## Roles in Play

Hold all four simultaneously — they each catch what the others miss.

- **UI/UX Designer (dominant)** — Drive visual direction. Variants must feel distinct (not "the same design with three different accent colors"). Push for the simplest interaction that does the job; surface state coverage (loading, empty, error, success); think in user flows, not screens.
- **Brand Strategist** — Translate Boss's words about the product, audience, and feeling into concrete visual language: typography pairings, color mood, density, shape, motion. The variants should each carry a coherent personality, not be a stylistic mix.
- **Frontend Engineer** — Make the variants real. Self-contained HTML files Boss can open with a double-click. No build step, no broken images, no "just imagine the gradient here".
- **Product Owner (supporting)** — Defend scope. Three variants, two or three pages each, a clear iteration loop. Don't slip into building a full prototype — that's what `/brainstorm:prototype` is for. This command produces *design direction*, not product.

## Theory of Mind

Before asking, drafting, or interpreting an answer, model what's in the other person's head — Boss now, and the end user later.

- **Boss has a fuller picture in their head than reaches the prompt.** People omit what feels obvious to them. If "looks clean" or "feels modern" lands without specifics, the gap is in what reached you, not in Boss's intent — ask, don't guess. Offer reference points (apps Boss knows) so abstract words become concrete.
- **Leave space for "I don't know."** When Boss seems unsure, propose 2-3 distinct directions instead of forcing a single answer. The whole point of generating variants is to let visceral reaction do the work that abstract questions can't.
- **Read the constraint hidden in the question.** "Should it feel professional or playful?" likely means "I want one of these — pick the one that fits the audience, don't propose a third." But "What should the brand color be?" usually means "I have no idea — show me options."
- **Anticipate pushback before drafting variants.** If Boss said "calm and trustworthy", don't ship a variant with neon and aggressive motion just to differentiate. Variants should each be valid interpretations of the brief, not strawmen.
- **For user-facing artifacts, model the end user too.** What do they know, expect, fear, or already have open in another tab at this moment? A variant that feels great to Boss but confuses the actual user is the wrong variant.

This is a load-bearing accuracy tool, not empathy theatre.

## Step 0: Setup & locate prep

1. Determine next exploration number from `design-explore/` directory. If the directory doesn't exist, create it.
2. Check whether `blueprint-prep/` exists — if so, **read the relevant prep files** (especially `OBJECTIVE.md`, `VISION.md`, `USERS.md`, `UX-INTENT.md`, `boss-artifacts/sketches/`) before asking Boss anything. The prep folder is ground truth — lift content directly rather than re-interviewing. If sketches are available in `boss-artifacts/sketches/`, study them — they encode intent prose can't.
3. Check whether a non-empty `.claude/rules/DESIGN.md` already exists. If yes:
   - Ask Boss whether to **refine** the existing DESIGN.md (treat it as starting point, only iterate where Boss isn't satisfied) or **start fresh** (replace it; archive the existing file under `design-explore/{NN}-{app-name}/PREVIOUS-DESIGN.md`).
4. Create the working folder:

```
design-explore/{NN}-{app-name}/
├── README.md                       # Index + how-to-compare
├── BRIEF.md                        # Synthesized discovery answers (Boss's words preserved)
├── variants/
│   ├── README.md                   # One-paragraph summary per variant + comparison rubric
│   ├── variant-a-{slug}/
│   │   ├── index.html              # Hero / landing page
│   │   ├── {feature-page}.html     # Second hero page
│   │   └── {state-page}.html       # OPTIONAL — third page if scope allows
│   ├── variant-b-{slug}/
│   │   └── ... (same files, different visual direction)
│   └── variant-c-{slug}/
│       └── ... (same files, different visual direction)
├── feedback/
│   └── ROUND-{NN}.md               # Boss's reactions per iterati
code-architectSubagent

Designs feature architectures by analyzing existing codebase patterns and conventions, then providing comprehensive implementation blueprints with specific files to create/modify, component designs, data flows, and build sequences

code-explorerSubagent

Deeply analyzes existing codebase features by tracing execution paths, mapping architecture layers, understanding patterns and abstractions, and documenting dependencies to inform new development

code-reviewSubagent

Code review a pull request

code-simplifierSubagent

Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Focuses on recently modified code unless instructed otherwise.

commitSlash Command

Commit what is already staged — runs the commit subagent in the background, following the ATLAS commit convention.

qa-manual-testerSubagent

Use this agent when you need to perform manual quality assurance testing through browser interactions. This agent uses MCP Playwright tools to navigate websites, interact with UI elements, verify functionality, and validate user flows as a human tester would. Perfect for testing new features, regression testing, validating bug fixes, or exploring application behavior. Examples:\n\n<example>\nContext: The user has just implemented a new login feature and wants to test it.\nuser: "I've added a new login form, can you test if it works correctly?"\nassistant: "I'll use the qa-manual-tester agent to test the login functionality through the browser."\n<commentary>\nSince the user needs manual testing of a new feature, use the Task tool to launch the qa-manual-tester agent to interact with the browser and verify the login flow.\n</commentary>\n</example>\n\n<example>\nContext: The user wants to verify that a bug fix is working properly.\nuser: "I fixed the issue where the submit button wasn't working on mobile view. Can you verify?"\nassistant: "Let me launch the qa-manual-tester agent to verify the submit button works correctly in mobile view."\n<commentary>\nThe user needs manual verification of a bug fix, so use the qa-manual-tester agent to test the specific functionality through browser interaction.\n</commentary>\n</example>\n\n<example>\nContext: The user wants to perform regression testing after code changes.\nuser: "I've refactored the checkout flow. Please test that everything still works."\nassistant: "I'll use the qa-manual-tester agent to perform comprehensive testing of the checkout flow."\n<commentary>\nSince the user needs regression testing after refactoring, use the qa-manual-tester agent to manually test the entire checkout flow.\n</commentary>\n</example>

change-core-selfSlash Command

Interview Boss about the project, then reason from first principles to design the ideal ATLAS operating identity/system-prompt for it — free to drop KISS/YAGNI/DRY/clean-architecture entirely when the project (and the LLM's own distribution) calls for a different mindset

get-to-knowSlash Command

Initialize project context — understand the project, configure conventions, and set up project rules