Skip to content

feat: bootstrap-from-figma + patterns platformization#7

Merged
leefanv merged 1 commit into
mainfrom
feat/patterns-platform
May 11, 2026
Merged

feat: bootstrap-from-figma + patterns platformization#7
leefanv merged 1 commit into
mainfrom
feat/patterns-platform

Conversation

@leefanv
Copy link
Copy Markdown
Owner

@leefanv leefanv commented May 11, 2026

Summary

Two intertwined product changes that ship together.

1. Bootstrap from Figma — visual theme only

  • New /__omit/bootstrap endpoint (GET/PUT/DELETE) on dev-server
  • BootstrapBanner in workspace Library page: paste a figma.com URL → copy a Claude prompt, or pick one of 8 built-in palette swatches as a no-URL fallback
  • useThemeStore.importTheme() merges design tokens into draft + immediately applies; only baseline-known semanticColors / spacing keys are accepted
  • /bootstrap-from-figma skill extracts colors + spacing only. Patterns are intentionally decoupled.

2. Patterns platformization — project-local, on demand

  • Removed the 8 starter patterns from omit-design init. New projects start with empty patterns/
  • Removed --starters flag, importStarters handler, POST /__omit/starters/import endpoint, Library "Import 8 starters" button, "Suggested from Figma" panel
  • New /distill-patterns-from-prd skill — reads a PRD, reuses existing patterns where possible, writes new ones only for gaps; HARD-GATEs on user review
  • /add-pattern conversational mode — 5 fixed questions when no PRD
  • /new-design HARD-GATE rewritten: auto-invokes distill (with PRD) or add-pattern conversational (without PRD) when patterns/ is empty
  • "Distill patterns from this PRD" button in PRDs tab

Docs swept: README, preset-mobile/README, dev-server/README, eslint-plugin/README, PATTERNS.md, CONTRIBUTING, docs/architecture, docs/release no longer mention 8 patterns, --starters, or patterns.config.json (already removed in 0.3.x).

Test plan

  • bun run build — all packages green (engine + dev-server + cli + preset-mobile + playground)
  • omit-design init <name>patterns/ contains only .gitkeep
  • New stdout walks user through PRD → Distill → Claude Code → new-design flow
  • GET /__omit/bootstrap returns {"payload":null} initially
  • PUT /__omit/bootstrap accepts payload without patterns field, round-trips clean
  • POST /__omit/starters/import returns 404
  • Skills list contains distill-patterns-from-prd
  • Empty patterns/ project writing design/foo.tsxrequire-pattern-components correctly fires (expected — must distill/add first)
  • Bootstrap from Figma against figma.com/design/vBAblnUXNiC2JEwbfjcJLR/AI-Chat produces valid theme tokens (manual run earlier in session)

Breaking changes

See CHANGELOG.md → [Unreleased] section. Old projects with patterns/<8 dirs>/ work unchanged; old scripts hitting /starters/import get 404 with no replacement endpoint.

🤖 Generated with Claude Code

Two intertwined product changes that ship together.

1) Bootstrap from Figma — visual theme only
   - New /__omit/bootstrap endpoint (GET/PUT/DELETE) on dev-server
   - BootstrapBanner in workspace Library page: paste a figma.com URL,
     copy a Claude prompt, or pick one of 8 built-in palette swatches
   - useThemeStore.importTheme() merges design tokens into draft +
     immediately applies; only known semanticColors / spacing keys
   - /bootstrap-from-figma skill extracts colors + spacing only.
     Patterns are intentionally decoupled.

2) Patterns platformization — project-local, on demand
   - Removed the 8 starter patterns from omit-design init. New projects
     start with empty patterns/
   - Removed --starters flag, importStarters handler, /starters/import
     endpoint, Library "Import 8 starters" button, "Suggested from
     Figma" panel
   - New /distill-patterns-from-prd skill — reads a PRD, reuses
     existing patterns where possible, writes new ones only for gaps;
     HARD-GATEs on user review
   - /add-pattern conversational mode — 5 fixed questions when no PRD
   - /new-design HARD-GATE rewritten: auto-invokes distill (with PRD)
     or add-pattern conversational (without PRD) when patterns/ empty
   - "Distill patterns from this PRD" button in PRDs tab

Docs swept: README, preset-mobile/README, dev-server/README,
eslint-plugin/README, PATTERNS.md, CONTRIBUTING, docs/architecture,
docs/release no longer mention 8 patterns, --starters, or
patterns.config.json (already removed in 0.3.x).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@leefanv leefanv merged commit 94d4e6b into main May 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant