Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions scripts/verify-public-release.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1168,9 +1168,10 @@ async function verifyPublicRoutes(baseUrl, options = {}) {
assertIncludes(
home.text,
[
"Judgment before components.",
"Guide interface design with your AI agent.",
"JudgmentKit gives your AI agent interaction guidance, implementation checks, and repair instructions.",
"The judgment layer for AI-generated UI",
"Stop AI from building the wrong interface.",
"A design system tells an agent how interface elements should look and behave. JudgmentKit tells it which interface the user’s work requires, what should stay hidden, and what must be repaired.",
"<p><strong>Use JudgmentKit’s design system—or bring your own.</strong></p>",
"Keep the interface in the language of the work.",
'class="homepage-scene"',
'class="family-problem-row"',
Expand Down
7 changes: 4 additions & 3 deletions site/build-site.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5906,9 +5906,10 @@ export function renderHomepage({ homepageFilmEnabled = HOMEPAGE_FILM_ENABLED } =
<img class="homepage-scene" src="${HOMEPAGE_HERO_ART_PATH}" width="1983" height="793" alt="" aria-hidden="true" loading="eager" fetchpriority="high" decoding="async">
<div class="site-shell homepage-hero-shell">
<div class="homepage-hero-copy">
<p class="eyebrow">Judgment before components.</p>
<h1 id="homepage-title">Guide interface design with your AI agent.</h1>
<p class="lede">JudgmentKit gives your AI agent interaction guidance, implementation checks, and repair instructions.</p>
<p class="eyebrow">The judgment layer for AI-generated UI</p>
<h1 id="homepage-title">Stop AI from building the wrong interface.</h1>
<p class="lede">A design system tells an agent how interface elements should look and behave. JudgmentKit tells it which interface the user’s work requires, what should stay hidden, and what must be repaired.</p>
<p><strong>Use JudgmentKit’s design system—or bring your own.</strong></p>
Comment thread
mikeylong marked this conversation as resolved.
<div class="hero-actions" aria-label="Primary next steps">
<a class="hero-action hero-action-primary" data-hero-action="primary" href="/value/">See a screen repaired</a>
<a class="hero-action hero-action-secondary" data-hero-action="secondary" href="/examples/">Explore examples</a>
Expand Down
13 changes: 9 additions & 4 deletions specs/site-homepage-copy.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@

The homepage describes JudgmentKit’s interface guidance and contract checks. The [website family copy contract](website-family-copy.md) governs public copy and metadata alongside [the layout contract](website-family-layout.md). The shared composition reference is https://www.surfaces.systems/, reviewed on October 16, 2026 at 1280 × 720 and 390 × 844. Main content must stay at or below 220 words; there is no minimum.

Mike requested the masthead wording below be restored from `site/build-site.mjs` at `231a50acc3aa39a1d72df009f24cbca8bbc2cd93`, lines 5902–5905. The restored masthead is an intentional masthead-only exception to the newer copy guidance. The current lens artwork, family layout, page and social titles, metadata, footer and remaining copy are preserved.

| Homepage text | First-party source | Claim scope |
| --- | --- | --- |
| Judgment before components. | README.md:16–24 | Activity and interaction choices precede component choices. |
| Guide interface design with your AI agent. | docs/product-claims-and-evidence.md:17–19; VISION.md:31 | Guidance and checks, with the caller’s agent retaining execution. Also used in the footer. |
| JudgmentKit gives your AI agent interaction guidance, implementation checks, and repair instructions. | docs/product-claims-and-evidence.md:17–19; src/index.mjs:23229–23257 | Describes returned guidance and review results. Also used in homepage metadata. |
| The judgment layer for AI-generated UI | Prior masthead at `231a50acc3aa39a1d72df009f24cbca8bbc2cd93:site/build-site.mjs:5902`; owner-requested restoration | Restored positioning copy. |
| Stop AI from building the wrong interface. | Prior masthead at `231a50acc3aa39a1d72df009f24cbca8bbc2cd93:site/build-site.mjs:5903`; owner-requested restoration | Restored headline; no new outcome measurements are asserted. |
| A design system tells an agent how interface elements should look and behave. JudgmentKit tells it which interface the user’s work requires, what should stay hidden, and what must be repaired. | Prior masthead at `231a50acc3aa39a1d72df009f24cbca8bbc2cd93:site/build-site.mjs:5904`; owner-requested restoration | Restored lead describing the intended interaction and disclosure role. |
| Use JudgmentKit’s design system—or bring your own. | Prior masthead at `231a50acc3aa39a1d72df009f24cbca8bbc2cd93:site/build-site.mjs:5905`; owner-requested restoration | Restored emphasized support line, rendered as `<p><strong>…</strong></p>`. |
| Guide interface design with your AI agent. | docs/product-claims-and-evidence.md:17–19; VISION.md:31 | Preserved footer copy; guidance and checks, with the caller’s agent retaining execution. |
| JudgmentKit gives your AI agent interaction guidance, implementation checks, and repair instructions. | docs/product-claims-and-evidence.md:17–19; src/index.mjs:23229–23257 | Preserved homepage metadata describing returned guidance and review results. |
| See a screen repaired; Explore examples | /value/; /examples/ | Selected curated repair artifacts and illustrative examples, not live generation. |
| Risks to check; Keep the interface in the language of the work. | docs/agent-usage-contract.md:42; README.md:11–13 | A review instruction, not a claim that every table, form or button is wrong. |
| Internal record labels; The user has to translate database terms into their own work. | docs/agent-usage-contract.md:42; tests/ui-generation-handoff.test.mjs:4525–4541 | Names the mismatch when source vocabulary obscures the intended activity. |
Expand All @@ -26,4 +31,4 @@ The Value page labels selected curated refund artifacts and declared contract ch

Docs uses “First use” without a measured time estimate. Its Quickstart states that hosted requests leave the machine and points to the existing [authorization and privacy guidance](../packages/agent-skill/judgmentkit-hosted-mcp/SKILL.md#authorization-and-privacy) for sanitized, local or self-hosted inputs. The remaining instructions distinguish contract acceptance from observed user task completion. Artifact Inspector remains proposed and `review_required` where trusted interactive attestation is unavailable.

The hero retains one eyebrow, one heading, one supporting sentence and exactly two actions. The lower page retains one three-item problem row and one five-step workflow. Historical reports, captured examples, reference specimens, artwork and CSS remain unchanged. The adversarial audit and corrections are recorded in the task’s `copy-adversarial/judgmentkit-audit.md`.
The hero retains one eyebrow, one heading, one lead, one emphasized support line and exactly two actions. The lower page retains one three-item problem row and one five-step workflow. Historical reports, captured examples, reference specimens, artwork and CSS remain unchanged. The adversarial audit and corrections are recorded in the task’s `copy-adversarial/judgmentkit-audit.md`.
2 changes: 1 addition & 1 deletion tests/site-local-server.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -714,7 +714,7 @@ try {
);
assert.match(main, /^\s*<section class="hero homepage-hero"[^>]*>/);
assert.match(main, /aria-labelledby="homepage-title"/);
assert.match(main, /<h1 id="homepage-title">Guide interface design with your AI agent\.<\/h1>/);
assert.match(main, /<h1 id="homepage-title">Stop AI from building the wrong interface\.<\/h1>/);
assert.equal((main.match(/<section\b/g) ?? []).length, 3);
const problem = main.match(/<ol class="family-problem-row">([\s\S]*?)<\/ol>/)?.[1] ?? "";
const workflow = main.match(/<ol class="family-workflow-row">([\s\S]*?)<\/ol>/)?.[1] ?? "";
Expand Down
11 changes: 6 additions & 5 deletions tests/site.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -733,13 +733,14 @@ assert.ok(homepage.includes("[data-section-rail-menu]"));
assert.ok(homepage.includes('class="site-shell homepage-section-shell"'));
assert.ok(homepage.includes("[data-surfaces-primary-menu-button]"));
assert.equal(homepage.includes("[data-surfaces-system-menu-button]"), false);
assert.ok(homepageHeroCopy.includes("Judgment before components."));
assert.ok(homepageHeroCopy.includes("Guide interface design with your AI agent."));
assert.ok(homepageHeroCopy.includes("JudgmentKit gives your AI agent interaction guidance, implementation checks, and repair instructions."));
assert.ok(homepage.includes('name="description" content="JudgmentKit gives your AI agent interaction guidance, implementation checks, and repair instructions."'), "metadata must carry the same bounded promise");
assert.ok(homepageHeroCopy.includes("The judgment layer for AI-generated UI"));
assert.ok(homepageHeroCopy.includes("Stop AI from building the wrong interface."));
assert.ok(homepageHeroCopy.includes("A design system tells an agent how interface elements should look and behave. JudgmentKit tells it which interface the user’s work requires, what should stay hidden, and what must be repaired."));
assert.ok(homepageHeroCopy.includes("<p><strong>Use JudgmentKit’s design system—or bring your own.</strong></p>"));
assert.ok(homepage.includes('name="description" content="JudgmentKit gives your AI agent interaction guidance, implementation checks, and repair instructions."'), "preserve the existing metadata during the requested masthead-only restoration");
assert.ok(homepage.includes('<p class="site-footer-description">Guide interface design with your AI agent.</p>'));
assert.doesNotMatch(homepageMain, /choose the right interface|before the work ships|one short loop|Where AI goes wrong/);
assert.equal((homepageHeroCopy.match(/<p\b/g) ?? []).length, 2, "one eyebrow and one lead sentence");
assert.equal((homepageHeroCopy.match(/<p\b/g) ?? []).length, 3, "one eyebrow, one lead and the restored emphasized support line");
assert.equal((homepageMain.match(/<h1\b/g) ?? []).length, 1);
assert.ok(homepage.includes('href="/value/"'));
assert.ok(homepage.includes('href="/examples/"'));
Expand Down
Loading