Przejdź do głównej zawartości

Taste Skill: biblioteka anty-slop skilli frontendowych

Taste Skill (Leonxlnx/taste-skill) to biblioteka 13 skilli agenta (Agent Skills) na licencji MIT, które ładują reguły projektowania frontendu do kontekstu agenta, zanim ten napisze markup. Domyślny skill, design-taste-frontend, wnioskuje kierunek projektowy z briefu, ustawia trzy pokrętła i zakazuje typowych wzorców UI generowanego przez AI. Służy do landing page’y, portfolio i redesignów, nie do dashboardów.

Ta strona jest dla frontend developerów, którzy generują strony marketingowe w Claude Code, Codeksie albo Cursorze, oraz dla tech leadów, którzy muszą zdecydować, czy taki wynik można zmergować. Sytuacja: landing page od agenta działa, ale ma fioletowy gradient, trzy identyczne karty funkcji, eyebrow 001 · Capabilities i fałszywy dashboard zbudowany ze stylizowanych elementów div. Nikt w zespole nie umie powiedzieć w code review, co właściwie znaczy „mniej generycznie”.

Stan na 2026-09-26: Leonxlnx/taste-skill ma 90,2 tys. gwiazdek na GitHubie (odczyt z GitHuba). skills.sh podaje 520 147 instalacji design-taste-frontend; to liczba SECONDARY z zewnętrznego zrzutu LinklyAI/best-skills z tego samego dnia, więc przed cytowaniem sprawdź ją bezpośrednio na skills.sh. Stronę zweryfikowaliśmy względem commita ce26fc2 na gałęzi main (2026-09-26), CLI skills 1.7.0, Claude Code 2.1.285 i codex-cli 0.157.1.

  • Przypiętą instalację na poziomie projektu dla Claude Code, Codeksa i Cursora oraz jedną pułapkę z nazwą, przez którą instalacja po cichu nic nie robi.
  • Wiedzę, który z 13 skilli zainstalować do nowych stron, redesignów i pracy zaczynającej się od obrazów.
  • Trzy prompty do skopiowania: budowę, która zatrzymuje się na twoją akceptację kierunku, review oparte wyłącznie na dowodach i redesign, który nie może ruszyć tras ani analityki.
  • Skrypt powłoki i spec Playwrighta, które sprawdzają twarde reguły skilla w CI, więc nikt nie czyta CSS linijka po linijce.
  • Sposoby wyjścia z sytuacji, w których Taste Skill walczy z twoim stackiem, firmowym stylem albo innymi skillami projektowymi.

Instalacja Taste Skill w Claude Code, Codeksie albo Cursorze

Dział zatytułowany „Instalacja Taste Skill w Claude Code, Codeksie albo Cursorze”

Taste Skill to zestaw plików SKILL.md, a nie serwer MCP, model ani CLI. Instalujesz go przez CLI skills. Repozytorium nie ma tagów wydań, więc przypinaj SHA commita: domyślny skill jest oznaczony jako „v2 (experimental)”, a autorzy piszą, że poprawki „may land in any v2 experimental release”.

Okno terminala
# Terminal, katalog główny projektu. Przypnij commit, który przejrzałeś.
npx skills add "Leonxlnx/taste-skill#ce26fc25c0e5e8cab638f883de62d9a86ee5e45b" \
--skill design-taste-frontend -a claude-code

CLI zapisuje plik w .agents/skills/design-taste-frontend/SKILL.md, tworzy do niego dowiązanie symboliczne w .claude/skills/ i zapisuje źródło, ref oraz hash w skills-lock.json. Wywołujesz go przez /design-taste-frontend albo pozwalasz Claude’owi załadować go sam, gdy prośba pasuje do opisu skilla.

Repozytorium ma też marketplace dla Claude Code. Plugin zawiera wszystkie 13 skilli w jednej przestrzeni nazw, więc używaj go tylko wtedy, gdy chcesz cały pakiet:

/plugin marketplace add Leonxlnx/taste-skill
/plugin install taste-skill@taste-skill

Aby zainstalować skill dla wszystkich trzech agentów naraz, podaj -a claude-code codex cursor. Commituj .agents/skills/, .claude/skills/ i skills-lock.json, a do CI dodaj kontrolę dryfu z zespołowego workflow dla skilli, żeby ręczna edycja albo nieprzejrzana aktualizacja wywracały build.

Koszt kontekstu. Dopóki skill nie jest używany, w kontekście siedzi tylko jego nazwa i opis. Gdy design-taste-frontend się ładuje, wnosi plik o 1206 liniach i około 87 KB (12 800 słów). W Claude Code uruchom /context przed wywołaniem i po nim, żeby zobaczyć, ile kosztuje twoją sesję. Przy instalacji przez plugin prognozowany koszt w tokenach wypisze claude plugin details taste-skill.

Instaluj jeden skill do jednego zadania. Dwa skille z tego pakietu załadowane do jednej prośby dają agentowi dwie procedury do pogodzenia.

Nazwa instalacyjna (--skill)WynikSięgnij po niego, gdy
design-taste-frontendKodDomyślnie: nowy landing page, portfolio albo strona marketingowa
design-taste-frontend-v1KodZależy ci dokładnie na zachowaniu sprzed v2
redesign-existing-projectsKodIstniejącą stronę trzeba unowocześnić, zaczynając od audytu
gpt-tasteKodChcesz ostrzejszego ruchu w GSAP i większej zmienności układów, pod modele GPT
high-end-visual-designKodKierunek jest już „miękki”: spokojny, premium, ruch sprężynowy
minimalist-uiKodKierunek jest redakcyjny, w stylu Notion albo Linear
industrial-brutalist-uiKodKierunek to szwajcarska typografia, ostry kontrast, sztywne siatki
full-output-enforcementKodAgent zostawia komentarze-placeholdery zamiast gotowego kodu
stitch-design-tasteReguły, opcjonalnie DESIGN.mdProjektujesz w Google Stitch i chcesz jego reguł albo eksportu do DESIGN.md
image-to-codeObrazy, potem kodChcesz wygenerować klatki referencyjne, przeanalizować je i zaimplementować
imagegen-frontend-webTylko obrazyPotrzebujesz makiet strony, jeden obraz na sekcję
imagegen-frontend-mobileTylko obrazyPotrzebujesz koncepcji ekranów iOS albo Androida w makietach telefonu
brandkitTylko obrazyPotrzebujesz plansz z logo, paletą i typografią

gpt-taste każe modelowi zasymulować random.choice() z ziarnem (seed bierze się z długości promptu), żeby wybrać układy, więc różne briefy dostają różne układy. Losowanie tylko symuluje model, nic go nie wykonuje, więc tak czy inaczej nie polegaj na nim, gdy potrzebujesz powtarzalnego wyniku.

Domyślny skill to pipeline, który agent przechodzi po kolei. Numery sekcji poniżej pochodzą z samego skilla, więc możesz na nie wskazywać agentowi.

  1. Wnioskowanie z briefu (§0). Agent czyta rodzaj strony, słowa opisujące klimat, referencje, odbiorców i ograniczenia, a potem pisze jednolinijkowy „Design Read”. Jeśli brief jest niejednoznaczny, zadaje jedno pytanie, zamiast zgadywać.

  2. Trzy pokrętła (§1). DESIGN_VARIANCE, MOTION_INTENSITY i VISUAL_DENSITY, każde w skali od 1 do 10, sterują każdą decyzją o układzie, ruchu i gęstości. Wartości bazowe to 8 / 6 / 4. Skill wnioskuje je z briefu (brief „trust-first” albo dla sektora publicznego schodzi do 3-4 / 2-3 / 4-5, brief agencyjny albo w stylu Awwwards rośnie do 9-10 / 8-10 / 3-4), a ty nadpisujesz je w rozmowie, nie edytując pliku.

  3. Mapa systemów projektowych (§2). Brief, który brzmi jak Material, Fluent, Carbon, Polaris, Atlassian, Primer, GOV.UK, USWDS, Bootstrap, Radix, shadcn albo Tailwind, dostaje oficjalny pakiet. Estetyka, taka jak bento, brutalizm czy glassmorphism, dostaje standardy webowe, a Liquid Glass Apple’a skill opisuje jako webowe przybliżenie, a nie oficjalny pakiet.

  4. Generowanie zgodnie z domyślnym stackiem (§3: React albo Next.js, Tailwind v4, Motion z motion/react) i zakazami z §9.

  5. Końcowy check pre-flight (§14). Lista 62 punktów, które muszą przejść, zanim agent uzna pracę za skończoną: blokady spójności, kontrast, limity sekcji hero, ograniczony ruch i zasada „zadeklarowany ruch = pokazany ruch”.

§13 wyłącza z zakresu dashboardy, panele administracyjne, tabele danych, wieloetapowe formularze, edytory kodu, natywne aplikacje mobilne i UI do współpracy w czasie rzeczywistym. W takich przypadkach skill każe agentowi to powiedzieć, wskazać właściwe narzędzie (Fluent albo Carbon do dashboardów, TanStack Table albo AG Grid do tabel, Monaco do edytorów) i stosować tylko reguły dotyczące stron marketingowych tam, gdzie pasują.

Sekcja 9, „AI Tells”, to powód, dla którego zespoły instalują ten skill. Reprezentatywny wycinek:

  • Wizualnie: neonowe poświaty, czysty #000000, przesycone akcenty, tekst z gradientem w dużych nagłówkach, własne kursory i domyślny „AI purple”, chyba że marka jest fioletowa.
  • Układ: trzy równe karty funkcji w rzędzie, border-t plus border-b na każdym wierszu długiej listy i powtarzanie tej samej rodziny układów (pre-flight wymaga co najmniej czterech rodzin na osiem sekcji).
  • Treść: imiona typu „John Doe”, marki typu „Acme”, liczby typu 99.99%, puste czasowniki w rodzaju „Elevate” i „Seamless”, numerowane eyebrowy sekcji (001 · Capabilities), etykiety BETA w hero, zachęty do przewijania i paski z miastem i pogodą.
  • Podróbki: UI produktu złożone z prostokątów div udające zrzut ekranu i ozdobne podpisy autorów zdjęć przy zdjęciach stockowych.

Skill narzuca też blokady: jeden kolor akcentu, jeden system zaokrągleń i jeden motyw strony, bez przeskoków między jasnym a ciemnym w środku. Nagłówek hero mieści się w dwóch liniach, podtekst w 20 słowach, główne CTA jest widoczne bez przewijania, a nawigacja zajmuje jedną linię o wysokości najwyżej 80px.

Landing page z Taste Skill: od briefu do zmergowanego pull requesta

Dział zatytułowany „Landing page z Taste Skill: od briefu do zmergowanego pull requesta”

To pętla, w którą wpisuje się skill: uzgodnij kierunek, zbuduj, zweryfikuj maszynowo, zrób review na podstawie dowodów i wdrażaj. Ludzka decyzja zapada raz, przy kierunku, a nie przy każdej linijce CSS.

  1. Napisz brief z faktami, których skill nie wywnioskuje. Odbiorcy, jedna akcja, do której strona ma prowadzić, kolor marki i fonty, strony referencyjne. Przy większej powierzchni najpierw przeprowadź czteroartefaktowy pipeline od projektu do kodu i przekaż agentowi jego kontrakt projektowy.

  2. Buduj z punktem akceptacji. Prompt poniżej zmusza agenta do zadeklarowania Design Read i wartości pokręteł, zanim napisze kod, więc właściciel produktu albo designu akceptuje kierunek w jednej wiadomości.

  3. Uruchom deterministyczną bramkę i spec Playwrighta z następnej sekcji. Popraw każdy błąd przed review.

  4. Zrób review w świeżej sesji promptem opartym wyłącznie na dowodach. Recenzent, który nie pisał strony, sprawdza punkty pre-flight na plikach i zrzutach ekranu, a nie na deklaracjach autora.

  5. Merguj po zielonym CI i po tym, jak właściciel obejrzy zrzuty w szerokości desktopowej i mobilnej.

Jak zweryfikować wynik Taste Skill bez czytania każdej linijki?

Dział zatytułowany „Jak zweryfikować wynik Taste Skill bez czytania każdej linijki?”

Pre-flight to agent oceniający własną pracę. Traktuj go jako deklarację do sprawdzenia, nie jako dowód. Kilka twardych reguł skilla jest mechanicznych, więc może je egzekwować skrypt.

Bramka na źródłach. Zapisz to jako scripts/taste-gate.sh i uruchamiaj w CI oraz w pętli agenta. Przy każdym znalezisku kończy się kodem różnym od zera:

#!/usr/bin/env bash
# scripts/taste-gate.sh: deterministic checks for Taste Skill's hard rules.
# Usage: scripts/taste-gate.sh [dir ...] (default: src)
set -u
dirs=("${@:-src}")
inc=(--include='*.tsx' --include='*.jsx' --include='*.ts' --include='*.js'
--include='*.html' --include='*.mdx' --include='*.vue' --include='*.svelte' --include='*.astro')
fail=0
check() { # $1 = label, $2 = extended regex
if grep -rnE "${inc[@]}" -- "$2" "${dirs[@]}"; then
echo "FAIL: $1" >&2; fail=1
fi
}
for d in "${dirs[@]}"; do [ -d "$d" ] || { echo "FAIL: no such dir $d" >&2; exit 2; }; done
check "em or en dash in shipped text (§9.G)" '—|–'
check "raw scroll listener (§5.D)" "addEventListener\(['\"]scroll"
check "h-screen (use min-h-[100dvh] for full-height sections, §3.E)" '(^|[^-])\bh-screen\b'
check "section-number eyebrow (§9.F)" '\b0{1,2}[0-9] ?(·|/) ?[A-Za-z]'
exit "$fail"

Kontrola kresek łapie też kreski w komentarzach w kodzie. Trzymaj komentarze w katalogu marketingowym bez nich albo wskaż skryptowi tylko komponenty, które renderują teksty. Kontrola h-screen łapie każde wystąpienie, także w paskach bocznych i oknach modalnych, więc uruchamiaj skrypt tylko na katalogu marketingowym.

Spec na wyrenderowanej stronie. Grep po źródłach nie zobaczy tekstu, który przychodzi z CMS-a. Ten spec Playwrighta (z @playwright/test i @axe-core/playwright) sprawdza to, co widzi odwiedzający, w dwóch szerokościach:

tests/landing.taste.spec.ts
import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';
for (const viewport of [{ width: 1440, height: 900 }, { width: 390, height: 844 }]) {
test(`landing page meets Taste Skill rules at ${viewport.width}px`, async ({ page }) => {
await page.setViewportSize(viewport);
await page.goto('/');
const text = await page.locator('body').innerText();
const alts = await page.locator('img').evaluateAll((imgs) => imgs.map((i) => i.getAttribute('alt') ?? '').join(' '));
expect(text + alts).not.toMatch(/[–—]/); // §9.G
const cta = await page.getByTestId('primary-cta').boundingBox(); // hero: CTA above the fold
expect(cta).not.toBeNull();
expect(cta!.y + cta!.height).toBeLessThanOrEqual(viewport.height);
const a11y = await new AxeBuilder({ page }).withTags(['wcag2a', 'wcag2aa']).analyze();
expect(a11y.violations).toEqual([]);
await expect(page).toHaveScreenshot(`landing-${viewport.width}.png`, { fullPage: true });
});
}

Wzorcowe zrzuty utwórz raz poleceniem npx playwright test --update-snapshots i zacommituj je. Inaczej pierwszy przebieg CI oblewa test z komunikatem „snapshot doesn’t exist”. Zrzuty ekranu stają się artefaktem do review. Szerszą praktykę opisują strony o testach end-to-end, testach dostępności i wyłapywaniu slopu przed merge’em. Żeby agent mógł między iteracjami obejrzeć własną działającą stronę, dodaj agent-browser.

Kto akceptuje. Właściciel produktu albo designu akceptuje Design Read i pokrętła przed budową oraz zrzuty ekranu po niej. CI odpowiada za skrypt bramki, spec i skan dostępności. Sesja recenzenta odpowiada za sprawdzenie dowodów. Nikt nie akceptuje „wygląda mniej generycznie” bez zrzutu ekranu w pull requeście.

Redesign istniejącej strony bez psucia tras i analityki

Dział zatytułowany „Redesign istniejącej strony bez psucia tras i analityki”

Do istniejącej strony zainstaluj redesign-existing-projects albo użyj §11 domyślnego skilla. Oba zaczynają od wykrycia trybu (Greenfield, Preserve albo Overhaul) i od audytu przed jakąkolwiek zmianą. §11.F wymienia to, co nigdy nie zmienia się po cichu: strukturę URL, etykiety głównej nawigacji, nazwy i kolejność pól formularzy, logo albo wordmark oraz teksty prawne i zgody. §11.C dokłada identyfikatory kotwic i identyfikatory sekcji, od których zależy analityka.

Te reguły żyją w kontekście agenta, nie w twoim CI. Podeprzyj je kontrolami: listą tras porównywaną z main, nazwami zdarzeń analitycznych sprawdzanymi w teście end-to-end i testami charakteryzującymi formularzy, zanim agent ich dotknie.

Gdy Taste Skill walczy z twoim firmowym stylem albo stackiem

Dział zatytułowany „Gdy Taste Skill walczy z twoim firmowym stylem albo stackiem”

Skill narzuca własne wybory, a jego zakazy obowiązują „unless the brief explicitly asks for them”. To zdanie jest kanałem nadpisywania: wyjątki zapisz w briefie albo w instrukcjach projektu, które agent zawsze czyta, a zainstalowany SKILL.md zostaw w spokoju. Zmieniona kopia oblewa kontrolę dryfu i znika przy następnej aktualizacji.

## Frontend design exceptions (read with the design-taste-frontend skill)
- Icons: we use lucide-react already. Do not add a second icon library.
- Font: Inter is the brand font. Do not replace it.
- Stack: Vue 3 + Nuxt. Ignore the React-specific parts of §3 and §5.

Skill nie ma ścieżki poza Reactem: przy Vue albo Svelte licz się z tym, że stack trzeba powtarzać w każdym briefie, a kod animacji z §5 przeglądać ręcznie.

Wstaw ten blok do CLAUDE.md dla Claude Code, do AGENTS.md dla Codeksa i do reguły projektu w Cursorze. Linie o ikonach, foncie i zależnościach wspiera tekst samego skilla: Inter jest domyślnie odradzany, ale dozwolony na wyraźną prośbę, lucide-react jest dozwolony, gdy użytkownik o niego prosi albo projekt już od niego zależy, a §3.F każe agentowi sprawdzić package.json, zanim doda jakąkolwiek bibliotekę.

Strona dalej wygląda szablonowo. Agent pominął §0 i użył bazowych pokręteł. Poproś wprost o Design Read i wartości pokręteł (robi to prompt do budowy) i odrzuć odpowiedź, która powtarza 8 / 6 / 4 bez uzasadnienia z briefu.

Pre-flight mówi PASS, a na stronie są pauzy. Raport to samoocena. Uruchom scripts/taste-gate.sh i spec Playwrighta, wklej agentowi błędy i poproś o poprawki tylko we wskazanych liniach.

W package.json pojawiają się nowe zależności. Domyślny stack skilla obejmuje GSAP, Motion i konkretne biblioteki ikon. Dopisz swój stack do wyjątków projektu i poproś agenta o listę zależności, zanim cokolwiek zainstaluje (krok 4 promptu do budowy).

Agent przestylował twój dashboard. Prośba pasowała do opisu skilla, choć §13 wyłącza dashboardy z zakresu. Napisz w prompcie „do not use the design-taste-frontend skill for this” albo trzymaj skill na poziomie projektu tylko w aplikacji marketingowej.

Ruch jest zadeklarowany, ale nic się nie rusza, albo rusza się wszystko. Pre-flight wymaga prawdziwej animacji powyżej MOTION_INTENSITY 4 i obsługi prefers-reduced-motion powyżej 3. Dla statycznej strony obniż pokrętło w rozmowie do 3 i testuj z włączonym ograniczeniem ruchu w przeglądarce.

Taste Skill, Impeccable czy czteroartefaktowy pipeline?

Dział zatytułowany „Taste Skill, Impeccable czy czteroartefaktowy pipeline?”
Taste SkillImpeccableCzteroartefaktowy pipeline
Postać13 plików skilliJeden skill z nazwanymi poleceniami i deterministyczny detektorWorkflow z bramkami i czterema wersjonowanymi artefaktami
Najlepszy doGenerowania nowej strony marketingowej, która nie wygląda szablonowoDopracowywania istniejącego UI we własnym systemie projektowymPrzeprowadzenia ekranu produktu od intencji do zweryfikowanego kodu
Uczy się twojego systemu?Nie, narzuca kierunek, chyba że brief mówi inaczejTak, z PRODUCT.md i DESIGN.mdTworzy kontrakt projektowy jako jeden z artefaktów
Kontrola maszynowaBrak w pakiecie; dodaj bramkę i spec z tej stronynpx impeccable detect w CIBramki zrzutów ekranu i dostępności z kontraktu

Taste Skill wybierz do nowego landing page’a albo portfolio. Impeccable, gdy UI już istnieje i chcesz nazwanych poprawek oraz detektora. Pipeline do ekranów produktu, gdzie stany, tokeny i akceptacja liczą się bardziej niż szlif za pierwszym podejściem; etap budowy w jego środku może przejąć dowolny z tych skilli.