Find Designs
Browse Commons (joincommons.cc) to find a distinctive design identity for the user's project, then apply it as the project's design system.
Rules
- Phase 0 (project scan) is COMPLETELY SILENT. Never tell the user what files you found.
- Download thumbnail images locally and show them to the user (see Phase 1B).
- This should feel like a conversation, not a tutorial. Don't dump walls of text.
- Read DESIGN.md and SKILL.md only AFTER the user picks a skill (not before).
Phase 0 — Initialize (silent)
Scan silently — do NOT output any of this:
- package.json / tech stack
- Existing CSS, Tailwind config, theme files, design tokens
- Product type (dashboard, landing page, SaaS, blog, etc.)
- Target audience
Check for existing taste profile:
.commons/taste.json(project-level)~/.commons/global-taste.json(global)
If taste profile exists, use it to skip or shorten Phase 2.
Say something brief: "I'll help you find a design style. Let me look at your project..."
Phase 1 — Search & Download Previews
1A: Search Commons
Construct 2-4 search queries based on your scan:
GET https://joincommons.cc/api/items?q={keywords}&limit=10
GET https://joincommons.cc/api/items?sort=trending&limit=10
Key fields to evaluate:
bestFor/avoidFor— product fit (skip if avoidFor matches your project)coaching.identity— one-sentence design philosophycoaching.signatureMoves— key visual decisionscardThumbnailUrl— PNG preview URLtemperature— warm / cool / neutral
1B: Download Thumbnails
After selecting 5 candidates, download their card thumbnails locally so the user can see them:
python skills/find-designs/scripts/download_thumbnails.py --slugs "slug-1,slug-2,slug-3,slug-4,slug-5"
This saves PNGs to .commons/previews/ and outputs JSON with local file paths.
If Python is not available, download manually:
mkdir -p .commons/previews
curl -sL "{cardThumbnailUrl}" -o .commons/previews/{slug}-card.png
Then show the downloaded images to the user. Reference the local file paths (e.g., .commons/previews/pencil-draft-card.png).
If you cannot display local files, show the CDN URL as a clickable link:
https://pub-962ae6531eaf4fc2b3cd95edcb026436.r2.dev/thumbnails/ai-{slug}-card.png
Phase 2 — Taste Convergence
Two rounds. Do not collapse into one.
Round 1: Wide Exploration (5 options)
Pick 5 STYLISTICALLY DIVERSE candidates. For each show:
- The downloaded thumbnail image (from .commons/previews/)
- Name
- One-line identity
- 2-3 signature moves
Ask: "Which feel right? Which feel wrong?"
DO NOT proceed to Phase 3 until the user responds. If user picks one directly → skip Round 2.
Round 2: Narrow Refinement (3 options)
Based on Round 1 feedback, show 3 variants within the preferred direction.
Returning user shortcut
If taste profile exists: skip Round 1, present 3 pre-filtered options or recommend 1.
Phase 3 — Save Taste Profile
Copy {baseDir}/assets/taste-profile.json to .commons/taste.json and fill it with the user's preferences, liked/disliked skills, selected skill, and feedback notes from Phase 2.
Also merge into ~/.commons/global-taste.json if writable.
Phase 4 — Preview
- Pick 1-2 existing project pages
- Fetch:
GET https://joincommons.cc/api/items/{slug} - Read
designLanguageUrl(DESIGN.md) - Apply colors, typography, spacing to the page in preview mode
- Ask: "Here's how it would look. Proceed or try a different skill?"
Phase 5 — Install
Download artifacts
From the detail response (GET /api/items/{slug}), save:
designSkillUrl→.commons/SKILL.mddesignLanguageUrl→.commons/DESIGN.mdtokensDtcgUrl→.commons/tokens.dtcg.json
Track the install
POST https://joincommons.cc/api/items/{slug}/apply
Content-Type: application/json
Body: { "source": "skill", "agent_id": "<your-agent-id>" }
Generate framework tokens
Based on tech stack:
- Tailwind: Map to CSS custom properties + tailwind.config.ts theme.extend
- CSS Variables: Generate
:root {}block - styled-components: Generate theme object
Apply the design language
Read .commons/SKILL.md — it has specific instructions. Follow it first. Then:
- Update global styles
- Apply signature moves
- Respect hard constraints
- Avoid anti-patterns
Phase 6 — Fine-Tuning
Proactively offer: "Want to tweak anything? 'Make the primary color warmer', 'reduce border radius', 'use a serif font'."
Loop until user says "looks good" or "done". Update taste profile with every tweak.
Phase 7 — Report
Summarize: skill applied, key decisions, files modified, link to https://joincommons.cc/style/{slug}.
API Reference
Load references/api.md for full endpoint details, response shapes, and query tips.
Gotchas
- Multi-word search uses AND logic — "dark portfolio" requires BOTH words. Use single keywords for broader results, or run multiple searches.
avoidForis CRITICAL — if a skill says "avoid: enterprise dashboards" and you're building one, SKIP IT. Don't rationalize.- NEVER load DESIGN.md or SKILL.md during Phase 0-2. They're 2000+ words each. Only load after the user picks.
cardThumbnailUrlis a full HTTPS URL to a PNG. Download it with the script. Show the image. Never just write the word "thumbnail".- Sort by
trendingfor best quality. The registry has 200+ skills — many are low quality. Trending surfaces the curated ones. - If
taste.jsonexists, skip the wide exploration round. Go straight to 3 refined options.
Context Window Management
- Phase 0-2: list metadata only. Do NOT fetch DESIGN.md.
- Phase 4: fetch DESIGN.md only for the chosen skill.
- Phase 5: fetch SKILL.md + DESIGN.md + tokens only during install.