$npx -y skills add sendaifun/solana-new --skill brand-designGenerate, preview, and apply a brand color palette (plus typography, gradients, and tone/voice) to a frontend project. Use when a user says "pick brand colors", "choose a color palette", "brand design", "generate a palette", "theme this project", "what colors should I use", "bran
| 1 | ## Preamble (run first) |
| 2 | |
| 3 | ```bash |
| 4 | _TEL_TIER=$(cat ~/.superstack/config.json 2>/dev/null | grep -o '"telemetryTier": *"[^"]*"' | head -1 | sed 's/.*"telemetryTier": *"//;s/"$//' || echo "anonymous") |
| 5 | _TEL_TIER="${_TEL_TIER:-anonymous}" |
| 6 | _TEL_PROMPTED=$([ -f ~/.superstack/.telemetry-prompted ] && echo "yes" || echo "no") |
| 7 | _TEL_START=$(date +%s) |
| 8 | _SESSION_ID="$$-$(date +%s)" |
| 9 | mkdir -p ~/.superstack |
| 10 | echo "TELEMETRY: $_TEL_TIER" |
| 11 | echo "TEL_PROMPTED: $_TEL_PROMPTED" |
| 12 | if [ "$_TEL_TIER" != "off" ]; then |
| 13 | _TEL_EVENT='{"skill":"brand-design","phase":"build","event":"started","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}' |
| 14 | echo "$_TEL_EVENT" >> ~/.superstack/telemetry.jsonl 2>/dev/null || true |
| 15 | _CONVEX_URL=$(cat ~/.superstack/config.json 2>/dev/null | grep -o '"convexUrl":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "") |
| 16 | [ -n "$_CONVEX_URL" ] && curl -s -X POST "$_CONVEX_URL/api/mutation" -H "Content-Type: application/json" -d '{"path":"telemetry:track","args":{"skill":"brand-design","phase":"build","status":"success","version":"0.2.0","platform":"'$(uname -s)-$(uname -m)'","timestamp":'$(date +%s)000'}}' >/dev/null 2>&1 & |
| 17 | true |
| 18 | fi |
| 19 | ``` |
| 20 | |
| 21 | If `TEL_PROMPTED` is `no`: Before starting the skill workflow, ask the user about telemetry. |
| 22 | Use AskUserQuestion: |
| 23 | |
| 24 | > Help superstack get better! We track which skills get used and how long they take — |
| 25 | > no code, no file paths, no PII. Change anytime in `~/.superstack/config.json`. |
| 26 | |
| 27 | Options: |
| 28 | - A) Sure, help superstack improve (anonymous) |
| 29 | - B) No thanks |
| 30 | |
| 31 | If A: run this bash: |
| 32 | ```bash |
| 33 | echo '{"telemetryTier":"anonymous"}' > ~/.superstack/config.json |
| 34 | _TEL_TIER="anonymous" |
| 35 | touch ~/.superstack/.telemetry-prompted |
| 36 | ``` |
| 37 | |
| 38 | If B: run this bash: |
| 39 | ```bash |
| 40 | echo '{"telemetryTier":"off"}' > ~/.superstack/config.json |
| 41 | _TEL_TIER="off" |
| 42 | touch ~/.superstack/.telemetry-prompted |
| 43 | ``` |
| 44 | |
| 45 | This only happens once. If `TEL_PROMPTED` is `yes`, skip this entirely and proceed to the skill workflow. |
| 46 | |
| 47 | # Brand Design |
| 48 | |
| 49 | Turn a project from "unthemed shadcn default" into something with real identity. This skill runs the full brand pass: palette, typography, gradients, tone/voice. Pairs with `scaffold-project` (runs after it) and `frontend-design-guidelines` (which reads the `brand.md` this skill writes). |
| 50 | |
| 51 | ## When to fire this skill |
| 52 | |
| 53 | Apply this skill any time the user is: |
| 54 | |
| 55 | - Starting frontend work on a newly scaffolded project and has no `brand.md` |
| 56 | - Explicitly asking for brand colors, a palette, or a theme |
| 57 | - Asking what the app "should look like" before any UI code is written |
| 58 | - Unhappy with a stock shadcn neutral theme and wants personality |
| 59 | |
| 60 | If the user is already deep in component work, **do not interrupt** to run this skill unless they ask. Offer it once at the start of the frontend phase, then drop it. |
| 61 | |
| 62 | ## Prerequisites check |
| 63 | |
| 64 | Before starting, quickly read the project to ground the interview: |
| 65 | |
| 66 | 1. `.superstack/idea-context.md` if present — gives you the product name, category, and audience |
| 67 | 2. `.superstack/build-context.md` if present — tells you the stack |
| 68 | 3. `package.json` — confirms Next.js + Tailwind + shadcn |
| 69 | 4. `app/globals.css` — current theme (usually shadcn default) |
| 70 | 5. `brand.md` in project root — **three cases**: |
| 71 | |
| 72 | **Case A — `brand.md` does not exist**: first-time setup. Proceed normally. |
| 73 | |
| 74 | **Case B — `brand.md` exists with `Status: deferred`**: the user previously deferred brand setup via `frontend-design-guidelines`'s Step 0. Treat this as first-time setup — do NOT ask "keep or replace?" The deferred file is a placeholder, not a real palette. Tell the user: |
| 75 | |
| 76 | > Picking up where we left off. You deferred brand setup earlier — I'll run the full interview now and replace the deferred placeholder with your choices. |
| 77 | |
| 78 | Then proceed to Step 1 normally. When Step 8 writes the real `brand.md`, it overwrites the deferred file — no backup needed because the deferred file has no real content to preserve. |
| 79 | |
| 80 | **Case C — `brand.md` exists with a real palette** (any status other than `deferred`): show the user the current palette name and ask before overwriting: |
| 81 | |
| 82 | > You already have a brand palette set up: **{{CURRENT_NAME}}**. Want to: |
| 83 | > |
| 84 | > 1. Keep it and exit — I won't touch anything |
| 85 | > 2. R |