Kevin's taste for General Translation work and the review he applies to it.
pnpm skills:install gt-aesthetic --project <dir>Run it from a Prototemplate checkout. It links skills/gt-aesthetic into the project’s .claude/skills and .agents/skills; --copy vendors the folder instead, and --dry-run prints each step first.
General Translation (GT) builds open-source i18n libraries and a translation platform. Kevin Liu reviews its design work, and he judges every GT surface against two finished references: the brand deck for product surfaces and the shipped generaltranslation.com for the site. This skill records what those references measure, the verdicts he has given with their dates, and the loop in which he reviews work. Read it before designing a GT surface and again before showing him the result.
Paths are relative to a checkout: $PROTOTEMPLATE is Prototemplate (Kevin's design lab, served at prototemplate.com) and $GT_CLOUD is gt-cloud (the monorepo of the GT site, docs and dashboard). Read gt-cloud facts from origin/main or a fresh worktree, because a long-lived checkout can sit on an old branch. references/verdicts.md holds every dated verdict in Kevin's words, references/measures.md holds the numbers of each reference, and scripts/measure-type.mjs reads the heads and leads of any page.
Every surface has one governing reference, and its values are measured before any new value is invented.
| Surface | Reference | Where it lives |
|---|---|---|
| Product surfaces: the dashboard, onboarding and the auth plate, the Prototemplate shell and its pages, the deck itself | The brand deck | $PROTOTEMPLATE/deck/parts/head.html (tokens and CSS), deck/DECK-GRAMMAR.md (rules), /deck on the dev server |
| The site: generaltranslation.com, landing and marketing pages | The shipped site | $GT_CLOUD/apps/landing on origin/main, served at generaltranslation.com; Prototemplate's page-for-page copy at /d/production; BRAND.md section 8 |
| Enterprise and pricing pages | The toolchain prototypes | /d/toolchain/enterprise and /d/toolchain/pricing, copy included, word for word |
| Page content | Production | the current generaltranslation.com page components on gt-cloud origin/main |
| Material on a product surface | The landing hero's field | the studio's bayer-8x8 preset through createStudioField in $GT_CLOUD/apps/landing/src/lib/studio-field.ts, mounted by HeroField.tsx (references/measures.md) |
| Dithered pictures | The Blue Marble | $PROTOTEMPLATE/docs/ARTIFACT-PICTURES.md |
Kevin named the deck as a reference: "i really love our deck's navigation and basic interface" (2026-09-08), and on 2026-09-25 he answered the first dashboard pass with the deck's URL. From 2026-08-06 the site's reference was the Dossier (/d/singularity-dossier): "dossier is indeed our completed version and treat it as such". On 2026-10-06 he asked "why is the dossier the reference for Brand? its evolved so much more since then", and on 2026-10-07 he ruled "fix the dossier references". The shipped site grew from the Dossier's direction: gt-cloud #4213 built the production landing from it, and that landing became canonical for the redesign stack on 2026-08-11. Since then the identity has added the deck as the reference for product surfaces (2026-09-25), the speed marks (2026-09-29), the films on /motion and the cycling title badges. BRAND.md section 8 now names where the identity ships, and the Dossier stays in the gallery as the direction the site grew from.
head.html, the shell mirrors them as --pt-* in $PROTOTEMPLATE/src/components/viewer/tokens.css, and the dashboard plate uses the deck's own names in $GT_CLOUD/apps/dashboard/src/app/brand-tokens.css.playwright-core; from an installed copy of this skill, run that folder's scripts/measure-type.mjs with the working directory in such a checkout.bash node skills/gt-aesthetic/scripts/measure-type.mjs http://localhost:3005/brand-deck.html --storage gt-deck-mode=book --sel ".book-head h1, .book-head p" node skills/gt-aesthetic/scripts/measure-type.mjs http://localhost:3005/motion --strict
It reads 1440 and 390 in both themes and flags a heading above weight 500, a display head on more than two lines, a lead on more than three (five on a phone), prose wider than 75 characters, an unbalanced heading, a display head without cv11 and ss01, tracking above +0.02em or below -0.03em, a face other than Inter, a short last line, and text under the WCAG contrast floor. /deck serves /brand-deck.html itself, so either address measures the deck; --storage gt-deck-mode=book opens its book view. A page that does not load within --timeout (120000 ms by default) prints "could not load", which happens on the shared dev server when the machine is loaded, so raise it there. --widths and --themes narrow the run.
Each verdict on real work set a rule, and work he rejected restarts from the reference: the rejected version is never the base of the next attempt. The table of verdicts (date, what he rejected, the rule since) opens references/verdicts.md, and the full wording and context of each follows it. Read the rows for the kind of surface before building one; sections 3 and 4 and the review checklist carry the rules they set.
A page reads as General Translation through its structure, its contrast and its single material. Kevin's brief for the deck asked for minimal black and white with only the edge grid lines, images and simple diagrams, and no eyebrow text (2026-09-08).
.rows), and two lines per value at most. Bullets, boxed tiles and floating cards are out.hair (ink at 18%) for large surfaces and the lines that divide a page, hair-soft (ink at 9%) for list rows, and edge (ink at 62%) for the frame of a picture or a capture only. A large surface drawn in the frame weight reads as a boxed image. DESIGN.md section 2 ("Line law for chrome") has the ownership table and pnpm lint:lines:shell enforces it. On deck slides .rows rules draw --hair and .plain rows draw --hair-soft (references/measures.md).pnpm lint:radius holds them. The deck's sheet stays square. gt-cloud uses rounded-md for UI surfaces and rounded-full for round and pill shapes (gt-ui consistent-radius).#101010 code panel, the one plate surface (ink at 3.5%) under diagrams and captures, and objects such as the dashboard's credits card.b and strong included. State shows in ink: the active row, the pressed button and the focused field draw in ink.#8a8f98) is 3.25:1 on white, under the 4.5:1 floor for text below 24px, so the dashboard plate darkens light titanium to #6e737c (4.77:1) for its 13px captions and keys. The deck's 15px captions and the Prototemplate shell's meta text still use #8a8f98 in light. On a new light surface, text a reader needs is set in ink-2 or in the darker titanium.#2f5ce0 (dark lift #86a8ff), and a drawing gives it to one element. The deck uses no accent on text, lines or fills; semantic color appears only on icons (green #12a37a done, amber #f0a020 open, red #e5484d rejected, blue for GT).references/measures.md). A new field stays at that strength or under it. Artifact pictures print at 0.62 opacity in dark and 0.7 in light.gt-dither owns the engines, the presets and the picture standard.The spacing numbers of the deck sheet, the deck book head, the dashboard plate and app pages, and the mobile ladder are in references/measures.md ("Rhythm across the references"); the live file wins whenever one of them matters. Kevin's ask on 2026-09-28 was "make our spacing a lot better, kerning a lot better". Gaps that look equal must be equal, and the gaps around one heading match on both sides.
100dvh correctly (2026-10-05). Air goes under headers, never at the bottom of boxes (2026-08-07, 2026-08-17: "fix space under headers here").--pt-title-clear under the sheet's border (2026-10-06). Check a small move against the screenshot before going further.no-gif-mark). gt-brand and gt-diagrams (references/isometric.md) hold the recipes.icon-tiers: Heroicons solid for meaning and Lucide for controls. The deck and the Prototemplate shell use Heroicons 20 solid, and in the deck an icon sits only in a key cell or at the start of a row.gt-voice has the rules.gt-brand owns the face, the tokens, the feature lists, the full tracking table, the measure tokens, the named exceptions (the Prototemplate nameplate, the /d/ directions, the presenter) and the type lint. Read its section 4 first. This section covers what to check once those are right.
font-optical-sizing: auto, display text at weight 500 with cv11 and ss01, and running text at 400.gt-brand's table. One tracking value at every size was the 2026-09-25 defect ("kerning needs to be adjusted"). Weight 400 text is never tracked, and nothing is tracked positive except the deck's 13px counter (+0.02em), the deck slides' picture credits and gt-cloud's 13px captions (+0.01em).text-wrap: balance). A display head holds two lines at most at every width (2026-08-04). Kevin's words on the hero were "TASTEFULLY two lines again" (2026-08-04).--pt-measure-lead), because 62ch comes to 83 to 86 Inter characters. The deck's own book-head lead (max-width: 62ch) measured 84 characters a line and four lines at 1440 on 2026-10-05, so copy the deck's sizes and gaps and take the measure from this rule.text-wrap: pretty, and no paragraph ends on one short word.b and strong inside a weight 500 element as 700. A base rule sets them to 500.font-variant-numeric: tabular-nums.git add -A.0fr to 1fr, never with a ResizeObserver and React state measuring the text. Comments stay at one or two lines and PR bodies stay short (gt-ship). When a review asks for tests of machinery that need not exist, remove the machinery.docs/handbook/operating-principles.md).references/process.md holds the local review recipe (the 3005 server, both themes at 1440 and 390 plus 1527 by 814 for plate pages, the external harness, theme seeding, junction crops at 2x, pnpm check:pages and pnpm lint:lines:shell), the readings of Kevin's words ("equivalent", "keep its aesthetic", "smaller", "make it look better", "fix this", "redesign", "remove this", "add it to the left of X", "standardize", and his ask for a lint once a rule matters), and how to show the work (before and after crops 420 to 900 CSS px wide in both themes, with plain sentences on what changed).
The wiki's general design skills stay useful, and where they disagree with a verdict in this skill, the verdict wins. Which of their rules apply to GT work, and the five that do not, are in references/process.md ("The general skills").
Built from the deck's defect list (DECK-GRAMMAR.md, "What a defect is") and Kevin's verdicts.
pnpm lint:lines:shell is clean, and junctions pass at 2x.measure-type.mjs --strict passes on the changed pages, or each flag has a stated reason.gt-brand (the tokens, the type system and the marks), gt-voice (copy), gt-deck (the reference deck), gt-lints (the line law, the type lint and gt-ui), gt-dither (the field and the pictures), gt-landing-pages and gt-website (the site), gt-components (the shell and shared UI), gt-diagrams (drawings, with the isometric family in references/isometric.md), gt-motion, gt-ship (PR screenshots), gt-verify (the browser probes GT sessions check a page with) and prototemplate. General skills in Kevin's wiki: design-engineering-polish, make-interfaces-feel-better, animated-component-libraries.
Dated provenance for every rule is in references/sources.md: the Prototemplate and gt-cloud files, the wiki skills, and Kevin's dated directives with the memory notes that recorded them.
The folder skills/gt-aesthetic as agents fetch it. Each file opens raw.
SKILL.mdreferences/measures.mdreferences/process.mdreferences/sources.mdreferences/verdicts.mdscripts/measure-type.mjs