slamb2k

distil

Generate multiple unique web design variations for any website or web application. Accepts site specifications from a file (--spec path) or pasted text block. Creates a Vite + React + TypeScript + Tailwind project with Bun and produces N different creative designs accessible at /1, /2, /3, etc. Use when prototyping or exploring design directions for any web interface.

slamb2k 5 Updated 3mo ago

Resources

3
GitHub

Install

npx skillscat add slamb2k/mad-skills/distil

Install via the SkillsCat registry.

SKILL.md

Distil - Design Variation Generator

When this skill is invoked, IMMEDIATELY output the banner below before doing anything else.
Pick ONE tagline at random — vary your choice each time.
CRITICAL: Reproduce the banner EXACTLY character-for-character. The first line of the art has 4 leading spaces — you MUST preserve them.

{tagline}

⠀   ██╗██████╗ ██╗███████╗████████╗██╗██╗
   ██╔╝██╔══██╗██║██╔════╝╚══██╔══╝██║██║
  ██╔╝ ██║  ██║██║███████╗   ██║   ██║██║
 ██╔╝  ██║  ██║██║╚════██║   ██║   ██║██║
██╔╝   ██████╔╝██║███████║   ██║   ██║███████╗
╚═╝    ╚═════╝ ╚═╝╚══════╝   ╚═╝   ╚═╝╚══════╝

Taglines:

  • Heating up the column...
  • Fractioning the design space!
  • Condensing pure creativity!
  • Separating signal from noise!
  • Extracting the essence!
  • Refining through iteration!
  • Distilling N variations of brilliance!
  • From crude concept to pure design!

Generate multiple unique, creative web interface designs for any website or
web application. The primary agent acts as a thin orchestrator — all heavy
reading and file creation is delegated to subagents to protect the primary
context window.

Arguments

Parse the following from the skill invocation:

  • count (required): Number of designs to create (e.g., 5)
  • --spec (optional): Path to a file containing site specification
  • --url (optional): URL to existing site to review for context
  • --port (required): Port for the Vite dev server
  • --favorites (optional): Comma-separated list of design numbers for iteration mode

Examples

/distil 5 --spec ./site-spec.md --port 5173
/distil 3 --favorites 2,4 --port 5173

If --favorites is provided, follow references/iteration-mode.md instead
of the steps below.


Pre-flight

Before starting, check all dependencies in this table:

Dependency Type Check Required Resolution Detail
npm cli npm --version yes stop https://bun.sh or use npm
bencium-innovative-ux-designer skill ~/.claude/skills/bencium-innovative-ux-designer/SKILL.md no ask npx skills add bencium/bencium-claude-code-design-skill@bencium-innovative-ux-designer -g -y
web-animation-design skill ~/.claude/skills/web-animation-design/SKILL.md no ask npx skills add connorads/dotfiles@web-animation-design -g -y
design-system skill ~/.claude/skills/design-system/SKILL.md no ask npx skills add lobbi-docs/claude@design-system -g -y

For each row, in order:

  1. Run the Check command (for cli/npm) or test file existence (for agent/skill)
  2. If found: continue silently
  3. If missing: apply Resolution strategy
    • stop: notify user with Detail, halt execution
    • url: notify user with Detail (install link), halt execution
    • install: notify user, run the command in Detail, continue if successful
    • ask: notify user, offer to run command in Detail, continue either way (or halt if required)
    • fallback: notify user with Detail, continue with degraded behavior
  4. After all checks: summarize what's available and what's degraded

Site Specification

The specification can be provided via:

  1. --spec flag: Read the file at the provided path
  2. Pasted text: Check conversation for a description of the site
  3. --url flag: Use WebFetch to analyze an existing site

If no specification is found, ask the user before proceeding.


Step 1: Load Site Specification

Parse and store the site context for use when generating each design.
This is the only file the primary agent reads directly (specs are typically small).

Step 2: Reconnaissance (launch in parallel)

Launch two subagents in parallel to gather context without bloating
the primary agent.

2a: Verify Design Skills

Design skill availability is checked in the Pre-flight section above.
Use the results from pre-flight to populate SKILL_REPORT:

  • For each design skill: name, installed (yes/no)
  • If any skill was missing and the user declined to install, note it as unavailable

2b: Scan Existing Project

Task(
  subagent_type: "Explore",
  model: "haiku",
  description: "Scan existing design project",
  prompt: "Check if src/designs/ directory exists. If it does:
    1. List all DesignN.tsx files (glob for src/designs/Design*.tsx)
    2. For each file, read ONLY the first 10 lines to extract the
       metadata comment (style name, key traits)
    3. Determine the highest design number
    Return PROJECT_REPORT (max 20 lines):
    - project_exists: true/false
    - package_manager: detected from lockfile (bun.lockb/pnpm-lock/yarn.lock/package-lock)
    - design_count: N
    - highest_number: N
    - designs: list of (number, style_name) pairs
    If no src/designs/ directory, return project_exists: false."
)

Parse Recon Results

From SKILL_REPORT: Gate on missing skills before proceeding.
From PROJECT_REPORT:

  • If project_exists: set START_INDEX = highest_number + 1, skip Step 3
  • If not: set START_INDEX = 1, proceed to Step 3

Step 3: Initialize Project

Skip this step if an existing project was detected in Step 2b.

Launch Bash subagent (haiku) to set up the project:

Task(
  subagent_type: "Bash",
  model: "haiku",
  description: "Initialize distil project",
  prompt: "Follow the project setup instructions:
    1. Detect package manager (bun -> pnpm -> yarn -> npm)
    2. Create Vite React-TS project
    3. Install dependencies: tailwindcss, postcss, autoprefixer,
       react-router-dom, lucide-react
    4. Configure Tailwind (content paths, index.css directives)
    5. Copy {skill_dir}/assets/DesignNav.tsx to src/components/DesignNav.tsx
    Return SETUP_REPORT (max 10 lines): status, package_manager, errors."
)

Parse SETUP_REPORT. If setup fails, fall back through the package manager
chain (bun -> pnpm -> yarn -> npm).

Step 4: Create Designs via Subagent

Launch a general-purpose subagent to create all new designs.

CRITICAL: The subagent reads skill files and design guides directly.
Do NOT read them in the primary agent — pass file paths only.

Task(
  subagent_type: "general-purpose",
  description: "Create design variations",
  prompt: "
    You are creating {COUNT} new web design variations for a distil project.

    ## Site Specification
    {SITE_SPEC from Step 1}

    ## Design Knowledge — Read These Files
    Load design principles and the 50+ style catalog from these skill files:
    - ~/.claude/skills/bencium-innovative-ux-designer/SKILL.md
    - ~/.claude/skills/bencium-innovative-ux-designer/MOTION-SPEC.md
    - ~/.claude/skills/web-animation-design/SKILL.md
    - ~/.claude/skills/design-system/SKILL.md
    - ~/.claude/skills/design-system/references/style-guide.md

    Also read the project design guide:
    - {skill_dir}/references/design-guide.md

    ## Existing Designs (avoid these styles)
    {Compact list from PROJECT_REPORT: number + style_name pairs,
     or 'None — fresh project'}

    ## Task
    Create designs numbered {START_INDEX} through {START_INDEX + COUNT - 1}.

    For each design, create `src/designs/Design{N}.tsx`:
    - Pick a DISTINCT style from the 50+ style catalog in the design-system skill
    - Do NOT reuse styles already used by existing designs
    - Apply the site specification to all content and sections
    - Follow anti-AI-slop rules strictly (no Inter, no default blue, no cookie-cutter layouts)
    - Include purposeful animations with proper easing
    - Each design must be self-contained in a single file
    - Import and render DesignNav from '../components/DesignNav'

    After creating all designs, update:
    1. `src/App.tsx` — Add import and route for EVERY design (existing + new)
    2. Each design file's DesignNav `designs` array — Include ALL designs (existing + new)

    ## Design File Requirements
    Each design file must have:
    - A metadata comment at the top: style name, key visual traits, color palette
    - Import DesignNav from '../components/DesignNav'
    - A `designs` array listing ALL designs (existing + new) with id and name
    - ALL sections from the site specification with realistic content
    - Custom color palette (not default Tailwind)
    - Animations with proper easing (ease-out for entrances, ease-in-out for movement)
    - Responsive layout (mobile-first)
    - Lucide React icons for iconography

    ## App.tsx Requirements
    The App.tsx must:
    - Import ALL design components (existing + new)
    - Have a route for each: <Route path='/{N}' element={<DesignN />} />
    - Default route redirects to /1

    Return DESIGN_REPORT (max 30 lines):
    - List each design created: number, style name, key visual traits
    - Total design count (existing + new)
    - Files created and modified
    - Any issues encountered
  "
)

Parse DESIGN_REPORT. If any design failed, report the error and offer retry.

Step 5: Start Dev Server

Launch as a background Bash to avoid blocking the primary agent:

Task(
  subagent_type: "Bash",
  run_in_background: true,
  description: "Start Vite dev server",
  prompt: "{package_manager} run dev --port {PORT}"
)

If the dev server is already running, HMR should pick up the new files
automatically — skip this step.

Step 6: Present Designs

Inform the user:

  • Dev server is running at http://localhost:{PORT}
  • Each design is available at /1, /2, /3, etc.
  • Briefly describe each design's unique approach (from DESIGN_REPORT)
  • Note which designs are new vs existing (if appending)
  • Remind they can iterate with --favorites to refine preferred designs

Context Protection Summary

Step Agent Model Why
1: Load spec Primary Small file, needed for subagent prompt
2a: Skill check Explore haiku Avoids reading 2000+ lines of skill content
2b: Project scan Explore haiku Avoids reading existing design files
3: Init project Bash haiku Shell commands only
4: Create designs general-purpose default Heavy lifting: reads skills, writes files
5: Dev server Bash (background) Non-blocking, no output in primary
6: Present Primary User-facing, uses compact DESIGN_REPORT

Troubleshooting

  • If package manager commands fail, try the next in the fallback chain
  • If port is in use, suggest killing the process or using a different port
  • If design imports fail, check file naming consistency
  • If no site spec is found, always ask the user before proceeding
  • If a design skill is missing, offer to install it before proceeding
  • If the subagent fails, check error details and retry with adjusted parameters