Handbook

How Kevin Liu runs General Translation work: the operating principles, the quality bar, the playbook for parallel sessions, the product map, the glossary and the decisions.

Section 14 sections

Readme

This handbook records how Kevin Liu runs his work at General Translation (GT), a localization platform for developers. It is written for the agents and people who work with him: Claude Code and Codex sessions, teammates, and anyone who copies this repository into another project to work the same way. The skills hold the procedures for each area of the work. The handbook holds what spans them: the standing principles, the bar for done, the rules for running many sessions at once, the product facts, the vocabulary and the dated rulings.

The handbook is served at prototemplate.com/handbook, and the files live in docs/handbook/ of the public repository.

1.1

The documents

DocumentWhat it holdsRead it
Operating principlesThe eighteen standing rules behind Kevin's corrections, each with how to apply it, the skill that holds its procedure and the dated directive it comes fromBefore the first task of any GT work
Quality barThe measurable bar for each kind of artifact and for done, each row with the skill that owns itBefore showing Kevin work or shipping it
Multi-session playbookLanes, forked sessions, one instruction sent to several sessions, shared checkouts, collisions, Claude and Codex on one main, relay notes and shared resourcesWhen another session works on the same machine or repository
GT product and architecture mapWhat GT sells and to whom, how the products fit together, the copy that must be exact, the CLI and agent entry points, and the repositoriesBefore writing about, designing for or changing a GT product
GlossaryThe terms in Kevin's messages, the skills and the code, each with where it livesWhen a word in a request or a skill is unfamiliar
Decisions logKevin's dated rulings, what each replaced, his words and the lint, gate or skill that holds itBefore changing a standard, and when two sources disagree
1.2

How the handbook relates to the skills

  • A skill holds the procedure. The handbook states the rule and names the skill. When the two disagree, the skill is right, and the change that finds the difference corrects the handbook.
  • AGENTS.md at the repository root is the entry point for an agent. It summarizes the principles, routes each kind of task to its skill, and points here for depth.
  • The skills name handbook files by their paths (docs/handbook/quality-bar.md). A project that installs the skills copies this folder and AGENTS.md beside them, as README.md's "Import this into another project" section describes.
1.3

Changing the handbook

  • A new ruling from Kevin goes into the decisions log as a dated row that names what it replaced, and the skill, lint or gate that holds it changes in the same commit.
  • A document keeps the writing rules of gt-voice: plain declarative sentences, no em dashes, no metaphors, and no contrast pairs.
  • The repository is public. No document carries keys, account ids, email addresses, personal details, customer names beyond BRAND.md section 9, unannounced plans or business figures (operating principle 18).
  • On the site, a new document needs its entry in src/app/handbook/registry.ts and its headings in HANDBOOK_HEADINGS (src/lib/search-index.ts). The prototemplate skill (section 6) lists every step, and node skills/prototemplate/scripts/check-registries.mjs reports what a change missed.
1.4

Sources

  • The six documents were written on 2026-10-05 from Kevin's messages to Claude Code and Codex between 2026-07-20 and 2026-10-05, about 5,800 in all, and from the curated skills. Each document's Sources section lists its own evidence.
  • Kevin, 2026-10-05: "this prototemplate is supposed to be my hub for general translation work, but also i should be able to use it anywhere and build on top of it so it also acts as a wiki / repository of how i do work at GT".
Section 220 sections

Operating principles

General Translation (GT) is a localization platform for developers. Kevin Liu does design, website and product work at GT, and he runs it through several Claude Code and Codex sessions at once. The eighteen rules below come from his corrections to that work between 2026-07-20 and 2026-10-05. Read them before the first task of any GT work with him.

Each rule names the skill or document that holds its procedure. Where the two disagree, the skill is right and this page needs a fix. The glossary defines working terms such as lane and feature flag. The quality bar sets the bar for each kind of artifact, and the product map describes what GT sells and how its products fit together.

2.1

Keep going until everything is done

Run every wave of a plan to completion without stopping between waves to ask for permission. "Continue", "continue all" and "keep going" resume every open lane and every unfinished item. When an agent dies on a usage limit, an outage or a closed app, check the working tree, then resume the agent with its brief intact (gt-orchestration section 6). Do the hard items as well and report each one. Spend the time on the fixes, and write tests to prove them.

Kevin, 2026-09-09: "can we just do all of our updates? why are you holding back". He said the same on 2026-07-24 and 2026-09-12.

2.2

Do the work yourself and ask once for what only Kevin can do

Do every step an agent can do, including console setup through a CLI (vercel, gh, gcloud) or the browser page Kevin already has open. Collect what only he can do (a login, a payment, a credential consent, an approval, a Linear issue id) into one numbered list with the exact file, line or URL for each item. A blanket approval covers the plan it answers. The safety lines still hold. Before a step that cannot be undone, such as a merge over recent work, check that nothing is lost. Wait for his word on a force push, a production deploy to GT's Vercel team, new spend, or landing an exploration round on Prototemplate main (gt-ship section 8).

Kevin, 2026-10-05: "anything approved is approved from me." Also 2026-07-20 and 2026-10-02.

2.3

Change only what was asked

Make the smallest literal change that answers the request. "Move it down" means translate it and keep its angle and easing. When a request could mean a small or a large change, make the small one or ask. When a fix spreads into neighbouring behaviour, assets or metadata, revert the extra changes exactly and apply the narrow change. An image Kevin pastes is the whole spec.

Kevin, 2026-08-06: "why did so much change, i just wanted to alter the connectors and line coming up". On 2026-08-07 a landing update had also redone the OG image, the favicon and the metadata, and he said there was no need.

2.4

Keep approved work

Before changing a surface, list what Kevin praised on it and carry every item forward, because a rewrite that drops an approved element is a regression. When he rejects a direction, restore the files to exactly their state before the rejected change and rebuild from there, since the rejected version is never the base of the next attempt. Commit early in each round on a local branch so git holds the restore point, and archive each published version before overwriting it. The dated verdicts are in gt-aesthetic section 2, and the restore and archive steps are in gt-explorations section 6 (After a rejection) and section 7 (Archive before overwriting).

Kevin, 2026-08-07: "lets redo this to before i started asking for this change and rebuild". Also 2026-07-30 and 2026-10-03.

2.5

Fix the whole class

When Kevin flags one instance (an icon, a footer, a flag chip, a double border), enumerate the class programmatically with grep, a registry, a lint or a measurable check, fix every member, verify each one and report the count. The sweep repeats the requested change on each instance of the same defect, and rule 3 still holds for everything around them. When he likes a treatment in one place, apply it to the sibling components. The cross-app sweep is in gt-components (Standardization), and the fixes by failure class are in gt-lints section 6.

Kevin, 2026-09-28: "look for ANYWHERE ELSE icons nneed to be synced". Also 2026-08-03.

2.6

Find the root cause and guard it

Diagnose before editing: read the computed values of the element Kevin selected, read the full log, and reproduce with the deployed environment. Fix the cause, then add the regression test or lint that keeps the class from returning (gt-lints section 4). Error handling keeps the underlying error in its message and never substitutes a guessed cause.

Kevin, 2026-08-18: "right but why is the fetch failing". Also 2026-08-05.

2.7

Measure the rendered result

A fix is reported only with visual or measured proof of the rendered result at the place Kevin flagged: computed styles on the live element, 2x crops of corners and junctions, and every animation state. A code change does not prove the render, and neither does a green proxy check (the page loads, the sizes match) or a settings panel that shows the right value. When a tool reads badly, switch to another one, such as a Playwright capture, and finish the verification yourself. The methods are in gt-verify, and the quality bar (Done) states when work counts as finished.

Kevin, 2026-07-30: "no, the borders are still sstraight black, still padding, and borders wrong color". The fix before it had been reported as verified from a screenshot.

2.8

Show the result

Results reach Kevin as something he can see or hear: before and after crops at the same viewport, the localhost URL with its server running, a page open in his browser, or a small HTML page for a set of images or audio takes. Send them before he asks. The formats are in gt-reporting section 1, the review servers and the steps for letting him try a build are in gt-local-dev sections 1 and 5, and the crop and PR rules are in gt-aesthetic (Showing the work) and gt-ship section 4.

Kevin, 2026-10-05: "i cant listen to the voices, make it in html so i can go through and listen to em".

2.9

Real content and real assets

Copy and numbers come from production, the benchmark and data files, or GT's published pages. Never invent testimonials, quotes, metrics, prices or feature promises, and mark placeholder content as placeholder. Marks, logos, flags and scans are the real files, sourced and credited: third-party logos from thesvg.org (gt-brand section 5), pictures with their source, license and credit (gt-dither section 5), and the search for an asset continues until the real one is found (gt-brand section 8, Third-party material).

Kevin, 2026-08-05: "like these arent real quotes", about a testimonial block an agent had written.

2.10

Ask only real decisions, with a recommendation

Ask Kevin only what is his to decide: spend, naming, licensing, scope, or an instruction that reads two ways. Ask each as a multiple-choice question with the recommended option first, and batch several into one numbered list with short ids so he can answer inline (gt-reporting section 6). When a new state resembles an existing one, reuse the existing behaviour and say so instead of asking. A gate that blocks a requested change is a question for him, and bypassing it silently is a defect.

Kevin, 2026-09-25: "no need to ask me anythiing just do this all for me please".

2.11

Correct from the first frame

Treat a gap at startup, a flash on reload and lag on the first interaction as defects, even when the page settles a moment later. Check the first frame and the first interaction after a cold load and after a reload, and reserve space so nothing shifts (gt-verify, gt-performance).

Kevin, 2026-08-08: "if i reload i briefly see 3 layers stacked on top of each other". Also 2026-08-04, on an animation that had to start "without a startup lag".

2.12

Nothing unnecessary ships

A release carries no development code. Keep galleries, stand-ins, test-only hooks, dev routes, temporary tests, recorded fixtures and harnesses off the release branch (gt-ship section 3). Add no dependency that existing code can replace, keep comments to one or two lines, and keep an unready dashboard feature behind a feature flag.

Kevin, 2026-10-01: "we cant ship anythign unnnecessary". On 2026-08-28 he questioned three packages added for one feature, and since 2026-09-03 a dashboard page that is not ready ships behind a feature flag.

2.13

Prefer free and cheap

Challenge any design that adds paid infrastructure, and lay out the free alternative with numbers first. Use the cheapest model that performs well enough, put spend caps on paid model runs (gt-orchestration section 7), and turn off git-triggered preview deploys where they only cost money: the landing builds main and staging only (gt-website section 8). Check which account a cost lands on before acting.

Kevin, 2026-09-15: "make a new pr to not allow preview deployments from git in landing, this is running up a lot of costs".

2.14

Secrets stay in protected files

Keys and tokens live in a protected config file or a gitignored env file. They never appear in chat, URLs, prompts, commits, docs or PR bodies, and briefs and docs name them by variable name only. When Kevin pastes a key into chat, move it into the env or config file, never echo it or commit it, and tell him it now sits in a transcript so he can rotate it. Never ask him to paste a key into chat.

Kevin's brief, 2026-08-03: "never print a key value".

2.15

"Fully" means complete

When Kevin asks to build out, enhance or update something fully, cover every section and capability with real diagrams, visuals and code, and state why the design works. A placeholder or a partial pass does not count.

Kevin, 2026-08-05: "show actual diagrams and visuialzations and code in these. enhance fully". Also 2026-08-04.

2.16

Codify what worked

After something works once, turn it into a skill, a doc, a lint or saved parameters: the prompts that worked and how they were structured, a lint for each standard, and generation parameters saved next to each asset. Every tool and skill belongs to a workflow with a routing doc. A new skill follows the contract in prototemplate section 10, and a new lint follows gt-lints section 4.

Kevin, 2026-10-05: "create docs and skills for audio creation and generation, what prompts worked and how u structured it". Also 2026-07-24 and 2026-08-06.

2.17

Vendor-agnostic agent tooling

Agent tools, skills and scripts work with Codex, Claude Code and local models alike. Skills use the Agent Skills frontmatter fields only, so every loader accepts them (prototemplate section 10), and no script hard-wires one provider.

Kevin, 2026-09-10: "be vendor agnostic, dont just ennforce claude code".

2.18

Privacy on public surfaces

Prototemplate is public at www.prototemplate.com and github.com/Kevin-Liu-01/Prototemplate. Nothing in it carries keys, account ids, email addresses, personal details, customer names beyond BRAND.md section 9, unannounced plans, or business numbers such as funding, revenue and headcount (gt-brand section 8, gt-voice "Facts and public surfaces"). Colleagues appear by role.

The rule dates from the brand questionnaire round (2026-08-06 and 2026-08-11) and from 2026-10-05, when Kevin made Prototemplate his public hub for GT work.

2.19

Where the procedures live

RulesSkill or document
1, 13gt-orchestration: resuming agents, briefs, fan-out, spend caps
1, 2Multi-session playbook: lanes, broadcast messages, relays between Claude and Codex
2, 4, 12gt-ship: PR shape, release hygiene, Prototemplate landing and deploys
3, 4gt-aesthetic: the reference, the dated verdicts, reading Kevin's asks
4gt-explorations: exploration rounds, archive and restore
5, 6, 16gt-lints and gt-components: lints, sweeps, fixes by class
6, 7, 11gt-verify: measurement, the viewport matrix, live checks
7, 15Quality bar: the bar for each kind of artifact and for done
8, 10gt-reporting: crops, galleries, status lines, decision lists
8gt-local-dev: review servers, letting Kevin try a build
9gt-brand (Third-party material) and gt-dither: real assets, provenance, credits, licences
11, 13gt-performance: frame cost, first interaction, Lighthouse
13gt-website: landing deploys
16, 17prototemplate: the skill contract and the hub
18gt-brand, gt-voice and BRAND.md: public surfaces

Kevin's wiki skill agent-iteration-loop holds the general loop of implementing, verifying, reviewing and shipping, and these rules apply inside it.

2.20

Sources

  • Kevin's messages to Claude Code and Codex from 2026-07-20 to 2026-10-05, about 5,800 in all. Quotes keep his spelling. Rules 1, 4, 5 and 8 recur most: about 90 messages ask to continue or resume, 137 to revert or restore an earlier state, 177 for a change "everywhere" or "for all", and 86 to be shown the result. The counts include copies in forked sessions.
  • Prototemplate: BRAND.md section 9; skills/gt-aesthetic sections 2 and 5; skills/gt-ship sections 3, 4 and 8; skills/gt-lints sections 1, 4 and 6; skills/gt-components (Standardization); skills/gt-brand sections 5 and 8; skills/gt-dither section 5; skills/gt-voice (Hard rules, Facts and public surfaces); skills/gt-website section 8; skills/gt-local-dev sections 1 and 5; skills/prototemplate sections 8 and 10; docs/handbook/quality-bar.md and docs/handbook/glossary.md.
  • Kevin's gt-cloud memory notes redesign-v0-verdict, pr-size-discipline, explorations-stay-local, plain-technical-english and sentence-order-rules, which hold earlier statements of rules 2, 3, 4 and 12 and the writing rules this page follows.
Section 314 sections

Quality bar

Kevin Liu reviews General Translation (GT) design and site work. Work is ready to show him or to ship when it clears the bars below for its kind of artifact. Each bar names the skill that owns it, and that skill holds the procedure for meeting the bar. When this page and a skill disagree, the skill wins, and the change that finds the difference corrects this page. A bar that no skill holds yet lives on this page, and its Owner column says so.

3.1

The overall bar

  • GT's own finished work is the reference. The brand deck governs product surfaces, and the Dossier governs the site (gt-aesthetic, section 1). The deck is built from deck/ and served at /deck, and the Dossier is served at /d/singularity-dossier. Kevin, 2026-08-06: "dossier is indeed our completed version and treat it as such". Before those existed, the July rounds measured against generaltranslation.com and resend.com (Kevin, 2026-07-30).
  • Clearing every row on this page is the minimum. The work must also hold up beside its reference at the same geometry, and the convergence loop below checks that.
  • When tweaks will not reach the bar, restart from the reference. A version Kevin rejected is never the base of the next attempt (gt-aesthetic, section 2). On 2026-08-11 he had the diagrams of the new site pages restarted outright.
  • Every page gets a second pass against its reference before it is shown (gt-aesthetic, verdict of 2026-08-17).
  • A bar is met on the rendered result. A gate is a typecheck or a lint. A structural check confirms that a page loads with the right hierarchy and dimensions, and reports also call it a proxy check. A measured check reads computed values or pixels on the render, and a visual check is a person or a fresh critic comparing a crop with its reference. An item that passed only gates and structural checks is reported as unverified (gt-verify, The definition of done). Every report says which kind of check passed (gt-orchestration, section 4; gt-reporting, section 1).
3.2

Reading the tables

Owner is the skill or document that holds the bar, with the section to read. Read is the day the owner was read for this page. Where the owner is this page, Read gives the day Kevin set the bar. Paths are relative to the Prototemplate root, and the glossary defines terms such as plate, rail and the Dossier.

3.3

Pages

The rows apply to product surfaces, the site, Prototemplate's own pages and docs pages.

BarOwnerRead
The page matches its reference measure for measure, and every value the reference lacks has a stated reason.gt-aesthetic, section 12026-10-05
Content comes from production or the prototype spec, and nothing is invented.gt-aesthetic, review checklist2026-10-05
A display head holds two lines at most at every width.gt-aesthetic, section 42026-10-05
A lead reads in two or three lines at 60 to 70 characters, and prose stays under 75. node skills/gt-aesthetic/scripts/measure-type.mjs <url> --strict passes, or each flag has a reason.gt-aesthetic, sections 1 and 42026-10-05
Nothing overflows its column or the viewport, and no text is clipped.gt-aesthetic, review checklist; gt-lints, check:pages2026-10-05
Nothing shifts after first paint, and client-mounted rows reserve their height.gt-aesthetic, review checklist; gt-lints, check:pages2026-10-05
Tap targets on a phone are 44px. check:pages fails a target under 40px and notes one of 40 to 43px.gt-aesthetic, section 3 (Rhythm); gt-lints, check:pages2026-10-05
Text a reader needs clears 4.5:1 in both themes.gt-aesthetic, section 3 (Hierarchy and contrast)2026-10-05
Every line is drawn once by one owner, rules run edge to edge, and junctions pass at 2x crops. In Prototemplate's chrome each line takes the hair, hair-soft or edge role and pnpm lint:lines:shell is clean. Any other page passes pnpm lint:lines <url> in both themes.gt-aesthetic, section 3; DESIGN.md, section 2; gt-lints, lint:lines2026-10-05
The surface carries one dithered material, at the landing hero's strength or under it.gt-aesthetic, section 3 (Material); gt-dither2026-10-05
The page uses one accent, GT blue, and semantic color sits only on icons.gt-aesthetic, section 32026-10-05
Each width shows one composition. Intermediate widths and zoomed windows fall to the mobile composition, with no hybrid of desktop logic and mobile layout.gt-verify, section 42026-10-05
The longest translation of every string fits its reserved lines, and the layout holds in CJK, RTL and Indic text as well as Latin.gt-verify, section 5; gt-aesthetic, section 42026-10-05
Both themes are shot at 1440 and 390 (plate pages also at 1527 by 814), and pnpm check:pages --pages <id> shows zero defects on every touched page.gt-aesthetic, section 5 (Local review); gt-lints, section 22026-10-05
A Prototemplate page with a book head follows the book page standard (nothing drawn above the title, the panel with Updated first, one band ruled on both edges), and its corners follow the radius law. pnpm lint:heads and pnpm lint:radius pass, live modes included.prototemplate, sections 3 and 5; DESIGN.md, sections 2 and 42026-10-06
The lints pass: pnpm lint:all in Prototemplate and pnpm lint in gt-cloud.gt-lints, review checklist2026-10-05

A landing or marketing page also clears the gt-landing-pages checklist (one rail, hatch spacers, heads, the shared Cta), checked at 390, 768, 1024, 1440 and 1920 in both themes.

3.4

Motion

BarOwnerRead
Dither loops draw at their 30 fps budget by design. Every other animation meets the 60 fps bar in the Performance table.gt-motion, section 2 (Durations)2026-10-05
A language morph lasts longer than 0.5 s, so the glyphs visibly regroup. It finishes inside the time its locale holds the screen, such as one stop of the hero's locale belt. Kevin, 2026-08-05: "the morphings are still way too fast theyre like <0.5 sec". Later that day he called a slower morph "a lil too long".This page2026-08-05
A morph dissolves through glyphs at every width and never collapses into a fade.gt-motion, section 52026-10-05
A scroll story runs on one scrubbed dial. Each beat owns a scroll range with dwell, and scrolling back plays the story backward.gt-motion, section 6 (Scroll stories); gt-landing-pages, Scroll stories2026-10-05
Product pages have no entrance animation.gt-motion, section 12026-10-05
Reduced motion renders a designed still, and the resting markup reads without JavaScript.gt-motion, section 12026-10-05
Scrolling is native (gt-ui/no-smooth-scroll).gt-motion, section 12026-10-05
Motion is verified with real pixels from an external browser, in both themes, under reduced motion, at 1440 and 390.gt-motion, Verifying motion2026-10-05
3.5

Graphics and diagrams

BarOwnerRead
Every crop comes from a registered capture of the real product. An illustrative mock in a set is described as a mock.gt-graphics, What a visual is2026-10-05
Text in a blog visual measures 26px or more after the fit, and pnpm graphics:audit passes.gt-graphics, Sizing for the blog column2026-10-05
Renders are supersampled (shot 7680 wide and halved to 3840). Every visual with lines or small type is read at 1:1 as well as on the contact sheet.gt-graphics, What a visual is and Procedure2026-10-05
A diagram shows a relationship the text alone does not, drawn from the real artifact as one connected composition.gt-diagrams, section 12026-10-05
Numbers printed in a diagram match what the eye sees. Kevin, 2026-08-05: "yeah it just doesn tlook like +63%".gt-aesthetic, review checklist2026-10-05
Junctions are read at 2x crops in both themes, because the line auditor skips SVG.gt-diagrams, section 92026-10-05
An OpenGraph card has a composition of its own, apart from the header cover, set in the house type with the house lines and centered on its canvas. It is rendered and looked at after every change, and its size and themes follow gt-graphics (Sizing for the blog column). Kevin, 2026-09-17: "the tweet/blog header cover is the angled one and the opengraph is the exploded components".This page2026-09-17
3.6

Copy

BarOwnerRead
The hard rules hold: no em dashes, metaphors, contrast pairs, fragment rhythm, exclamation marks, rhetorical questions, signposts, eyebrows, marketing vocabulary or emojis.gt-voice, Hard rules2026-10-05
Every line passes the copy test: it states a number or a mechanism, and a line a competitor could use unchanged is cut.gt-voice, Facts and public surfaces2026-10-05
The humanizer pass scores 35 of 50 or higher across directness, rhythm, trust, authenticity and density.gt-voice, The humanizer pass2026-10-05
Heads are plain nouns in sentence case with no trailing period, and Title Case is kept for buttons.gt-voice, Headings and casing2026-10-05
Every sentence has a subject and a verb, the subject is short, and no aside interrupts a clause.gt-voice, Sentence shape2026-10-05
Public writing stands alone for a developer who has never heard of Kevin or GT. It defines the product once, and each section opens with the point a stranger can reuse.gt-voice, Writing for strangers2026-10-05
Nothing sensitive appears on a public surface: funding, revenue, headcount, customer counts or unannounced launches.gt-voice, Facts and public surfaces2026-10-05
3.7

Pull requests

BarOwnerRead
On a gt-cloud PR, Greptile reads 5/5 on the head commit. Kevin, 2026-09-13, after a merge at 4/5: "bruh u merged without addressingthis".gt-ship, section 52026-10-05
Every bot thread has a reply naming the fixing commit and is then resolved.gt-ship, section 52026-10-05
The three required checks on gt-cloud main are present and green, and node skills/gt-ship/scripts/pr-bots.mjs <n> exits 0.gt-ship, section 52026-10-05
node skills/gt-ship/scripts/pr-size.mjs was read and every large group is justified in the body. The diff holds no recorded fixtures, harnesses, review galleries or planning Markdown.gt-ship, section 32026-10-05
The PR carries one concern under a conventional title, and a feat PR links a Linear issue.gt-ship, section 32026-10-05
The body is a two-sentence summary and What to look at, with before and after crops refreshed after every visible change. It is written in Kevin's own register (lowercase, first person), and the crops carry most of the explanation (Kevin, 2026-10-05).gt-ship, section 4; gt-voice, Two registers2026-10-05
Kevin merges the PR or says to merge it.gt-ship, section 52026-10-05
3.8

Convergence loops

A convergence loop iterates on quality until a bar holds: a page against its reference, a set of graphics against its best accepted item, a film cut against its brief. Kevin, 2026-07-30: "remember the bar is generaltranslation.com and resend.com. literally rereview and continuously score yourself until it look sright".

BarOwnerRead
The brief names the reference and the bar before the first round. For a set, the bar is the best item Kevin has accepted.gt-orchestration, section 42026-10-05
The work and the reference are captured at the same geometry (viewport, theme, camera, crop) and placed side by side.gt-orchestration, section 42026-10-05
A fresh critic that did not build the work scores each view blind against the reference. It is told to be harsh, and it names what the reference does that the work does not.gt-orchestration, section 42026-10-05
Each view has a numeric bar wherever it can be scored, stated in the brief. The bar ends the loop; a cap on rounds is a budget stop, and the report lists the gaps still open.gt-orchestration, section 42026-10-05
One strong view never averages away a weak one, and the builder never scores its own work.gt-orchestration, section 42026-10-05
Refiners fix only the gaps the critic named.gt-orchestration, section 42026-10-05
Kevin's note outranks a critic's pass. An item he called wrong stays open until he says otherwise.gt-orchestration, section 42026-10-05
When scores stop rising, the method changes: measure the reference and rebuild, or change the idea.gt-orchestration, section 4; gt-films, section 32026-10-05
3.9

Performance

BarOwnerRead
Performance work leaves the look unchanged. An audit whose fix would change the design (contrast, tap target size, a dropped effect, a lower resolution) goes to Kevin with its measured gain. Kevin, 2026-08-05: "fix the lighthouse without changing anything aesthetically".gt-performance, section 12026-10-05
Animation and interaction run at 60 fps at full resolution. Loops start complete, and the first interaction never stalls.gt-performance, section 12026-10-05
Frame time is measured before and after the change (node skills/gt-performance/scripts/frame-probe.mjs <url>) and reported in a table.gt-performance, section 22026-10-05
Every timing carries the machine's load average, and before and after runs go back to back under similar load, because parallel agents distort the numbers.gt-performance, section 22026-10-05
An engine with quality tiers picks its tier from measured frame cost.gt-performance, section 3; gt-motion, section 62026-10-05
Lighthouse is read from a production build in a clean profile, or from production after the merge, and the PR carries the real report.gt-performance, section 62026-10-05
A budget lives in the probe that measures it and fails like a lint, and a red budget blocks the change.gt-performance, section 82026-10-05
3.10

Films

BarOwnerRead
Kevin reads the scripts before the build, which waits for his answer. He picks a new narrator from auditions.gt-films, sections 3 and 72026-10-05
A critic watches each draft frame by frame (every 0.5 s, and every 0.25 s around each cut and major move) and reports every defect with its time and a fix.gt-films, section 92026-10-05
node skills/gt-films/scripts/measure-render.mjs passes on the render (-17 to -15 LUFS, true peak under -1 dBTP, 1920 by 1080 at 60 fps), and hyperframes check ends with 0 errors.gt-films, review checklist2026-10-05
A non-English take has a native listener's sign-off.gt-films, section 72026-10-05
3.11

Charts

Kevin set these bars for benchmark charts on 2026-07-30 and 2026-09-30. The wiki's dataviz skill holds the general method for form, color and marks.

BarOwnerRead
The win is obvious at a glance.This page2026-07-30
Compared series are stacked or overlaid so the margin reads exactly, and the bars in one set share one style.This page2026-07-30
The method is stated beside the chart: what was measured, how, and on what.This page2026-07-30
A metric that shows cost savings is prominent.This page2026-07-30
Benchmarks are run fresh for the chart that ships.This page2026-09-30
The chart leads with the most impressive true metric. Kevin, 2026-09-30: "why just tokens? show our speed diagram too thats more impressive".This page2026-09-30
Marks match their values, and every number agrees with each other place it appears.gt-aesthetic, review checklist2026-10-05
3.12

Repositories

Kevin set these bars for a repository's own documents between 2026-08-02 and 2026-09-30.

BarOwnerRead
The README holds the shipped product's instructions and stats in a concise form, with the OpenGraph image and a demo GIF at the top and screenshots of what it does. Kevin, 2026-09-30: "youre treating the readme as like a log of work instead of a concise summary".This page2026-09-30
The repository's description and topics are set.This page2026-08-04
A LICENSE file states the terms. Prototemplate's license reserves all rights to General Translation, Inc., and third-party fonts, icons and adapted skills keep their own licenses.prototemplate, section 10; LICENSE2026-10-05
AGENTS.md explains the repository's layout and philosophy, SKILL.md explains how to use the tool and everything it does, and both match the code.This page2026-08-02
Prose that has drifted from the code is corrected in the change that finds it.prototemplate, section 12026-10-05
3.13

Done

Work is ready to show when its artifact's table holds on localhost or in a file Kevin can open, and the report carries before and after crops of each changed region in both themes (gt-aesthetic, Showing the work). It is ready to ship when the pull request table holds as well. It is done when the rows below hold.

BarOwnerRead
A visual fix is measured on the render at the spot Kevin flagged (computed values, 2x or 4x crops, pixel probes), in every state of a moving element.gt-verify, section 12026-10-05
The real gesture and the real flow work in the running app, for every category of item the change covers. Any shortcut is named and then replaced by the real gesture.gt-verify, section 22026-10-05
The stress matrix, viewports, themes, browsers and edge counts that apply were walked.gt-verify, sections 3 to 52026-10-05
Items that were right before the change are still right.gt-verify, section 62026-10-05
Every member of the defect's class was found, fixed and checked.gt-verify, section 82026-10-05
Shipped work is live: every lane's commits are on main, production's commit contains them, the live page carries that deployment's stamp, and the OG card is read live. For Prototemplate, the dpl stamp on www equals the team deployment.gt-verify, section 7; gt-ship, section 82026-10-05
The report says how each item was verified and names what was not, with the reason.gt-verify, section 122026-10-05
3.14

Sources

  • Skills read on 2026-10-05: skills/gt-aesthetic/SKILL.md and references/verdicts.md, skills/gt-verify/SKILL.md, skills/gt-orchestration/SKILL.md, skills/gt-performance/SKILL.md, skills/gt-landing-pages/SKILL.md, skills/gt-lints/SKILL.md, skills/gt-motion/SKILL.md, skills/gt-graphics/SKILL.md, skills/gt-diagrams/SKILL.md, skills/gt-voice/SKILL.md, skills/gt-ship/SKILL.md, skills/gt-films/SKILL.md, skills/gt-dither/SKILL.md, skills/gt-reporting/SKILL.md, skills/prototemplate/SKILL.md.
  • Canon: DESIGN.md section 2, deck/DECK-GRAMMAR.md, docs/SHIP-LOOP.md section 2, scripts/pagecheck/README.md, LICENSE.
  • Kevin's rulings, checked against his messages to Claude Code and Codex: 2026-07-30 (the reference sites, side-by-side scoring, chart margins, method and cost metric), 2026-08-01 and 2026-08-02 (the OpenGraph card's type and lines), 2026-08-02 (AGENTS.md and SKILL.md), 2026-08-04 (two-line heads, repository topics), 2026-08-05 (morph length, numbers in diagrams, Lighthouse with no visual change), 2026-08-06 (the Dossier), 2026-08-11 (the diagram restart), 2026-08-17 (the second pass), 2026-09-13 (Greptile 5/5), 2026-09-17 (the OpenGraph card's own composition), 2026-09-30 (chart metric, README), 2026-10-05 (the page heads, PR bodies that let the crops explain).
Section 412 sections

Multi-session playbook

Kevin Liu runs many agent sessions on one machine at the same time for his General Translation (GT) work: named Claude Code sessions, Codex sessions, and forks of both. Codex is OpenAI's coding agent, and Kevin runs it beside Claude Code. Inside Claude Code, the ListAgents tool lists the other Claude sessions on the machine by name, and the SendMessage tool delivers a message to one of them. This page holds the practices that let every session add to the others' work and undo none of it.

The single rules live in skills, and this page points to them. gt-ship sections 1, 2 and 8 hold lanes, worktrees, staging and the shared Prototemplate checkout. gt-orchestration holds a session's own subagents, resumption (section 6) and handoffs at a hard stop (section 8). The prototemplate skill section 8 holds the lane map of the shared Prototemplate tree. The glossary defines lane, session, forked session, handoff and relay note. When a skill and this page disagree, the skill wins.

4.1

Lanes

One session owns one lane. ListAgents prints the live list of sessions, and the table lists the GT lanes as of 2026-10-05.

SessionOwnsWhere it works
PrototemplateThe site at prototemplate.com, its viewer shell, the deck build, the skills and the docsThe shared checkout ~/repos/Prototemplate, with the dev server at http://localhost:3005
VideosThe films, their kit and MOTION.mdPrototemplate motion/, which stays untracked. Its Prototemplate commits carry only film and poster files in public/media.
Glyph MapThe /world page on generaltranslation.comgt-cloud k/language-map, worktree ~/gt/gt-cloud-wt-langmap, port 3031
New Onboarding and DashboardThe dashboard sign-in and onboarding PRs, and in Prototemplate the mood slides in deck/, src/components/plate, src/app/craft and public/brand/moodIts own gt-cloud worktrees. It pushes Prototemplate main from its own worktree.
LottieThe blog's Lottie translation figuregt-cloud #5068, k/blog-lottie-translation, worktree ~/gt/gt-cloud-wt-lottie, port 3024
docs redesignThe docs site on generaltranslation.comIts own gt-cloud worktrees

Kevin's personal projects run in sessions and repositories of their own. They share the machine with the GT lanes (section 10) and nothing else.

  • Work that belongs to another lane goes to that session. Find it with ListAgents and send the request with SendMessage, with Kevin's words for the request and the paths involved. Address the session by its name, because the bracketed id after the name changes when the session restarts.
  • Codex sessions do not appear in ListAgents. Reach them through a relay note that Kevin pastes (section 7).
  • Two lanes edit deck/. The session about to change a shared folder messages the other first (section 8).
  • When Kevin narrows a session to one thing, the session drops everything else, including its own open items. While it waits, it starts no PR sweep and no work from another lane.

Kevin, 2026-10-03: "that videos one should be making them, and this one is just for prototemplate work".

  • A session that gives up work to another lane sends the work's real state: the files, the commits, what passed and what is open. On 2026-10-03 the Prototemplate session handed two films to Videos with a message that understated how far they had come, and Videos learned the rest from the files. The receiving session reads the files and the git history before it acts on a handover message.
4.2

Forked sessions

Kevin forks sessions often. Ten gt-cloud sessions active between August and October descend from one session started on 2026-07-30. Videos was forked from New Onboarding and Dashboard on 2026-10-01, Glyph Map from Videos on 2026-10-02, and the Prototemplate session from New Onboarding and Dashboard on 2026-10-03. A fork starts with its parent's whole message history, and every inherited message reads as if it were addressed to the fork.

  • A fork acts on the newest instruction addressed to it and on its own lane. Inherited messages are history. Their asks belong to the parent, which is usually still running and still owns them.
  • In a fork, "continue", "continue everything" and "keep going" cover the fork's own lane. Two forks got this wrong. The Glyph Map fork restarted its parent's film build before starting the map, and Kevin stopped it. The Prototemplate fork took "continue everything" as its parent's list and pushed review fixes to the parent's open PRs, one of them from the parent's scratch worktree. Kevin narrowed it twice that day, first to its own request and then to Prototemplate work alone, and the films it had started went to Videos.

Kevin, 2026-10-02: "wait another agent is workign on the motion and videos. just focus on the nnew page".

  • Before acting, a fork learns what the parent already did and who holds the parent's lanes now. It reads git status --short, git log --oneline -15 on its branch and on origin/main, git worktree list, the lane's notes (memory notes, HANDOFF.md, the round's spec) and ListAgents.
  • A fork takes its own branch, worktree and dev port before it changes any file. Kevin's rule for any conversation, 2026-10-02: "the work in this convo should be on its own worktree branched off from main".
  • In a Claude Code transcript (~/.claude/projects/<project>/<session>.jsonl), an inherited message keeps the parent's sessionId. One message of 2026-07-31 sits in eleven gt-cloud transcripts with a single originating sessionId. A count of Kevin's messages across transcripts dedupes on sessionId and timestamp.
4.3

One instruction to several sessions

Kevin sometimes sends one instruction to several sessions within seconds. On 2026-08-06 "commit and push everything to prototemplate, our branches, and 4213" reached four gt-cloud sessions within 25 seconds. Two of them went after the same three targets. One of the two had its Prototemplate build collide with a concurrent build. The other later saw a worktree directory vanish between two commands, because a parallel session was porting into it.

  • Each session does its own part: its own paths, its own branch, its own PR.
  • The session whose lane owns a shared step does it, once. Shared steps include a push of Prototemplate main, a sync of files into another repository, and a commit on a PR branch that two sessions use. The other sessions commit their own paths and check whether the shared step already happened (git fetch, then git log --oneline HEAD..origin/<branch> or gh pr view <n> --json headRefOid). They report the sha they found. When ownership is unclear, they ask the other session by SendMessage before pushing.
  • A diverged branch is never force-pushed to make an instruction come true. On 2026-08-06 the branch of PR #4213 carried eight commits of the landing port that a force push would have erased. The session reported the divergence and offered to port the missing work onto that branch as new commits, which Kevin then asked for.
  • When Kevin asks which session did something, answer from git and GitHub: the PR, the branch and commit, and the exact source text or file the work used. When Kevin asked "did we work on docs redesign in this convo?" on 2026-09-01, each session listed the PRs and files its conversation had touched, and the sessions that had not done the redesign said so.
  • "Try again" after an API error or a spend limit re-runs the step that failed, starting from a fresh read of the state. On 2026-08-06 a session cut off by the spend limit re-read every target after "Try again" and reported each one clean.
4.4

Shared checkouts

gt-ship sections 1, 2 and 8 and prototemplate section 8 hold the rules for a shared checkout. They give motion/ to Videos, require explicit paths and a pathspec commit, check the branch before every commit, keep the primary gt-cloud checkout on its old branch, and leave the Prototemplate dev server on 3005 and its .next alone.

  • Re-read a shared file immediately before editing it, because another session may have saved it a minute ago.
  • Keep scratch output in the session's scratchpad. Every session started in the main gt-cloud checkout reads its .claude folder, and on 2026-10-02 a preview written there had to be moved out.
4.5

Collisions

  • Report another session's in-flight changes and leave them where they are. A lint or type failure in files the session does not own goes into its report and does not hold back its own clean diff (docs/SHIP-LOOP.md section 0). Kevin, 2026-07-31: "dont worry about the uncommited work. only worry about localhost3006/ page".
  • Keep another session's uncommitted file out of your commit, even when your own tweak sits inside that file. Say in the report that the tweak will land with that session's commit.
  • Rerun a failure once before diagnosing it when another session may be mid-save. Such failures include a 500 from hot reload, a page the line auditor refuses, and a type error in a file the other session is editing. On 2026-08-05 tsc failed on a parallel edit that used Code2 before importing it. By the time the session looked, the other session had added the import, and the rerun passed.
  • When the build stays broken on another session's change, make the smallest change that restores the build and tell the owner. On 2026-07-31 one session pushed a full sync to Prototemplate main while a second session was mid-push. The second session rebuilt on top of that push and landed one fix: pnpm-workspace.yaml held a placeholder line that made pnpm install fail.
  • When another session's commit regresses your work, measure the regression and send the owner the exact fix. On 2026-09-29 a second session's commit on PR #5021 stopped a gallery state from playing when the console paged to it. The measurement and the fix went to that session, and it fixed the regression on the same PR.
  • Fix another session's regression in the smallest unit that regressed (a token, a rule, a layer), and keep the rest of its file. On 2026-08-05 a parallel session had grayed a belt in v0-pages.css at higher specificity, and the fix changed that one rule to blue. On 2026-09-29 Kevin asked for the earlier glyphs back, and the fix restored only the rain layer from the earlier head and kept the other session's gallery console.
  • Ask the owner before building a file another repository or session owns. gt-ship section 1 records the case of the CLI login callback page (2026-09-30).
  • When two sessions find they are doing the same work, the one further along messages the other with its PRs, and the other stops. On 2026-09-30 the session that had opened the docs drift PRs told a second session, started from a task chip for the same fix, to stand down.
  • When two sessions must change one feature, agree on a split by module and file. On 2026-09-29, in the sign-in gallery work, one session took the console requests in its own worktree, and the other kept the caption card's copy in a module of its own. When the first session shipped caption plates of its own, the second stopped its caption build before it wrote any files.
4.6

Claude and Codex together

Kevin, 2026-07-30: "let codex do its own thing, but branch off again".

  • Each tool works on its own branch, in its own worktree, on its own dev port. A Codex branch named codex/<topic> is renamed k/<topic> before it becomes a gt-cloud PR (2026-08-27).
  • Answer "are you on X's branch?" from git: git -C <worktree> branch --show-current and git -C <worktree> log --oneline -1 for each worktree involved. The answer on 2026-07-30 named both worktrees, both branches, both ports and the commit both branches started from.
  • Every landing starts from a fresh origin/main and adds to the other agent's work. Kevin ruled on 2026-09-23 for a main that both agents push. Each agent keeps absorbing the other's pushes by rebase, every push to main has run the core test suite, and the two agents share main without separate deploy windows ("WE MERGE").
  • Before publishing to a shared main: 1. Record the starting base commit when the worktree is created. 2. Fetch and compare git diff --stat <base> origin/main with your own change. For every file both agents touched, keep the incoming behaviour and re-apply yours on top. A merge without conflicts can still undo a feature through a whole-file replacement. 3. Read git diff origin/main HEAD in full, removals included, as the change about to be published. 4. Run the gates on the integrated commit. A green run on the branch before the merge says nothing about the merge. 5. Push without force. If the push is rejected, fetch, integrate and run the gates again.

In GT's repositories, gt-cloud main takes only squash merges through PRs with three required checks (gt-ship section 5), and Prototemplate's gates and deploy checks are in gt-ship section 8.

  • Before a deploy that follows a stretch of both agents pushing, audit the last week of main for work one agent undid. Kevin, 2026-09-22: "MAKE SURE ALL CHANGES WITHIN LAST WEEK ARE PROPERLY SYNCED". - In a fresh worktree from origin/main, list the week: git log origin/main --since='7 days ago' --format='%h %ad %s', git worktree list and git branch -r. - Check every branch that looks unmerged for patch equivalence with git cherry -v origin/main <branch> and git range-diff. A squash or a rebase changes commit ids and keeps the work. - Read each merge commit's conflict resolutions with git show --remerge-diff <sha>. - For merged PRs, measure how many of their added lines survive on main and trace every removal to a stated follow-up. On 2026-09-08 Kevin thought the routing PR #4359 had been reverted. The gt-cloud audit found it open and unmerged with every commit intact, and it merged the next day. - Leave the other agent's unfinished checkout as it is and list it in the report.
  • When the two agents build competing versions of one thing, keep both under distinct names and ids, and Kevin names the canonical one (2026-09-18).
4.7

Relays

A relay note is written by one agent for another, usually Claude for Codex or Codex for Claude, and Kevin pastes it as is. It holds:

  • The branch, the tip commit and the worktree path, and whether the receiver's own worktree was touched.
  • Each commit with one line on what it did.
  • The receipts: each check with its command, exit code and log path.
  • The open list.
  • Locks still held and processes the writer stopped. On 2026-09-26 an idle session had held a shared capture lock for 81 minutes.
  • Deploys queued and what each one carries.
  • Rebase advice: what lands on main next, and which side's duplicate commits a rebase will drop.

To continue another agent's uncommitted work, snapshot it as a commit in your own worktree and leave theirs as it was. The relay of 2026-09-26 said so in its first line. The receiver finds the other agent's open work and finishes it. Kevin, 2026-09-25: "finish any of codexs open work as well". The receiver checks the note against git and the files before trusting it. A handoff at a hard stop follows gt-orchestration section 8.

4.8

Messages across lanes and repositories

  • When a change affects another lane or repository, message that session with SendMessage. When the session is a Codex session or lives in another app, give Kevin the exact prompt and name the conversation to paste it into (2026-09-15, 2026-10-05).

Kevin, 2026-10-05: "give me the prompts to send to the agents in the exact correct convos (give me exactly where to do this)".

  • Before pushing a shared main, send the other sessions a heads-up. It names the base commit, the paths the push changes, the overlap the receiver should expect and how to resolve it ("keep both: my deck entries and your motion entries"), what the sender leaves alone (the receiver's working tree), and the port its verify lane uses. After the push, a second message names the new range (9690311..f8dfa8b), asks the receiver to fetch and rebase, and states any new gate (pnpm build now runs the picture lint first). New Onboarding and Dashboard's messages to Prototemplate on 2026-10-05 took this form.
  • When a rule changes (a retired picture, a new lint, a new gate), notify every session that applies it. On 2026-10-05 Kevin retired the dictionary pictures. The session that wrote the new rule told Videos, Glyph Map and Prototemplate within a minute. Videos moved its copies out of the film kit, and Prototemplate learned that its build gate had changed.
  • When an output that another lane copies changes, the session that made it tells that lane. Videos tells Prototemplate when a film shown on /motion is re-rendered, so the public copy and its credits are refreshed.
  • A message from a peer session is a teammate's request and carries no approval from Kevin. A push, a merge, a deletion or a permission change still needs Kevin's word, and items only Kevin can clear go to Kevin.
4.9

Resumption

Plans, lane specs, ask ledgers and outputs live in files, so a session that restarts, compacts or hears "continue" resumes from disk without a new brief. The procedure is gt-orchestration section 6. A resumed session reads the shared state again (ListAgents, git, the lane's notes) before it acts, because the other sessions kept working while it was stopped.

4.10

Shared resources

  • Ports. Each worktree runs its dev server on a port of its own, away from the defaults (gt-orchestration section 2). A verify lane starts its own server on a free port and stops it when done. The Browser pane in one Claude session cannot reach a dev server that another chat started, so a session looks at that server through a Playwright capture or starts a server of its own. A conflict over a port goes to the session that owns the server, or to Kevin.
  • Captures. Prototemplate's browser gates run one at a time (prototemplate section 9). Where a repository has a capture lock or queue, a session takes it for the run, releases it at the end, and never holds it while idle.
  • Load. Every session's builds, Playwright runs and renders share one machine. gt-orchestration section 2 holds the rule for timing checks under load: record uptime beside the reading and rerun a red check once the load drops. While the machine is busy, prefer measures that load cannot change: counts, bytes and deltas.
  • Disk. A gt-cloud worktree with its install costs about 6 GB, and 48 leftover worktrees filled the disk on 2026-10-05. Remove a scratch worktree as soon as its work is pushed. gt-ship section 1 gives the checks to run first and the command for removing many at once.
  • Cleanup. Cleanup of another session's files goes to that session. Message it, or give Kevin the prompt for its conversation, as he asked for the Codex and gt-cloud logs on 2026-10-05.
4.11

Checklist

  • [ ] ListAgents, git status, recent commits on the branch and on origin/main, and the lane's notes were read before acting.
  • [ ] In a fork, only the newest instruction for this lane was acted on, and the parent's open items stayed with the parent or the lane that owns them.
  • [ ] The session works on its own branch, worktree and port.
  • [ ] Explicit paths were staged and committed with a pathspec, and the branch was checked before the commit (gt-ship section 2).
  • [ ] A shared push was done once, by its owner, and the other sessions reported the sha they found.
  • [ ] Other sessions' in-flight files stayed out of the commit and were named in the report.
  • [ ] A heads-up went out before pushing a shared main, and the session fetched and rebased after another session's push.
  • [ ] A changed rule reached every session that applies it.
  • [ ] A relay note carries the branch, tip, worktree, commits, receipts with exit codes, open list, locks, queued deploys and rebase advice.
  • [ ] Servers this session started are stopped, locks are released, uptime sits beside timings, and scratch worktrees are removed.
4.12

Sources

  • Prototemplate: skills/gt-ship/SKILL.md sections 1, 2, 5 and 8; skills/prototemplate/SKILL.md sections 8 and 9; skills/gt-orchestration/SKILL.md sections 2, 6 and 8; docs/SHIP-LOOP.md section 0; docs/handbook/glossary.md (working terms).
  • Kevin's gt-cloud memory notes session-lanes-prototemplate, ship-loop-hard-gates, scratch-worktree-disk, lost-work-audit-2026-09, gt-motion-films, world-language-map, blog-lottie-figure, signin-field-transition and landing-hero-agent-button.
  • The Claude Code transcripts of the gt-cloud project under ~/.claude/projects/: the fork lineage read from each transcript's inherited sessionId and title records; the 2026-08-06 instruction and the four sessions' responses; the 2026-10-03 handover to Videos; the 2026-09-29 and 2026-09-30 messages between the sign-in sessions; the 2026-10-05 messages from New Onboarding and Dashboard and Videos; and the desktop app's notice that another chat's dev server is out of the Browser pane's reach (2026-09-29). The Codex sessions under ~/.codex/sessions/2026/09/ hold the shared-main audit of 2026-09-22 and the relay of 2026-09-26.
  • Kevin's messages to Claude Code and Codex from 2026-07-30 to 2026-10-05, for the rulings quoted above. Quotes keep his spelling.
  • Dates are in UTC, as the transcripts record them.
Section 510 sections

GT product and architecture map

This page is for agents and people who write about General Translation (GT), design for it or change its products. It states what GT sells and to whom, how the products fit together, the facts copy must get right, and where each part lives in the repositories. Each fact carries the date it was read or ruled. Everything on the page is safe to publish: it names no customer, states no business figures and leaves internal data-model details to gt-cloud's own documents.

Detail stays with the documents that own it:

  • BRAND.md and gt-brand hold the name, the idea, the positioning line and the marks.
  • gt-website holds the landing app map, docs routing, the blog and deploys.
  • gt-landing-pages holds the page grammar for the home, pricing, enterprise and careers pages.
  • gt-voice holds the writing rules, and gt-components holds the translation component rules.
  • gt-cloud's AGENTS.md (which CLAUDE.md links to) and its .agents/skills hold the monorepo file map and the engineering rules, such as audit-events and server-security.

$GT_CLOUD is a gt-cloud checkout at origin/main. gt-cloud facts below were read at e17fce499 on 2026-10-05.

5.1

Positioning

The home page hero says GT "builds full-stack localization for apps, docs, and websites" (read 2026-10-05). GT builds every layer of that stack itself:

  1. open-source i18n libraries and SDKs for every major framework;
  2. context-aware translation APIs;
  3. the platform for versioning, editing, review and delivery;
  4. Locadex, the agent that internationalizes a codebase and keeps it localized.

Kevin, 2026-07-30: "the whole point is that were a full stack localization, end to end".

  • The positioning is the Vercel model applied to localization. GT pairs open-source developer tools with the hosted infrastructure that runs them best (BRAND.md section 2). This is the one comparison GT copy makes (gt-voice, hard rule 2).
  • The thesis is "Every product in every language" (BRAND.md section 2). Copy quotes it as written.
  • Pricing is usage-based. Legacy translation management systems (TMS) charge per seat and cover part of the stack. Because GT owns the whole stack, it can own the whole customer experience (BRAND.md section 9).
  • The careers mission Kevin set on 2026-08-14 said that context and developer-first infrastructure now limit translation quality more than model quality does. The careers page read on 2026-10-05 carries a later mission text without that sentence, so copy states the claim only from a current source.
5.2

Audience and the sale

  • The audience has two ends, which Kevin calls a barbell (2026-07-30). Developers and small teams start self-serve at one end. Enterprises buy through sales at the other. A page carries enterprise presence and developer comfort together.
  • BRAND.md section 9 names the buyer: technical and product executives at growth-stage startups, whose engineering and growth teams use the product. The open source carries a community register and the platform an enterprise register (BRAND.md section 2).
  • GT runs a challenger sale (Kevin, 2026-07-30). Many buyers cannot yet tell localization, translation and internationalization (i18n) apart. Pages show what localization does: translated copy, changed code, converted currency, reformatted dates and numbers, and layout rearranged for a script. The terms themselves stay on the page for evaluators who check for them. The docs define them on Key concepts.
  • Heroes and demos show the product working. Kevin, 2026-08-11, on the enterprise page: "far less telling, more showing, so same content but less text and more better diagrams".
5.3

Products

ProductWhat it doesWhere it lives
The gt librariesgt-next, gt-react, gt-tanstack-start and gt-react-native (each 11.4.9 on npm, 2026-10-05), gt-vue and gt-node render translations and format locale-sensitive values in the app. gt-next also detects the locale and routes by it.generaltranslation/gt, packages/
The Python SDKsgt-flask and gt-fastapi on PyPI, built on the generaltranslation core package. BRAND.md's naming table writes the family as gt-python, which is the repository name; no package of that name exists (PyPI, 2026-10-05).generaltranslation/gt-python
The gt CLISets up a project, signs in, translates files and calls the API (gt 2.25.1 on npm, 2026-10-05). Section 7 has the commands.generaltranslation/gt, packages/cli
The platform and dashboardProjects, Context Groups, the translation editor, review and approval, version branching, annotations and audit logs at dash.generaltranslation.com. Review works over the web workspace, the API and the CLI.$GT_CLOUD/apps/dashboard, apps/api
The translation APIContext-aware translation of text, files and components, published as /openapi.yaml.$GT_CLOUD/apps/api
The translation CDNServes pre-generated translations from a global, low-latency CDN, and pushes over-the-air updates without a redeploy of the app.$GT_CLOUD/apps/edge (Cloudflare Workers)
Runtime translationTranslates user-generated content on demand with the project's context. In Next.js it is <Tx> and tx() from gt-next/server, built on GTRuntime in the core library.generaltranslation/gt, packages/core and packages/next
LocadexA hosted agent. It connects to GitHub and to content sources (Google Drive, Figma, a CMS), scans the repository, internationalizes the code, generates translations and opens pull requests. Its automations keep the app localized after the first pass.$GT_CLOUD/apps/locadex, packages/locadex-core
IntegrationsMintlify, Sanity (gt-sanity), Storyblok, Google Drive and rrweb (gt-rrweb), the GitHub Action, and the MCP server (@generaltranslation/mcp).generaltranslation/gt (Sanity, rrweb, MCP), $GT_CLOUD/packages/integrations (hosted connectors such as Google Drive and Storyblok), generaltranslation/translate (the Action)

The React libraries share one API. <T> wraps a block of static JSX, and <Var>, <Num>, <Currency> and <DateTime> mark its dynamic parts. gt() translates a string, msg() marks strings in a data array, and <Tx> and tx() translate content at runtime in server code. The usage rules, including const gt = useGT(); and await getGT() in async server code, are in gt-components and gt-cloud's AGENTS.md.

5.4

Context

Context reaches a translation through three layers: the Organization, then the Project, then the Component (Kevin's outline of 2026-07-30; the dashboard guide Defining context for translations, read 2026-10-05). Each layer is inherited by the one below it.

LayerWhat sets context there
OrganizationContext Groups live at the Organization level. A Context Group pairs a Glossary with Custom Prompts.
ProjectA project applies one or more Context Groups in priority order. The top group wins where two groups overlap, and newly generated terms are saved to it.
Component<T context="..."> sets context for one block. gt() and getGT() take a $context option. $context on <T> is a deprecated alias.
  • The Glossary holds terminology: product names, brand names, feature names, technical terms and phrases that stay untranslated. Its standing example is that Locadex is never translated in any locale.
  • Custom Prompts hold style: tone, audience, formality, conventions and formatting. A prompt applies to every locale or to one. Kevin's July outline called this half Directives, and the importer still accepts exports that use that label. The dashboard, the API and the pricing page call it Custom Prompts (2026-10-05), and copy uses that name.
  • Kevin's component example, from the 2026-07-30 outline: <T context="notification popup, not bread">Click the toast to dismiss</T>.
  • An edit to a Context Group applies to new translations. The Apply button on a project's Context page updates existing translations with chosen Glossary terms.
  • The Context Management API (org:context:read and org:context:write) and its MCP tools automate groups, terms and prompts.
5.5

Enterprise and plans

The pricing page has two plan cards (read 2026-10-05):

  • Starter is self-serve with usage-based pricing and a Get Started button.
  • Enterprise is marked Recommended and has a Contact Us button.

Both cards list unlimited projects, unlimited users and unlimited languages, and the comparison table follows the cards directly (Kevin, 2026-08-15). The page's diagram sits below the plans. The money format on pricing pages is gt-landing-pages' whole-dollar rule. Onboarding and billing copy about cards and credits follows the plan states the dashboard shows at the time of writing.

Kevin set the four enterprise pillars on 2026-08-15, and the enterprise page carries them (read 2026-10-05). His list named the third pillar Forward-deployed engineers, and the live page heads it Forward-Deployed Support, the name copy uses.

PillarCopy
Security and governanceSSO, SOC 2, ISO 27001, audit logs, and custom roles. The pricing table adds SSO over SAML and OIDC, SOC 2 Type II and RBAC with custom permissions.
Enterprise platformShare translation context, glossaries, and custom prompts across every project and content source in your company.
Forward-deployed supportDedicated FDE hours with localization engineers to set up your system and bring localization to production.
Custom workflowsReliable, scalable translation workflows across any file format or framework. Custom integrations, webhooks, and tailored automation.
  • The enterprise page's section order is governance and SSO, translation review, shared context across teams, forward-deployed support, then the contact form (Kevin, 2026-08-16). A change to the page's sections follows that order.
  • Features grouped under one heading share one purpose (Kevin, 2026-08-15).
  • The enterprise hero has one button. Kevin cut its second button, Talk to an Engineer, on 2026-08-15.
5.6

Copy that must be exact

TopicWhat copy saysSource
Layout per language"Dynamic layout for each language". GT rearranges components for a language, such as right-to-left order for Arabic. The components themselves stay unchanged.Kevin, 2026-08-06: "technically we dont alter components, but can rearrange them dynamically like for arabic"
Review surfaces"Review and approve with your team, over web, API, or CLI." Copy names all three surfaces, because enterprises judge vendors on agent readiness.Kevin, 2026-08-06: "from one surface implies that we're forcing you to use our dashboard"
Formatting"Numbers, currencies, dates, plurals, and more", with no "edge cases handled" lead.Kevin, 2026-08-06
Delivery"Served using a global, low-latency translation CDN." and "Push over-the-air updates without redeploying your app." Translations can also ship with the code, so the home page's delivery band reads "Served from local files or the edge" (read 2026-10-05). Copy that describes delivery in general names both paths.Kevin, 2026-08-15, for the enterprise page's delivery panel
Enterprise voice"Every company's localization needs are different. General Translation adapts to your existing stack, workflows, and review process." The customer uses the platform with its own team or alongside GT's forward-deployed engineers. A line that implies GT's team is better than the customer's is cut, and gt-voice holds the register.Kevin, 2026-08-15
Localized heroesEach locale's hero line is idiomatic and carries the exact meaning in that language and culture. A locale route such as /ja opens with its hero sentence and diagram in that locale.Kevin, 2026-08-08
GeographyContent about places is organized by language. It names no country or territory, draws no borders, takes its facts from CLDR, and treats disputed areas through one policy.Kevin, 2026-10-03: "avoid political sensitivity without making it look forced"
Infrastructure diagramsEdge nodes carry real cloud region names such as us-east-1, shortened where a label would clip.Kevin, 2026-08-06
NamesProduct tokens keep their exact form (gt, gt-next, gt login), Locadex is never translated, and the naming table is BRAND.md section 1.BRAND.md, gt-voice
Public factsCustomer names come only from BRAND.md section 9. No surface states funding, revenue, headcount or the timing of an unannounced launch.gt-brand section 8
5.7

CLI and agent entry points

The CLI facts below come from the start prompt served at /agent-prompt.md (read 2026-10-05) and from the CLI source on generaltranslation/gt origin/main. A coding agent ran the prompt end to end on a fresh Next.js app on 2026-09-25 with gt 2.22.3 and again on 2026-09-30 with gt 2.23.1. The published CLI was 2.25.1 on 2026-10-05.

  • gt login signs the CLI in with the person's GT account. It opens GT's sign-in page in the browser and shows a confirmation page when sign-in completes. gt login --no-browser prints a sign-in URL and a code to use on any device, and an SSH session takes that path by default. gt whoami reports the signed-in account.
  • Public writing explains how to sign in and use the product. It leaves out how the CLI obtains, stores or refreshes its tokens, which is the public authentication boundary in the AGENTS.md of generaltranslation/content.
  • gt translate --dry-run shows the scope, and gt translate translates it. With translations stored in the repository, the run writes public/_gt/<locale>.json, gt-lock.json and a _versionId in gt.config.json.
  • gt init and gt configure ask any unanswered question through an interactive prompt and wait with no timeout. An agent passes --no-interactive (or --json, which implies it) and a flag for every question. A missing answer then exits 1, lists the flags still needed and changes no file. Kevin asked on 2026-10-01 that agents always run the CLI this way.
  • The CLI has no --version flag. npm view gt version gives the published version, and the translate banner prints the installed one. gt auth is not a command in current releases.
  • A development key belongs in .env.development.local, which next dev loads and next build does not. A production next build refuses to run with a development key present.

The docs serve agents directly (gt-cloud #4499, merged 2026-09-10). gt-website's references/docs.md holds the routes behind them.

  • /llms.txt is the curated entry point, /llms-index.txt lists every page, and /openapi.yaml is the API specification. /llms-full.txt, scoped /docs/<scope>/llms.txt files, /AGENTS.md and /sitemap.md sit beside them.
  • Appending .mdx or .md to a docs page URL returns the page's raw Markdown twin.
  • Every docs page's Copy page menu carries the llms.txt entries (Kevin, 2026-09-11).
  • The hero's second button is Setup for Agents (gt-cloud #5049, merged 2026-10-01). It copies the start prompt, whose one source is docs/en-US/overview/for-coding-agents.mdx in the content repository. The same text is served raw at /agent-prompt.md. After any change to the prompt, the CLI or the quickstarts, the prompt is run end to end by a coding agent on a fresh app. Kevin, 2026-09-30: "Agent experience (AX) is a huge deal for us".

The start prompt sets these onboarding rules for an agent (read 2026-10-05):

  1. Inspect the repository before asking anything: framework, router, app directory, existing i18n library, GT configuration, source language and build scripts.
  2. In a monorepo, choose the app or content directory and run setup there. Setup never runs at the workspace root.
  3. Ask for missing decisions one at a time: the source language, the target languages, then the first page or workflow. When the project itself is unclear, ask one question ("What would you like to translate?") with concrete choices.
  4. Preserve existing locale choices and reuse an existing i18n setup. The source language is never assumed to be English.
  5. Sign in with gt login. The agent never asks for a pasted API key, a password or OAuth tokens, and it writes new keys to ignored files without printing them.
  6. Carry the work through setup, translation and verification, then hand off what changed, the project and locales, what was verified and what the person still has to do. Auto-merge and paid plan changes wait for the person's direction.
5.8

Repositories

RepositoryVisibilityWhat it holds
generaltranslation/gt-cloudprivateThe turbo and pnpm monorepo: the dashboard, landing, API, workers, AI proxy, edge, Locadex and admin apps, and the shared packages (packages/ui, db, node, settings and others).
generaltranslation/contentpublicDocs, blog posts and devlogs, mounted at apps/landing/content as a submodule. Every landing deploy checks out the tip of content main ($GT_CLOUD/scripts/deploy-landing.sh), and a merge to content main triggers a deploy.
generaltranslation/legalpublicThe legal pages, a pinned shallow submodule at apps/landing/legal.
generaltranslation/gtpublicThe CLI, the JavaScript libraries, the core library, the compiler, the MCP server and the Sanity and rrweb plugins.
generaltranslation/gt-pythonpublicThe Python SDKs.
generaltranslation/translatepublicThe GitHub Action.
Kevin-Liu-01/PrototemplatepublicThe design hub and public reference behind prototemplate.com: BRAND.md, DESIGN.md, the deck, the skills and this handbook.

File-level maps stay with their owners: gt-cloud's AGENTS.md and .agents/skills (gt-landing, gt-dashboard, gt-api, gt-admin), gt-website for the landing and gt-brand for the identity files.

5.9

Site behaviour

gt-website owns the site's routing. Its references/docs.md holds the unsupported-locale redirects, the docs near-miss ladder and suggestion page (gt-cloud #4359), the markdown twins and the step order in src/proxy.ts. The rules below are not in that reference. Each was read on gt-cloud's origin/main and checked on production on 2026-10-05.

  • Staging builds translate one locale. apps/landing/staging.gt.config.json lists es only, and gt.config.json keeps the production roster (es, fr, zh, ja, it, ru and en-GB beside en-US). Kevin, 2026-08-08: "only es for staging".
  • Missing localized content falls back to en-US. A legal page renders the en-US copy in place, an untranslated docs page serves the default language, and a blog slug absent in a locale redirects to the en-US post. Kevin, 2026-08-17: "fix pages that are breaking from like en-GB".
  • The docs suggestion page answers HTTP 200 with noindex, nofollow by design (gt-cloud #4359). A real 404 needs the not-found boundary, and under the force-static root layout that boundary never sees the requested slug. The blog checks frontmatter aliases and close matches before it renders its own suggestion page.
5.10

Sources

  • Prototemplate: BRAND.md sections 1, 2 and 9; gt-brand sections 1, 2 and 8; gt-website with references/docs.md and references/pages.md; gt-voice; gt-landing-pages; gt-components.
  • gt-cloud at origin/main e17fce499 (2026-10-05): AGENTS.md, .gitmodules, apps/landing/gt.config.json, apps/landing/staging.gt.config.json, apps/landing/src/app/[locale]/docs/[variant]/[...slug]/page.tsx, apps/landing/src/app/[locale]/blog/[slug]/page.tsx, apps/landing/src/lib/legal.ts, apps/landing/src/components/landing/sections/global/Global.tsx, apps/landing/src/components/pages/enterprise/services-landing/GovernedExplorer.tsx, scripts/deploy-landing.sh, .agents/skills/gt-landing/SKILL.md; pull requests #4359, #4499 and #5049.
  • generaltranslation/gt at origin/main a16ae03c6 (2026-10-05): packages/, packages/cli/src/cli/base.ts, packages/cli/src/auth/__tests__/oauth.test.ts, packages/cli/src/cli/__tests__/initOnboarding.test.ts, packages/core/src/runtime.ts, packages/next/src/server.ts, packages/next/src/index.types.ts.
  • generaltranslation/content at origin/main (2026-10-05): AGENTS.md, Public authentication boundary.
  • generaltranslation.com, read 2026-10-05: the home page, /en-US/pricing, /en-US/enterprise, /en-US/careers, /ja, /llms.txt, /llms-index.txt, /agent-prompt.md, /openapi.yaml and the docs guide Defining context for translations.
  • npm and PyPI package pages, and the public repository list of the generaltranslation GitHub organization, read 2026-10-05.
  • Kevin's rulings: the full stack, the barbell and the challenger sale, and the context layers (2026-07-30); layout, review surfaces, formatting and region names (2026-08-06); locale heroes and staging (2026-08-08); showing over telling (2026-08-11); the mission text (2026-08-14); the enterprise pillars and CDN copy (2026-08-15); the enterprise order and the pricing cards (2026-08-15 and 2026-08-16); en-GB routing (2026-08-17); the copy page menu (2026-09-11); the agent button and AX (2026-09-30); the interactive CLI (2026-10-01); geography by language (2026-10-03).
Section 69 sections

Glossary

This glossary defines the terms that appear in Kevin Liu's messages, in the General Translation (GT) skills and in the code of gt-cloud and Prototemplate. Each entry defines its term in one to three sentences and names the file, skill or document that owns it. The owner holds the full rule, so where the two disagree the owner is right and this page needs a fix. The vocabulary covers 2026-07-20 to 2026-10-05, and the retired terms in the last section point to decisions.md.

Paths without a prefix are in a Prototemplate checkout. A path marked gt-cloud: is in gt-cloud, gt: marks one in the open-source gt repository and content: one in the content repository.

6.1

Company and products

TermMeaningWhere it lives
General Translation (GT)General Translation, Inc. builds the full stack for localization: open-source i18n libraries, context-aware translation APIs, a platform for review and delivery, and the Locadex agent. GT is the short form and the mark.BRAND.md sections 1 and 2; gt-product-map.md section 1
gt (the libraries)GT publishes its open-source i18n libraries from one public monorepo. On npm the package named gt is the CLI, and generaltranslation is the core library the others build on.gt:packages/; BRAND.md section 1
gt-next and its siblingsThese framework packages render translations and format locale-sensitive values in an app: gt-next, gt-react, gt-tanstack-start, gt-react-native, gt-vue and gt-node, with gt-flask and gt-fastapi for Python. gt-cloud's own apps translate their UI with gt-next.gt:packages/next and its neighbours; the Python SDKs in generaltranslation/gt-python; gt-product-map.md section 3
<T>The <T> component marks a block of JSX for translation. Wrap the largest static block once, never nest it, pass dynamic parts through Var, Num, Currency, DateTime, Plural and Branch, and guide one block with its context prop.gt-components references/react.md; gt-cloud CLAUDE.md
gt()The gt() function translates a string. It covers the user-facing props that <T> does not reach, such as a placeholder, a title or an aria-label.gt-components references/react.md
msg()The msg() function marks the strings of a data array where the array is declared. The component that renders the array reads them through useMessages() or getMessages().gt-components references/react.md
useGTThe client hook returns the gt function itself, so the line is always const gt = useGT(); and never const { gt } = useGT().gt-cloud CLAUDE.md
getGTAsync server components and generateMetadata get the function with const gt = await getGT();, imported from gt-next/server.gt-cloud CLAUDE.md
The gt CLIThe CLI signs in with gt login through GT's sign-in page and a 127.0.0.1 loopback callback, and gt translate translates a project after a --dry-run. Because gt init and gt configure wait on interactive prompts with no timeout, an agent passes --no-interactive and a flag for every question.gt:packages/cli; gt-product-map.md section 7
LocadexLocadex is GT's hosted AI agent. It internationalizes a codebase, generates translations, opens pull requests and keeps the app localized afterwards. Its name is never translated, and drawings seat its real mark as an alpha mask (the gt-ui rule no-gif-mark refuses a gif).gt-cloud:apps/locadex, public/brand/locadex-mark.svg; gt-brand; gt-product-map.md section 3
Context GroupA Context Group is a reusable collection of translation context kept at the organization level: a Glossary and the style prompts. A project applies groups in priority order, and context then narrows from the organization to the project to the component (<T context="...">).gt-cloud:apps/dashboard, route org/[orgId]/context/[groupId]; gt-product-map.md section 4
GlossaryThe Glossary is the terminology half of a Context Group. It lists product and brand names, feature names, technical terms and phrases that stay untranslated, and its standing example is that Locadex is never translated.the group's glossary route; gt-product-map.md section 4
DirectivesDirectives was Kevin's July name for the style half of a Context Group: tone, audience, formality, conventions and formatting. The dashboard, the API and the pricing page call it Custom Prompts, copy uses that name, and the code keeps directives (DirectivesEditor).the group's custom-prompts route; gt-product-map.md section 4
The dashboardThe dashboard is GT's product app at dash.generaltranslation.com. It holds projects, Context Groups, the translation editor, review, billing, and the sign-in and onboarding pages on the plate frame, and its product surfaces are judged against the brand deck.gt-cloud:apps/dashboard; gt-cloud .agents/skills/gt-dashboard; gt-aesthetic section 1
The translation CDNThe translation CDN is an edge service on Cloudflare Workers that serves translations. Through it a team pushes translation updates over the air without redeploying its app.gt-cloud:apps/edge; gt-product-map.md section 3
Setup for AgentsSetup for Agents is the second button in the landing hero (gt-cloud #5049). It copies the start prompt that takes a coding agent from an empty project to a first translation, and every change to the prompt, the CLI or the quickstarts is proven by handing the prompt unchanged to a fresh agent on a fresh app.content:docs/en-US/overview/for-coding-agents.mdx, served at /agent-prompt.md; gt-website section 6
The report cardThe report card is a public page that grades how localized any site is on six checks: hreflang, language declaration, routing, metadata, content and charset. Prototemplate's copy is the /try page of the shipped site.generaltranslation.com/report-card (gt-cloud:apps/landing/src/app/[locale]/(home)/report-card, apps/landing/src/lib/report-card/); /d/production/try, src/components/try/, src/lib/try/
6.2

Repositories and places

TermMeaningWhere it lives
gt-cloudThe gt-cloud repository is GT's private product monorepo on turbo and pnpm. It holds the dashboard, the landing site with the docs and blog, the API, workers, the AI proxy, the edge CDN, Locadex, the admin app and the shared packages, and it squash-merges small PRs from k/<topic> branches once three required checks pass and the review bots are answered.github.com/generaltranslation/gt-cloud; gt-cloud AGENTS.md; gt-ship section 5
The gt repositoryThe public monorepo generaltranslation/gt holds the CLI, the JavaScript libraries, the core library, the compiler and the MCP server. CLI changes such as the login callback page land there.github.com/generaltranslation/gt; gt-product-map.md section 8
The content repoThe public generaltranslation/content repository holds the docs, blog posts and authors, and gt-cloud mounts it as the apps/landing/content submodule. Every landing deploy checks out the tip of content main, so merging a content PR publishes it, and when a post needs new components, images or redirects the gt-cloud side merges first.gt-website sections 4 and 5; gt-product-map.md section 8
PrototemplatePrototemplate is Kevin's public hub and wiki for GT work. Its Next.js site at www.prototemplate.com serves the brand book, the design canon, the deck, the design lab, the marks, the films, the graphics, the skills and this handbook. Its main holds the primary copy of the canon, all rights are reserved to General Translation, and its dev server runs on localhost:3005.github.com/Kevin-Liu-01/Prototemplate; prototemplate section 1
The deckThe deck is the GT brand deck: 93 slides built from deck/ into one self-contained viewer that /deck frames. It is the reference for every product surface, and the Prototemplate viewer shell was modeled on its viewer (2026-09-08).deck/, deck/DECK-GRAMMAR.md, pnpm build:deck; gt-deck
The DossierThe Dossier (singularity-dossier) is the completed direction of the GT site and the reference for every marketing page. Kevin, 2026-08-06: "dossier is indeed our completed version and treat it as such". On 2026-10-06 he said the brand has moved past it, so /brand names no reference application and BRAND.md section 8 waits for his decision (decisions.md)./d/singularity-dossier and its /enterprise; BRAND.md section 8; gt-aesthetic section 1
ToolchainToolchain is the direction that served as the single source of truth for the forks from July. It set one ruled column, bento rows, isometric line diagrams and the tc-* vocabulary that the gt-cloud landing engine still uses, and its enterprise and pricing pages are literal specs, copy included.src/app/d/toolchain/, /d/toolchain; ARCHITECTURE.md "The SSOT rule"
A directionA direction is one exploration of the GT site's design, served at /d/<slug> and registered in DIRECTIONS, where four entries are full sites (the Dossier, Orbit, Signal and production). In July and August Kevin named directions by their label numbers, and the labels were renumbered more than once (Toolchain was 10 then and is 01 now).src/lib/directions.ts; /directions/<slug>; retired ones at /archive/<slug>; gt-explorations section 3
A forkA fork is a direction built on Toolchain's sections and diagrams, imported directly and re-skinned through its own root class (.lensgate-root, .terminusboard-root). Fork work never edits Toolchain's files, and a forked session is a different thing, defined under Working terms.ARCHITECTURE.md "The SSOT rule"
The presenterThe presenter at /present is a full-screen tool built on 2026-07-30 to review the directions. It runs an intro, the case for the redesign, a craft gallery, a live viewer of each prototype and a scoreboard.src/app/present/
/d/productionThis route rebuilds the shipped generaltranslation.com page for page in Prototemplate, with the dashboard's sign-in, onboarding, consent, device and CLI pages and their draggable state console (?state=<id> opens a state). Review galleries that Kevin asks for live here, outside gt-cloud PRs.src/app/d/production/, src/components/plate/; gt-ship section 3
/dev/statesThe dashboard's /dev/states route is a development-only gallery of every sign-in and onboarding state along the real path, paged by a console in the corner and signed in through a dev-env session. Release PR #5063 removed it from main, and it lives on the branch k/dashboard-dev-gallery (2026-10-01), which is checked out in its own worktree and never carried into a PR.gt-cloud branch k/dashboard-dev-gallery; gt-local-dev section 4
dev-envThe dev-env script gives each gt-cloud worktree its own Postgres, Redis, S3, LocalStack and Temporal with a seeded signed-in session: pnpm dev-env up <id>, then seed and start with --no-root-env. Pass a short explicit id, because the default one overflows a varchar(40) column.gt-cloud:dev-infra/README.md; gt-local-dev section 4
The review serverThe review server is the running dev server Kevin reviews a branch on. The landing's pnpm dev serves localhost:3001 and Prototemplate serves localhost:3005, each extra worktree takes a port of its own, and the session keeps the server up and says which branch and commit it serves.gt-local-dev section 1; gt-website section 2; prototemplate section 7
motion/The motion/ folder in Kevin's Prototemplate checkout is untracked, and the Videos session builds the films there with HyperFrames from the brief motion/MOTION.md. Other sessions read it and never stage, edit or delete it, and the published copies live in public/media/ and on /motion.gt-films section 1
The scratchpadThe scratchpad is the temporary folder Claude Code gives each session for specs, context files, harnesses and recorded fixtures. Nothing in it reaches a PR, and its files can vanish at the desktop app's date change, so durable work goes into a repository.gt-ship section 3; gt-local-dev section 6
6.3

Design vocabulary

TermMeaningWhere it lives
RailA rail is the single hairline on each side of the page column, drawn once by the column wrapper (.tc-rail with border-inline: 1px solid var(--tc-hair)). Since 2026-09-28 a column has one rail on each side, and the single-rail lint holds it.DESIGN.md section 3; gt-landing-pages "Rail and bands"
BandA band is a horizontal section of a landing page. A band inside the column (.tc-sec) draws only its bottom rule, and a full-bleed band (.tc-band.tcb, .v0-dep) spans the viewport and draws its own rail pair once, at the column edges.gt-landing-pages "Rail and bands"
Hatch spacerA hatch spacer is a strip 28 to 40px tall with a hairline on each edge over a 45 degree hatch. It separates home bands (.v0-hatch) and rows inside a section (.tc-hatch), and it owns both of its edges, so the section before it drops its bottom rule.gt-landing-pages "Hatch spacers"; DESIGN.md section 2 "Sanctioned devices" gives the shell's version, the book page's band (.pt-book-band), which also draws its own rule on both edges (2026-10-06)
SeamA seam is the 1px line where two rows, cells or sections meet, formed by the row's hairline ground showing through a 1px gap. DESIGN.md section 10 also calls the slide-to-reveal handle the seam (RevealSeam, --seam-cut).DESIGN.md sections 2 and 10
The row owns every seamThis ownership rule for grids says that the row draws every structural line between its cells, cells draw no borders, and a framed cell shows the row's ground through a 1px padding reveal. Where a row meets a line that already exists, the cell sits flush and drops that side's reveal.DESIGN.md section 2 "Ownership"; gt-landing-pages "The row owns every seam"
BentoRow and BentoCellThese two grid primitives implement that rule. The row is a grid with gap-px over the --tc-hair ground (props cols, eqHeads and headH), and the cell has no border props (framed adds the reveal).gt-cloud:apps/landing/src/components/landing/shell/Bento.tsx, src/components/shell/Bento.tsx; gt-components
Registration crossA registration cross is a small 1px plus seated exactly where two real hairlines cross. Kevin calls them corner crosses and DESIGN.md calls them border crosses, each landing section seam paints one at both rail corners, and a cross floating in app UI is ornament (2026-09-25).DESIGN.md section 2 "Sanctioned devices"; gt-landing-pages "Registration crosses"; gt-aesthetic section 3
The doubled lineThe doubled line is GT's connector. One SVG path is stroked twice, a full ink stroke under a narrower stroke in the surface color, which leaves two parallel hairlines at a constant gap. It is the one sanctioned double line, also called the thread, and the GT mark draws every stroke in this grammar.DESIGN.md section 5; src/components/shared/diagrams/DoubledLine.tsx; gt-diagrams
The plateThe plate is the dashboard's auth frame for the sign-in, consent, device, CLI and onboarding pages, with the form column on the left up to --plate-edge and the dithered field on the right. Elsewhere a plate is the one second surface under diagrams (--pt-plate), a layer of an isometric stack, or one of the speed marks.gt-cloud:apps/dashboard/src/components/frame/PlateFrame.tsx, src/components/brand/FieldStack.tsx and src/app/brand-tokens.css there; the port in src/components/plate/
Hairline rolesThe three line weights each have one job. The hair weight (ink at 18% in light) draws large surfaces and the lines that divide a page, hair-soft (ink at 9%) draws list rows, and edge (ink at 62%) frames a picture or a capture, so a large surface drawn in the edge weight reads as a boxed image.DESIGN.md section 2 "Line law for chrome"; src/components/viewer/tokens.css
The book pageEvery Prototemplate page with a book head renders one structure: the page's plain name as the title with nothing drawn above it, a lead of one to three lines, the panel (Updated, then the page's facts), one rule, an optional note and contents, one hatch band, then sections opened by a Section n divider. A page differs from another only in its words and its facts.DESIGN.md section 4, The book page; BookHead in src/components/viewer/BookView.tsx; pnpm lint:heads
Rounded controls, square shellsPrototemplate's corner law: the shells that hold the interface (the frame, the sidebar, the toolbar bar, the sheet, rules and bands) are square, and everything a reader presses, types into or picks up is rounded: controls at 6px, a part inside one at 5px, chips at 4px, cards and popovers at 6px.DESIGN.md section 2, Corners; the radius tokens in src/components/viewer/tokens.css; pnpm lint:radius
InkInk is #070707, the darkest of the four absolute colors, used for content text on paper and as the ground of the dark theme. Raised ink (#101010) is the one dark artifact surface for code, config and diffs.DESIGN.md section 1; src/app/globals.css
Ink-2Ink-2 is the second text step, for secondary text and leads (--pt-ink-2, #3a3d44 in light). On a light surface, text a reader needs is set in ink-2 wherever titanium would fail contrast.gt-aesthetic section 3; src/components/viewer/tokens.css
TitaniumTitanium is #8a8f98, the third and last text step, for captions, counters and keys. It measures 3.25:1 on white, so the dashboard plate darkens it to #6e737c for its 13px captions.DESIGN.md section 1; gt-aesthetic section 3
PaperPaper is #ffffff, the light ground. Dark mode is a token remap in which paper collapses onto ink, so each theme has one surface.DESIGN.md section 1
GT blueGT blue is the one accent, #2f5ce0, lifted to #86a8ff on dark bands. It marks actions, hover, highlights and icons while text and underlines stay ink, and a drawing gives it to one element.DESIGN.md section 1; BRAND.md section 5; gt-aesthetic section 3
The mobile type ladderThe mobile type ladder is the set of --tcm-* tokens that set type and spacing under 720px, declared in the engine's last 720px block and read as var(--tcm-X, <px fallback>). The mobile cut in v0-pages.css outranks the engine on the sgdh-root pages, so a change to the ladder is made in both places.DESIGN.md section 12
The svh and dvh lawOn a mobile stage, whatever must reach the true screen bottom sizes from 100dvh, and every height that takes part in layout uses 100svh. A layout height in dvh grows the document each time the URL bar shows or hides.DESIGN.md section 13
Read linesThe read lines are the two scroll anchors of a scroll story. A beat locks in when its copy block's center crosses the read line at 55% of the viewport, and its copy lights as it rises through the highlight line at 80%.DESIGN.md section 14; src/app/d/_v0/sections/FullStack.tsx
The moving type lawThe moving type law governs a word that morphs between languages. The word is one shaped text node with lang and dir, its width is measured from a hidden probe and is the only layout property that animates, and the host drives one clock per page.DESIGN.md section 8; src/components/shared/EverySentence.tsx; gt-motion section 5
Box-airBox-air is the mobile standard for boxed cells: block padding of 36 and 38px (--tcm-box-pt, --tcm-box-pb), 28px (--tcm-box-gap) between a box's head and its artifact, and no copy within 20px of a hairline.DESIGN.md section 12 "The box-air standard"
6.4

Material and motion

TermMeaningWhere it lives
Bayer ditherBayer dither is ordered dither through a 4x4 or 8x8 Bayer threshold matrix, and it is the brand's only texture. A tone ramp prints as whole square cells in one ink, and alpha veils, smooth gradients and error diffusion are refused.DESIGN.md section 7; src/lib/dither.ts; gt-dither section 1
The studio fieldThe studio field is the GPU engine for the animated Bayer materials: createStudioField with ten BAYER_PRESETS sharing one WebGL context. Preset 02, bayer-8x8 (bayer8), is the default, the landing hero's field and the reference for material on product surfaces.src/lib/studio-field.ts, gt-cloud:apps/landing/src/lib/studio-field.ts; gt-dither sections 2 and 3
Glyph fieldThe glyph field is the canvas engine (createGlyphField) that rains glyphs from eight writing systems and condenses them into words, conserving matter between morphs. Its glyphs stay solid anti-aliased type, because dither on moving glyphs flickers (2026-08-06, 2026-09-28).src/lib/glyph-field.ts, gt-cloud:packages/ui/src/lib/glyph-field.ts; BRAND.md section 7; gt-dither section 3
Glyph rainGlyph Rain is a direction, and the landing component of the same name mounts the glyph field rising (GlyphRain.tsx, drift: 'rise'). Kevin uses the name for the effect wherever it appears, such as the careers page and the pricing close.src/app/d/glyph-rain/, gt-cloud:apps/landing/src/components/landing/shared/GlyphRain.tsx; gt-landing-pages
Ink fieldThe ink field is the closing band's material (createInkField). The glyph field's eight-script glyphs rise off the ink in the band's margins, stay clear of the content box measured from the live DOM, and answer the pointer.src/app/d/glyph-rain/sections/band/inkField.ts, gt-cloud:apps/landing/src/components/landing/shared/InkField.tsx; gt-components references/instruments.md
Event horizonEvent Horizon is the direction where component walls dive into a black-hole gate, and the name also covers its WebGL lensing engine. The landing's careers and 404 heroes stand on that field, and as page-scale material in the app it was judged too heavy and deleted (2026-09-25).src/app/d/event-horizon/, src/lib/horizon-field.ts, gt-cloud:apps/landing/src/lib/horizon-field.ts
The terminus boardTerminus Board is the direction with a split-flap headline over a flip-wave grid of languages, styled on an airport departures board. The landing's blog header is a split-flap board built from it, and its face settle is the one overshoot easing the landing allows.src/app/d/terminus-board/; gt-cloud:apps/landing/src/components/blog/BlogHeroBoard.tsx and flap.ts; gt-motion section 2
Gem smokeGem smoke is Paper Shaders' Gem Smoke material (Apache-2.0) as Glyphfield renders it, in blue, fire and ink palettes. It is the films' palette, it fills two deck section openers and the designed blog covers, and it can wrap a mark such as the bar monogram as a glass shape.motion/kit/gemsmoke.js; gt-films sections 5 and 6; gt-deck references/full-picture-slides.md
GlyphfieldGlyphfield is Kevin's open-source shader and animation studio at glyphfield.com/studio, where new GT material starts before it ships as engine code or an export. Agents drive it through window.glyphfield.studio, and its name refers to the studio while "glyph field" names the engine above.github.com/Kevin-Liu-01/Glyphfield; gt-dither section 4; gt-cloud .agents/skills/glyphfield
Artifact picturesArtifact pictures are photographs and scans of objects, artworks and places, screened through the house 8x8 dither at 1 CSS px cells. They appear on the dashboard's sign-in and onboarding field, the plate port, the deck's mood slides and the transition demo on /docs, and each one shows writing, language or the earth, carries no readable English prose and credits its source.docs/ARTIFACT-PICTURES.md; gt-dither section 5
The Blue Marble standardThe Blue Marble standard is the tone and screen standard every artifact picture is cut to, taken from the Blue Marble picture of the earth on the onboarding field. A scene lands on mean tone 0.361 and standard deviation 0.342, the cutter is pnpm mood-tone, and the picture lint pins the standard file by sha256.scripts/mood-tone/standard.json; docs/ARTIFACT-PICTURES.md, "The rules" items 3 and 4
Speed marksThe speed marks are the seven race-type GT marks Kevin chose on 2026-09-29 to show beside the current doubled-line mark: the bar monogram, its lockup, the plate, double cut, the livery stack, the dithered monogram and the ASCII monogram. They are generated from geometry and font outlines and never redrawn by hand.scripts/build-speed-marks.mjs (pnpm build:marks), public/marks/, /marks, deck slides 17 to 23; gt-brand references/marks.md
The bar monogramThe bar monogram is the speed mark that builds G and T from rectangles on a 120-unit cap, slanted forward 12 degrees, with one cut at mid cap height and three speed bars leading into the G. It holds at 16px and has lockup, dithered and ASCII versions.public/marks/bar-monogram.svg; gt-brand references/marks.md
6.5

Gates and tools

TermMeaningWhere it lives
The line auditorThe line auditor (scripts/lint-lines.mjs) reads computed CSS in Chrome and fails on doubled lines, two owners on one seam, self-stacks, invisible seams and chrome borders outside the three hairline roles. The shell audit pnpm lint:lines:shell walks the shell routes against the dev server on 3005, pnpm lint:lines <url> audits any page, and SVG strokes still need 2x crops checked by eye.DESIGN.md section 2; gt-lints section 2, references/line-auditor.md
The page checkThe page check (pnpm check:pages) loads every page at ten viewports in both themes. It reports overflow, clipping, console errors, tap targets under 40px, layout shift and failed interactions in .pagecheck/REPORT.md, and it runs on the touched pages each round and on the whole site before a release.scripts/pagecheck/ and its README; gt-lints section 2
The practices ratchetThe practices ratchet (pnpm lint:practices) counts nine code checks per file against a baseline, among them bare useEffect, any, !important, raw hex in TypeScript and the retired rail vocabulary. It fails when a file's count rises, so recorded debt is paid down in its own changes.scripts/lint-practices.mjs, scripts/lint-practices.baseline.json; gt-lints section 2
The gt-ui oxlint pluginThe gt-ui plugin holds gt-cloud's design and copy laws as oxlint rules, among them single-rail, inter-only, icon-tiers, no-em-dash, no-eyebrow, no-smooth-scroll, mono-is-not-voice and shared-cta. Prototemplate runs a whole-file copy through pnpm lint:code and recopies it whenever gt-cloud's version changes.gt-cloud:tooling/oxlint-plugins/gt-ui.ts, scripts/oxlint-plugins/gt-ui.ts; gt-lints references/gt-ui-rules.md
The picture lintThe picture lint (pnpm lint:pictures) holds every artifact picture to the Blue Marble standard by hash, size, tone and credit. It runs before next build, so a picture defect stops the build, and pnpm test:pictures breaks one thing per test to prove the lint catches it.scripts/lint-pictures.mjs; gt-lints section 2; gt-dither section 8
The type lintThe type lint (scripts/lint-type.mjs, started 2026-10-05) holds Prototemplate's type to the rsms InterVariable through the type tokens. It allows no other family, no weight above 500 and no positive tracking, and it keeps mono to code and to named entries such as numbers, paths and hex values.gt-lints "The type lint"; gt-brand references/type.md
lint:allPrototemplate's pnpm lint:all chains the static lints, the browser audits against the dev server on 3005 and the lint tests with &&. Run the browser gates one at a time, and read package.json for the exact chain.package.json; prototemplate section 9
The parity gate and ledgersThe parity gate is the release gate for any onboarding or auth redesign: the release keeps every tracking call and backend side effect that production had. The proof records production's ledger of side effects per scenario at the module boundaries, replays the scenarios on the release and diffs the two ledgers after every fix (2026-10-02).gt-ship section 7
pr-assets and screenshots/pr-NThe pr-assets branch is gt-cloud's orphan branch for PR screenshots, under screenshots/pr-<n>/ and linked with blob/pr-assets/...?raw=true. Older PRs used one orphan branch per PR named screenshots/pr-<n>, and the instant Vercel failure on those branches ("Root Directory apps/landing does not exist") needs no action.gt-ship section 4, references/pr-body.md; gt-website section 8
Greptile 5/5Greptile writes a confidence score into the PR body, and the target is 5/5 on the head commit with every Greptile thread answered and resolved; a PR does not merge at 4/5 (2026-09-13). It does not rerun on every push, so comment @greptile review again and wait about five minutes.gt-ship section 5, references/review-loop.md, scripts/pr-bots.mjs
BugbotBugbot is Cursor's review bot. It reruns on every push, bugbot run re-triggers it, and each finding is answered with the fixing commit or a reason before its thread is resolved.gt-ship section 5
The Cursor Approval AgentThe Cursor Approval Agent reviews each PR on open, labels it with a risk level and routes it (the "Pull Request Router" check). Its label needs no reply, and it is the only bot on the content repo.gt-ship references/review-loop.md
gh stackThe github/gh-stack extension links PRs into GitHub's native stack (gh stack link --base main <bottom> <next> <top>) and merges a stack up to one PR at once (gh stack merge). Kevin asked for the native feature on 2026-08-27 and again on 2026-10-05, and gh stack merge runs only when he says to merge.gt-ship section 6
Feature flagsFeature flags are the dashboard's release gates and kill switches, managed in the admin app. The check isFeatureEnabled(key, orgId?) reads an org override first, then the flag's global state, and returns false for an unknown key or a failed lookup. A dashboard feature that is not ready ships behind a flag or comes out (2026-09-03).gt-cloud:packages/node/src/database/featureFlags/isFeatureEnabled.ts, packages/db/prisma/schema/flags.prisma, apps/admin/src/components/featureFlags/
6.6

Working terms

TermMeaningWhere it lives
LaneA lane is one owner's share of the work, with its own files: one session per lane, and inside a workflow one agent per lane. Work that belongs to another lane goes to that lane's session by name, and a lane's prompt opens with Kevin's own words for it.multi-session-playbook.md section 1; gt-orchestration section 2; gt-ship section 1; prototemplate section 8
SessionA session is one Claude Code or Codex conversation. Kevin runs several named sessions at once (Videos, Prototemplate, New Onboarding and Dashboard, Glyph Map for /world), and each keeps to its lane.multi-session-playbook.md section 1; prototemplate section 8
Forked sessionA forked session starts from another session's conversation and carries the parent's history, with the parent's session id on those records, before it continues on its own. A fork acts on its own lane, and a message found in several transcripts at the same minute can be one message inherited by forks.~/.claude/projects/<project>/<session>.jsonl; multi-session-playbook.md section 2
WorktreeA worktree is a git worktree with one branch, so each lane edits its own tree. Work in gt-cloud starts with git worktree add -b k/<topic> <path> origin/main, each worktree runs its own dev server port, and a worktree with its installs costs about 6 GB, so it is removed as soon as its work is pushed.gt-ship section 1
ChipA chip is a background-task card that a session raises for an out-of-scope fix it noticed, and Kevin can spin it off into a new session. When he answers "Do this task here", the current session does the task as its own small PR with its own gates.gt-orchestration section 3
HandoffA handoff is the document written at a hard stop or a change of owner, and it carries the stopped state, every raw input Kevin supplied and the priority queue. The receiving agent starts with an independent review and a recommendation, and it re-checks live state before changing anything.gt-orchestration section 8
Relay noteA relay note goes from one agent to another, often between Claude and Codex, and Kevin pastes it as is. It names the branch, tip commit and worktree, the commits, the receipts, the open list, the locks and the queued deploys, and the receiver finishes the other agent's open work.multi-session-playbook.md section 7
The ask ledgerThe ask ledger is an itemized list of everything Kevin asked for in a run, including the sub-items of long messages and the add-ons sent mid-run, each with its status. It closes every report on multi-ask work, and a long run keeps it in a file so it survives compaction.gt-reporting section 3
The PR slateThe PR slate answers "give me my PR list" with every open PR across gt-cloud, gt and content in merge order, in nine groups from merge now to the items only Kevin can do. Each line carries the full link, a one-line purpose and its line counts, and the Slack version is lowercase plain text in a code fence.gt-reporting section 5, scripts/pr-slate.mjs
Explorations stay localExploration and redesign rounds stay uncommitted or on a branch until Kevin has reviewed them on localhost and says to land them, because Prototemplate main deploys the public site (2026-09-14).gt-aesthetic section 5; gt-ship section 8; gt-explorations
Kevin mergesAn agent merges a PR or runs gh stack merge only when Kevin says so in that session.gt-ship sections 5 and 6
The agent guideAGENTS.md at the root of Prototemplate is the entry point for an agent: the read order, the principles in brief, which skill to load for a task, the house rules, and how to import the hub into another project. CLAUDE.md imports it for Claude Code.AGENTS.md; /docs/agents
6.7

Kevin's shorthand

TermMeaningWhere it lives
"image 1""Image 1" names the first image attached to the message, and "image 2" the second, in attach order. Each numbered note maps to a region of its image, and the image is the spec.gt-reporting section 7; gt-aesthetic section 5 "Rules of the loop"
"equivalent" or "equal"Both measures take the larger value (2026-09-30).gt-aesthetic "Reading Kevin's asks", references/verdicts.md
"keep its aesthetic"The geometry and the material stay, and only the named thing changes.gt-aesthetic "Reading Kevin's asks"
"smaller" or "larger"The value moves to the next rung of the existing ladder, as when the 13px card facts went to the 12px rung (2026-09-28).gt-aesthetic "Reading Kevin's asks"
"fully"The work covers every section, capability and detail with real diagrams, visuals and code. A placeholder or a partial pass does not count.operating-principles.md section 15
"continue all" or "keep going"Resume every open lane and every unfinished item, the hard ones included, without pausing between waves. In a forked session the words cover the fork's own lane, and after a restart or a compaction the work resumes from the plans kept on disk.operating-principles.md section 1; gt-orchestration section 6; multi-session-playbook.md section 2
"no new spawns"Agents already running finish, their work is committed and pushed, and no new agent starts (2026-08-06).gt-orchestration section 1
"show me"Put the result where Kevin can see or hear it: before and after crops, a running localhost URL, or a small HTML gallery or listening page for a set.gt-reporting section 1; operating-principles.md section 8
"second pass"A second pass reviews a finished page against its reference before it is shown, and pages that skipped one are redone (2026-08-17).gt-aesthetic section 2
"try again"After an API error or a spend limit, re-run the step that failed, starting from a fresh read of the state.multi-session-playbook.md section 3
"commit and push"Commit and push at once to every target he names, staging explicit paths.gt-ship sections 2 and 8
6.8

Retired terms

These terms still appear in older messages, commits and skills. The ruling that retired each one, its date and its reason are recorded in decisions.md.

TermWhat it wasWhat replaced it
SwitzerSwitzer was a second typeface used beside Inter in the July rounds.Retired 2026-09-18: Inter is the only face, gt-cloud #4887 removed the files, and inter-only holds it (decisions.md).
LenisLenis was the smooth-scroll library behind the July scroll stories.Retired from the site 2026-07-31: scrolling is native and no-smooth-scroll holds it. Only the presenter still scrolls on Lenis, under a named exemption in .oxlintrc.json (decisions.md).
Double railsThe double rails were a second pair of lines 10px outside each rail, also called the outer pair or doubled rails.Retired 2026-09-28 in gt-cloud #5007: one rail per side, held by single-rail and the practices ratchet's rail checks (decisions.md).
DirectionDockDirectionDock was the control pill on the direction pages in July.Retired 2026-07-31 and deleted 2026-09-08. DirectionCorner (src/components/viewer/DirectionCorner.tsx) took its place and hides under ?chrome=0 (decisions.md).
apps/redesign on port 3006The July explorations app ran from apps/redesign in a gt-cloud worktree on the branch redesign/diagram-standard.Retired as the primary copy on 2026-09-08: Prototemplate main holds the canon and serves on 3005, and prose that names 3006 is stale (decisions.md).
The dictionary picturesThese artifact pictures showed pages of readable English: the dictionary, Johnson, OED and Oxford pictures.Retired 2026-10-05: artifact pictures carry no readable English prose, and the picture lint rejects the retired names (decisions.md).
6.9

Sources

  • Prototemplate: BRAND.md sections 1, 2, 5, 7 and 8; DESIGN.md sections 1 to 5, 7, 8 and 10 to 14; ARCHITECTURE.md; docs/ARTIFACT-PICTURES.md; package.json; .oxlintrc.json; src/lib/directions.ts, src/lib/surfaces.ts and src/components/viewer/tokens.css; scripts/lint-practices.mjs; motion/kit/gemsmoke.js (header); all read 2026-10-05.
  • Skills: prototemplate, gt-aesthetic, gt-ship, gt-lints, gt-dither, gt-landing-pages, gt-website, gt-components, gt-brand, gt-deck, gt-films, gt-motion, gt-diagrams, gt-orchestration, gt-reporting, gt-local-dev and gt-explorations. The handbook pages gt-product-map.md, operating-principles.md, multi-session-playbook.md and decisions.md hold the procedures behind the working terms and the rulings behind the retired ones.
  • gt-cloud at origin/main e17fce499 (2026-10-05): package.json (dev-env), apps/landing/package.json (dev), apps/dashboard (components/frame/PlateFrame.tsx, components/brand/, the context routes), packages/node/src/database/featureFlags/, packages/db/prisma/schema/flags.prisma, apps/admin/src/components/featureFlags/, apps/landing/src/lib/ (studio-field.ts, horizon-field.ts, report-card/) and apps/landing/src/components/blog/; the branch k/dashboard-dev-gallery at ebb900124.
  • The gt repository: packages/*/package.json for the package names.
  • Kevin's messages to Claude Code and Codex from 2026-07-20 to 2026-10-05 and the session transcripts behind them, for the shorthand and the working terms.
Section 77 sections

Decisions log

In his Claude Code and Codex sessions, Kevin Liu rules on how General Translation (GT) work is done, across process, product, design and the repositories. This log lists the rulings that set or replaced a standing practice from 2026-07-31 to 2026-10-06. Each row gives the date, the ruling, the practice it replaced, his words where the ruling needs a source, and the lint, gate or skill that holds it. Read it before you change a GT standard, and whenever an older note, transcript or skill gives conflicting guidance.

7.1

Using the log

  • The later ruling holds. Guidance with an earlier date in a memory note, a transcript or a skill gives way to a later row here, and the change that finds the conflict corrects the stale text. When a skill changed after a row and the two disagree, the skill holds and this log needs a fix.
  • Design verdicts are recorded in full in verdicts.md in gt-aesthetic, with Kevin's words and what was wrong. Their rows here are one line and link there.
  • The skills named in the last column hold the procedures. A row states the ruling and where it is enforced.
  • Each path names its repository: gt-cloud, Prototemplate, or content: for generaltranslation/content, which holds the docs and blog source.
  • A row quoting a transcript carries the day the transcript stamped on Kevin's message, which is UTC. A design verdict row carries its date in verdicts.md, and a row with no message behind it carries the date its skill or memory note gives. Those two use Kevin's local date in California, so they can sit one day before the UTC stamp of the same evening.
  • Agents do not change a standard on their own. Bring Kevin the current row with a recommendation. When he rules, add a dated row that names what it replaced, and update the lint, gate or skill that holds it in the same change.
7.2

July and August 2026

DateRulingReplacedKevin's wordsHeld by
2026-07-31Scrolling is native on every GT surface: no smooth scrolling, scroll hijacking or inertia library. A scroll story scrubs its timeline on the page's own scroll.Lenis smooth scrolling, which Kevin asked for on 2026-07-22, 07-28 and 07-30 for the scroll stories and the presenter"remove smooth scrolling from everything, i hate how it keeps going after i stop scrolling"no-smooth-scroll in gt-cloud (landing, packages/ui) and Prototemplate pnpm lint:code, with /present exempt in Prototemplate's .oxlintrc.json; gt-motion sections 1 and 6
2026-08-01Monospace is for numbers and code only. Headings, paragraphs, labels, pills and social cards are set in Inter.Mono labels, pills and OG text in the July explorations"mono should only be used for numbers."mono-is-not-voice; inter-only allows Geist Mono for code only; gt-brand section 4
2026-08-04Mock layouts and plan images are literal specs, and a display head holds two lines at most. Locadex appears as an isometric drawing that carries its mark, and a gif of it is refused.Sections that kept the copy and drifted from the Figma layouts; three-line heads; a Figma note proposing a gif of Locadexverdicts.md, 2026-08-04no-gif-mark; Prototemplate's skills/gt-aesthetic/scripts/measure-type.mjs flags a display head over two lines
2026-08-06The Dossier (/d/singularity-dossier) is the completed reference for the site. Product surfaces follow the brand deck since 2026-09-25, and for the brand the 2026-10-06 row below holds.The July bar of generaltranslation.com and resend.comverdicts.md, 2026-08-06gt-aesthetic section 1; BRAND.md section 8
2026-08-07Every crawler and agent may read the public site, and no rule blocks an AI crawler or a public page. Only the staging build disallows crawling.None; a new standing rule"make it so that all robots and agents can crawl us"gt-cloud's apps/landing/src/app/robots.ts; gt-website section 7 and its review checklist
2026-08-07A heading carries no trailing period. Body sentences keep theirs. The deck followed on 2026-09-08.Landing section headings that ended in a period"remove the periods from headers to standardize. our hero header has no periods"; on the deck: "i dont thinkn we need periods everywhere"no-heading-period (gt-cloud #5007, Prototemplate pnpm lint:code); gt-voice, Headings and casing
2026-08-08The staging build translates Spanish only. Production keeps the full locale roster.Staging translating Japanese and Spanish"only es for staging."gt-cloud's apps/landing/staging.gt.config.json (["es"]) beside gt.config.json, run by scripts/deploy-landing.sh --staging; gt-website sections 3 and 8
2026-08-11For the gt-cloud redesign stack (landing, sign-in and dashboard), the production landing page is canonical. That page is gt-cloud #4213, built from the Dossier. Prototemplate and the toolchain lend isolated mechanics, assets and example copy, and the toolchain enterprise and pricing prototypes are the spec for those two pages. Product surfaces moved to the brand deck on 2026-09-25.Copying the old toolchain page shell into new pages"The production GT landing page is canonical." (a handoff brief he sent to the redesign sessions)gt-aesthetic section 1; gt-landing-pages, The reference
2026-08-11GT surfaces avoid mono as the brand voice, smooth scrolling, robot or sparkle AI icons, flag soup, AI gradients and glass, eyebrows, and em dashes in rendered text.The July explorations' eyebrows, gradients, glass and mono labels"3 lines of text stacked to say the same thing" (on eyebrows). verdicts.md, 2026-08-11no-eyebrow, no-em-dash, mono-is-not-voice, no-smooth-scroll, no-raw-locale-flags, icon-tiers; AI icons, gradients and glass by review (gt-brand section 7)
2026-08-11No invented content. Copy, quotes, metrics, prices and product vignettes come from production, the benchmarks or GT's published pages.Placeholder testimonials and invented enterprise vignettesKevin, 2026-08-05: "like these arent real quotes". verdicts.md, 2026-08-11 (round two)gt-aesthetic review checklist; operating-principles.md rule 9
2026-08-12Once Kevin picks a variant, the alternatives leave the code and stay in git history.The variants program's switchers and dock, about 16,000 lines"get rid of the variation system"verdicts.md, 2026-08-12; gt-aesthetic section 2
2026-08-14Flags render only through the shared LocaleFlag SVGs, on every surface including the dashboard.Emoji flags"NO EMOJIS!!! USE OUR FLAGF BLIB RARY!!!"no-raw-locale-flags on gt-cloud's dashboard, landing and packages/ui; packages/ui/src/components/ui/LocaleFlag.tsx; gt-components
2026-08-15PR titles and bodies are lowercase, plain technical English, with no em dashes and no mention of Claude. Kevin repeated it on 2026-09-08.Generated PR prose"write up the prs with no reference to claude code and no emdashes in lower case"; 2026-09-08: "make the pr language in my standard technical english lower case"gt-voice, Code comments, commits and PR descriptions; gt-ship section 4 and references/pr-body.md
2026-08-17Every page gets a second pass against its reference before it is shown.Pages shipped on their first pass (contact, sign-in, legal)verdicts.md, 2026-08-17gt-aesthetic section 2; quality-bar.md
2026-08-17A docs or blog URL never dead-ends. A near miss redirects to its page, a folder goes to its index, and an unmatched path lists the closest pages.The plain 404"u should probably never hit a 404 on docs and blogs"resolveDocsPath in gt-cloud's apps/landing/src/lib/slug-suggest.ts, and apps/landing/src/lib/blog-near-miss.ts (gt-cloud #4359, merged 2026-09-09); gt-website references/docs.md
2026-08-26A docs page description opens with an action verb such as "Use" or "Install". Descriptions that open with "Learn how" or "Learn what" are rewritten.Get Started captions that began "Learn how""learn is a terrible verb to start with, we like Use and install"content:DOCS-SKILL.md (the rule for descriptions)
2026-08-27Stacked PRs use GitHub's native stack, linked with gh stack link. Kevin reaffirmed it on 2026-10-05.A Stacked on #N line in the body as the only link between PRs"use the ACTUAL github stack feature"; 2026-10-05: "i meant use the actual pr stack feature"gt-ship section 6 (github/gh-stack)
2026-08-27gt-cloud commits carry Kevin's General Translation work identity.Commits under his personal email, which gt-cloud's Vercel projects refuse to deploy"gt-cloud deployments on vercel wiwll not accept my home email authored commits"gt-cloud's repository user.email, which covers every worktree; gt-ship section 2
7.3

September 2026

DateRulingReplacedKevin's wordsHeld by
2026-09-02Integration docs go under Integrations. A top-level docs section is reserved for a framework, plus the CLI and the Platform, and Integrations is the default when in doubt.rrweb as a top-level docs section"default to putting in the integrations section when in doubt"content:DOCS-SKILL.md, "When something gets its own top-level section"; the top-level list is pinned in content CI by content:scripts/validate-docs-structure.ts (content #501)
2026-09-03An unfinished dashboard feature ships behind a feature flag or does not ship.Unfinished dashboard pages released without a gateA team decision Kevin relayed with the fix requestisFeatureEnabled(key, orgId?) in gt-cloud's packages/node/src/database/featureFlags/isFeatureEnabled.ts, with flags managed in the admin app; glossary.md
2026-09-08Review requests go through GitHub reviewer requests, which Linear routes to the reviewer in Slack. Kevin chooses the reviewers.Asking for reviews in a Slack channel"keep this in mind for all our prs nnow, i connected everything in linear properly"gt-ship section 5, Reviewers; gt-cloud's APPROVAL_POLICY.md
2026-09-08Writing is plain technical English: no em dashes, metaphors, contrast pairs, fragment rhythm or signposts.Agent prose with metaphors and parallel constructions"do it in stragiht standard technical english without any weird metaphoors"gt-voice; no-em-dash; the humanizer skill in Kevin's wiki
2026-09-09The rebrand works from first principles. Only the company's legal name and the gt-* library names customers install are fixed.None; the brief for the brand review"just a few things that cant change (the legal name of the company, general translation, annd the nname of libraries our customers use"No gate; the fixed names are defined in BRAND.md section 1 and gt-brand section 1
2026-09-10Pricing shows whole-dollar amounts of $1 or more without cents. Cent prices and amounts under a dollar keep two decimals.Two decimals on every price"turn $2.00 and $1.00 and anything like this to $2 and $1"gt-cloud's packages/ui/src/components/pricing/dollar-format.ts and apps/landing/__tests__/usage-dollar-format.test.ts (gt-cloud #4785)
2026-09-10The docs sidebar on a 404 page is the stock flat tree.A client-side pathname override that kept the section tree and flashed the flat tree before hydration"i cann see it flash. should we just have what it is before if its what fuma nama does?"gt-cloud #4773 (the revert); gt-website section 4
2026-09-11When Kevin wants a gt-cloud PR merged on one approval, its commits carry no Claude co-author trailer.Trailered commits, which the repository rules send to a second human approvalDecided on gt-cloud #4795gt-ship section 2, The Claude trailer
2026-09-14Exploration rounds stay on a branch or uncommitted until Kevin reviews them on localhost and says to land them. The directions in a round differ in silhouette, material and action.A ten-direction round pushed to Prototemplate main before he saw itverdicts.md, 2026-09-14prototemplate section 9; gt-ship section 8; gt-explorations
2026-09-15Git pushes trigger no landing preview deploys. Main and staging deploy, and a preview is deployed by hand from the CLI.A preview deploy on every push to a PR branch"this is running up a lot of costs"gt-cloud's apps/landing/vercel.json (git.deploymentEnabled), gt-cloud #4828; gt-website section 8
2026-09-15PostHog loading and analytics initialization stay as they are in any PR that is not about analytics.A PR that deferred PostHog initialization in packages/ui/src/components/analytics/PostHogProvider.tsx"dont touch posthog. evaluate your chnages for stuff that is high risk like posthog"gt-website section 4; for onboarding, the parity gate in gt-ship section 7
2026-09-18Inter is the only typeface. gt-brand section 4 names the few exceptions, such as the Prototemplate nameplate and the presenter.Switzer as the display face beside Inter (the deck dropped it on 2026-09-08)verdicts.md, 2026-09-18inter-only; gt-cloud #4887 deleted the Switzer files; gt-brand section 4
2026-09-24Icons come in two tiers: Heroicons solid for marks that carry meaning, Lucide outline for controls. Brand marks stay as drawn.Lucide outline glyphs everywhereKevin, 2026-09-28: "look for ANYWHERE ELSE icons nneed to be synced"icon-tiers (the rule in gt-cloud #4909, the lint in #5007); gt-components references/icons.md
2026-09-24The identity stays in the neutral, scalable territory: a grid, one type system, one accent blue, and parts that hold at 16px and in a terminal.A more opinionated creative territory proposed in the brand review"need to be scalable in future. not incredibly opinionated. feel like switzerland"BRAND.md; gt-brand sections 2 and 3; no gate
2026-09-25Prototemplate reserves all rights to General Translation, Inc. The repository is public to read, and third-party fonts, icons and adapted skills keep their own licenses.The MIT license"make prototemplate not mit licensed anymore."LICENSE; README, License
2026-09-25A coding agent runs the Setup for Agents prompt end to end on a fresh app before it ships, and again after any change to the prompt, the CLI or the quickstarts.Shipping a generated prompt untested"TRY IT OUT SEE IF IT WORKS AND YOU CAN GET TO CREATING A TRANSLATION". He asked again on 2026-09-30 and 2026-10-01.gt-website section 6 and references/pages.md
2026-09-25PR screenshots go into the body from the first push and are refreshed after every visible change.Screenshots added at the end of review"add the screenshots of this to the pr the whole time"gt-ship section 4
2026-09-28Each column has one rail on each side, drawn once by the .tc-rail wrapper.Doubled outer rails 10px outside each column"make sure theres nno rules that leead to two side rails"single-rail (gt-cloud #5007, Prototemplate pnpm lint:code); retired-rail-vocabulary in Prototemplate's scripts/lint-practices.mjs; DESIGN.md section 3
2026-09-28The theme control draws the circle glyphs ◐ and ◑.Sun and moon iconsverdicts.md, 2026-09-28The shared ThemeToggle in gt-cloud's packages/ui/src/components/frame/ThemeToggle.tsx; no-theme-icons on open gt-cloud #4977, which has not reached main
2026-09-28PR screenshots are tight before and after crops of the changed elements, with the same clip on main and on the branch.Full-page screenshots in two-column tables"make this pr page much much easier to read and show the images"gt-ship section 4 and references/pr-body.md
2026-09-29No offer, credit or capability appears in the product before the backend delivers it.A sign-up credit offer in the redesigned onboarding that billing did not yet grant"we only show it if we actually do it"The parity gate admits only stricter checks and recovery paths as additions (gt-ship section 7); review
2026-09-30The hero's second button is Setup for Agents, which copies the tested agent prompt.A Docs button"change docs into setup for agents with a copy icon and make that into its own pr"HeroSecondButton.tsx and CopyPromptButton.tsx in gt-cloud's apps/landing/src/components/landing/sections/agent/; the prompt's one source in content:docs/en-US/overview/for-coding-agents.mdx, served at /agent-prompt.md (gt-cloud #5049); gt-website section 6
7.4

October 2026

DateRulingReplacedKevin's wordsHeld by
2026-10-01GT's identity work takes dithered artifact pictures in black, white and blue as a reference. Kevin sent them to the brand agency with the race-type speed marks he chose on 2026-09-29, and he called the marks an experiment. The doubled-line monogram stays the current mark.None; it builds on the 2026-09-24 territory"artifacts, dithered, we like this aeshteitc of black white blue"; on the marks: "nothing but funnu experiementation"gt-dither (the pictures); scripts/build-speed-marks.mjs and /marks in Prototemplate; gt-brand section 5
2026-10-01A release PR carries no development code. Galleries, stand-ins, test-only hooks, dev routes, recorded fixtures and harnesses stay on their own branch or in the scratchpad.A release branch that carried the dev states gallery and a 24k-line parity suite"please cleanup / remove all dev / temporary 'testing' code"gt-ship section 3, Verification instruments stay out, and skills/gt-ship/scripts/pr-size.mjs
2026-10-02An onboarding or auth redesign keeps every tracking call and backend side effect that production has. Parity is proven by recording production, replaying the release and diffing the two ledgers.Judging parity from a reviewer's list of intended changes"we need the new onboarding to keep all the tracking and backend stuff that the old onboarding did"gt-ship section 7, The parity gate
2026-10-02A public repository with a third-party licensing problem stays public, and the third-party material is removed or replaced. Kevin ruled this in one of his own repositories, and it applies to Prototemplate.Making a repository private to settle third-party terms"never privatize the repo. simply remove third party models."Review; each picture's source and license are confirmed when it is added (gt-dither sections 5 and 7); LICENSE lists Prototemplate's third-party material
2026-10-02A PR is closed only when its change is already on main. The closing comment names the merged PR that carries the change, and the branch stays. Every other PR stays open for Kevin to decide.Closing stale and superseded PRs in bulk"only delete prs that are already in the codebase"gt-reporting section 5 (close candidates in the PR slate); the closing comment is the check
2026-10-03Each session owns one lane, and work for another lane goes to that session by name.Sessions doing each other's work, such as a site session making films"that videos one should be making them, and this one is just for prototemplate work"gt-ship section 1; prototemplate section 8; multi-session-playbook.md
2026-10-03/world is organized by language. It names and outlines no country or territory, and its facts come from CLDR.The first brief, a map of countries drawn in their languages"avoid political sensitivity without making it look forced"gt-website section 6 (branch k/language-map, unmerged on 2026-10-05)
2026-10-05Prototemplate is the hub and wiki of how GT work is done, with a curated skill set in skills/<slug>/ that holds only the skills in real use.A generated dump of 261 wiki skills on /skills"this prototemplate is tupposed to be my hub for general trnalsation work"; on /skills: "we only need to show and store the ones weve actually been using"prototemplate section 10; /skills renders only the set
2026-10-05Every element resolves through the type tokens to one face, the self-hosted rsms InterVariable 4.1.Faces set differently from element to element, and Google's build of Inter"esepcially encorce the CORRECT RASMUS INTER". verdicts.md, 2026-10-05inter-only in gt-cloud; pnpm lint:type in Prototemplate (scripts/lint-type.mjs, from the 2026-10-05 type round); gt-brand section 4
2026-10-05Artifact pictures carry no readable English prose.The dictionary, Johnson, OED and Oxford picturesverdicts.md, 2026-10-05pnpm lint:pictures and docs/ARTIFACT-PICTURES.md in Prototemplate; check:artifact-pictures on open gt-cloud #5133; gt-dither
2026-10-05A book head's title is the page's plain name (Brand, Documentation, Handbook), and the head's right side is a panel: the last update, then the page's own facts, each with an icon.Titles that were phrases ("The brand", "Prototemplate docs") beside a plain meta table"dont make it "the brand" "prototemplate docs" it should be Brand and Documentation and make the right side of those headers better, show last update, use icons"src/lib/page-names.ts; pnpm lint:heads (S1, S5, H5) and pnpm lint:updated; prototemplate section 3
2026-10-05Rounded controls, square shells: buttons, fields and segmented controls round at 6px, chips and key caps at 4px, cards and popovers at 6px, and only the UI shells are square.Square boxes everywhere outside a short list of exceptions"i want to enforce and keep this amount of border rounding instead of forcing Boxes. boxes only for ui shells"pnpm lint:radius (scripts/lint-radius.mjs); DESIGN.md section 2, Corners; gt-aesthetic section 3
2026-10-06Every page with a book head renders one structure: nothing is drawn between the sheet's top border and the title, one hatch band carries a rule on both edges, and the mast, the panel and the section dividers are the same on every page.Heads that differed from page to page, a guide line through the title, and a band without its top rule"see how the brand is touching the up line and the spacer is missing a border above it? standardize our presentation more"pnpm lint:heads and pnpm lint:heads:live; DESIGN.md section 4, The book page; verdicts.md, 2026-10-06
2026-10-06The brand's head shows a reading time like the other pages and names no reference application. The brand has moved past the Dossier, and BRAND.md section 8 ("The completed reference") waits for Kevin's decision.The Dossier as the brand's completed reference (the 2026-08-06 row)"why is the dossier the reference for Brand? its evolved so much more since then", then "just give it a reading time like the other pages."/brand's panel; verdicts.md, 2026-10-06; no gate
7.5

Superseded July practices

Notes, commits and transcripts from July 2026 still describe these practices, and no row above names them. The Replaced column of the tables above covers the other July practices: Lenis, headings with periods, Switzer and the July bar.

July practiceReplaced byDateHeld by
Entrance animation, such as a fade-in on the landing heroKevin, 2026-08-06: "dont have a fade in animation in hero". Product pages have no entrance animation since 2026-09-28. The landing's sections keep one quiet reveal as they scroll into view, and other motion shows a real state change.2026-08-06; product pages 2026-09-28gt-motion section 1 and section 6, The landing's quiet reveal
Liquid glass and glassmorphism. Kevin, 2026-07-30: "MAKE THIS HAVE A BACKGROUND WINDOW DISTORTION GLASSMORPHISM"The avoid list refuses the AI gradient and glass look.2026-08-11Review (gt-brand section 7)
DirectionDock, the control dock on every direction page. Kevin, 2026-07-30: "remove this thing on each page. this is a /present specific feature"One pill took over the presenter's controls and DirectionDock was retired (Prototemplate 502dc0a). It returned the same night as a top-left back button on the standalone direction pages, hidden under ?chrome=0 (08b33c6). On 2026-09-08 DirectionCorner (src/components/viewer/DirectionCorner.tsx) replaced it on the viewer shell, and DirectionDock was deleted (c064945).2026-07-31; 2026-09-08gt-components, Prototemplate's viewer shell; prototemplate section 1
gt-cloud's apps/redesign on port 3006 as the place where canon was editedPrototemplate main is the primary repository, and canon is edited there first. apps/redesign is a downstream copy, and Prototemplate's dev server runs on 3005.2026-09-08ARCHITECTURE.md, The mirror; prototemplate section 1
7.6

Recorded elsewhere

  • Version pins, ports, open PR states and other temporary technical states describe the code on a date and change without a ruling. They live in gt-website section 8 and the Sources lines of the skills. The landing's Next.js pin is one of them.
  • The full wording of each design verdict, with what was wrong and what Kevin approved, is in verdicts.md. The table in gt-aesthetic section 2 summarizes it.
  • The Sources lines of gt-voice, gt-website, gt-ship and gt-lints list the directives each skill was written from. This log puts every ruling in one dated list with the practice it replaced.
7.7

Sources

  • Kevin's messages to Claude Code and Codex from 2026-07-20 to 2026-10-05, about 5,800 in all, and his rulings on the page heads, the corners and the brand's reference on 2026-10-05 and 2026-10-06, and the session transcripts behind them for context. Quotes keep his spelling. Three quotes come from messages the corpus cut short or queued with an image, and were read in the transcripts: the 2026-08-11 eyebrow line, the 2026-09-25 screenshot line and the 2026-09-30 hero line.
  • Prototemplate, read 2026-10-05: skills/gt-aesthetic/references/verdicts.md and SKILL.md sections 1 and 2; skills/gt-ship sections 1 to 8, references/pr-body.md and scripts/pr-size.mjs; skills/gt-lints and references/gt-ui-rules.md; skills/gt-website sections 3 to 8 and references/docs.md and references/pages.md; skills/gt-voice, Headings and casing; skills/gt-brand sections 1 to 5 and 7; skills/gt-components; skills/gt-motion sections 1 and 6; skills/gt-dither sections 5 and 7; skills/gt-landing-pages; skills/gt-reporting section 5; skills/prototemplate sections 1 and 8 to 10; BRAND.md; DESIGN.md section 3; ARCHITECTURE.md, The mirror; LICENSE; README.md; docs/ARTIFACT-PICTURES.md; package.json; .oxlintrc.json; scripts/lint-practices.mjs; scripts/lint-type.mjs in the working tree; commits 502dc0a and 08b33c6 (2026-07-31 Pacific), 229d413 and c064945 (2026-09-08).
  • gt-cloud at origin/main e17fce499 (2026-10-05): .oxlintrc.json and tooling/oxlint-plugins/gt-ui.ts, apps/landing/src/app/robots.ts, apps/landing/vercel.json, apps/landing/gt.config.json, apps/landing/staging.gt.config.json, scripts/deploy-landing.sh, packages/node/src/database/featureFlags/isFeatureEnabled.ts, apps/admin/src/components/featureFlags/ and packages/ui/src/components/pricing/dollar-format.ts; merged PRs #4213, #4359, #4773, #4785, #4795, #4828, #4887, #4909, #5007 and #5049; open PRs #4977 and #5133.
  • generaltranslation/content at main, read 2026-10-05: DOCS-SKILL.md ("When something gets its own top-level section" and the rule for descriptions); PR #501.
  • Kevin's wiki: the humanizer skill.
  • Claude Code memory notes for gt-cloud, which are private to Kevin's machine: redesign-v0-verdict, brand-questionnaire-directives, variants-program-state, lighthouse-round-conventions, gt-commit-identity, lost-work-audit-2026-09, agent-readable-docs, pricing-money-format, explorations-stay-local, landing-inter-only, landing-icon-rule, agent-prompt-test, pr-screenshots-and-gallery, landing-hero-agent-button, speed-marks-set, onboarding-parity-rule, pr-stacks-2026-10, artifact-picture-standard, world-language-map and prototemplate-hub-skills.