Skip to content

Lead with what Potluck Docs is, on the surfaces that get indexed - #24

Merged
puneet-ekline merged 2 commits into
mainfrom
claude/potluck-docs-branding-mi80v5
Sep 21, 2026
Merged

puneet-ekline merged 2 commits into
mainfrom
claude/potluck-docs-branding-mi80v5

Conversation

@puneet-ekline

@puneet-ekline puneet-ekline commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Copy and metadata alignment for search and answer engines. No behavior, dependency or runtime configuration change.

The problem

"Potluck Docs" carries no meaning on its own. Nothing in the string says docs, Astro, or template. Starlight is equally opaque as a name, but it has tens of thousands of stars doing that work; this repository was renamed today and has none. So every crawled surface has to state the category outright, or the name binds to nothing.

Three surfaces did not.

The root README.md is what GitHub renders on the repository page. It opened # Potluck Docs — monorepo followed by "The home of Potluck Docs, EkLine's recommended Astro + Starlight documentation template". The H1 spent its strongest slot on "monorepo", and the sentence hedged the category behind "The home of" and "recommended". It now states what the thing is, then says this repository holds it — which the next heading, "Are you here to build a docs site?", already explains in more detail.

The docs homepage description becomes the meta description and og:description for potluck.ekline.io. It named "theming" and "an optional logged-in tier". Theming is table stakes any Starlight site has, and "logged-in tier" is not a phrase anyone searches.

The homepage <title> was Potluck Docs | Potluck Docs.

The sentence

Potluck Docs is an open-source Astro + Starlight documentation template —
interactive OpenAPI references, private docs behind your SSO, llms.txt built in.

154 characters, so a search result shows it whole rather than truncating around 155. Two things drove the shape:

  • Answer engines extract "X is a Y that Z." That form is what lets a model recommend this when someone asks for an Astro docs template with an API reference. A subjectless fragment — "Open-source Astro Starlight documentation template with…" — gives it nothing to attach the capabilities to.
  • The three named features are the ones Starlight does not give you for free. Anyone can run npm create astro -- --template starlight for nothing, so "it's a Starlight template" is not by itself a reason to pick this. Interactive OpenAPI references, server-enforced private and per-org docs, and llms.txt plus markdown twins are. Every claim is checked against packages/template/README.md.

The same sentence is going on the GitHub repository description, so the repository page, the docs site's meta tags and its social card all agree. Answer engines cross-check surfaces; disagreement costs confidence.

The title fix

Starlight composes every title as ${page title} ${delimiter} ${site title} with no special case for the two being equal — utils/head.ts line 36 — and the site title is already "Potluck Docs". The page is now named for the category:

<title>Astro + Starlight documentation template | Potluck Docs</title>

55 characters, so nothing truncates, and it is an exact match for the query someone shopping for this actually types. Naming the stack is deliberate rather than modest: a new repository with no authority cannot rank for "documentation template", but it can rank for "astro starlight documentation template", where the searcher has already chosen the stack and is looking for precisely this.

Two things had to follow, because both read the page title:

  • hero.title is now explicit. schemas/hero.ts documents it as defaulting to the top-level title, and Hero.astro destructures title = data.title for the <h1>. Without this the visible heading would have become the SEO string. It still reads "Potluck Docs" — the rendered page is unchanged.
  • og:title is restored via a frontmatter head entry. It is the page title with no site title appended (head.ts line 57), so the change above would have taken the product name off every social card. Starlight's mergeHead drops its own default when a page supplies a meta tag matching on property, which is what makes this an override rather than a duplicate tag.

Behavior was confirmed by reading the installed Starlight 0.40.0 source rather than from memory. CLAUDE.md requires consulting the Starlight docs before any change here; starlight.astro.build is blocked by this environment's egress proxy, so I read the package actually in use, which is the stronger evidence for a version-specific question.

What is deliberately untouched

packages/template/README.md. It ships verbatim into a customer's repository. Copy selling Potluck Docs to a search engine would be addressed to the wrong reader there, and CLAUDE.md is explicit that shipped prose is written for the site's owner. Its opening already suits someone who has just extracted the template, with the full feature list immediately below.

Verified

From the build:

<title>Astro + Starlight documentation template | Potluck Docs</title>
<meta property="og:title" content="Potluck Docs">
<meta name="description" content="Potluck Docs is an open-source Astro + Starlight documentation template — …">
<h1 id="_top" data-page-title>Potluck Docs</h1>

packages/template 196 tests, apps/docs 35 tests, 0 failures. npm run check clean on both projects (0 errors, 0 warnings, 0 hints). check:shipped passes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KAJXuNGSbvuzKo71RjFjw6

The product name carries no meaning on its own — nothing in "Potluck Docs"
says docs, Astro, or template — so every surface that gets crawled has to
state the category outright, or the name binds to nothing. Two did not.

The root README is what GitHub renders on the repository page. It opened with
"Potluck Docs — monorepo" and "The home of Potluck Docs, EkLine's recommended
Astro + Starlight documentation template". The H1 spent its strongest slot on
"monorepo", and the sentence hedged the category behind "The home of" and
"recommended". It now opens with the plain statement of what the thing is,
then says this repository holds it — which the next heading already explains
in more detail anyway.

The docs homepage `description` becomes the meta description and the
og:description for potluck.ekline.io. It named "theming" and "an optional
logged-in tier" — theming is table stakes any Starlight site has, and
"logged-in tier" is not a phrase anyone searches. Both now carry the same
sentence as the repository description:

  Potluck Docs is an open-source Astro + Starlight documentation template —
  interactive OpenAPI references, private docs behind your SSO, llms.txt
  built in.

154 characters, so search results show it whole rather than cutting it off.
The three named features are the ones Starlight does not give you for free,
which is the question a reader comparing templates is actually asking.

The tagline follows the same vocabulary, keeping its call to action.

packages/template/README.md is deliberately untouched. It ships verbatim into
a customer's repository, where copy selling Potluck Docs to a search engine
would be addressed to the wrong reader.

Verified: 196 + 35 tests pass, check:shipped passes, npm run check clean, and
a build confirms the sentence lands in both meta description and
og:description.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KAJXuNGSbvuzKo71RjFjw6
@vercel

vercel Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
potluck-docs Ready Ready Preview Sep 21, 2026 5:43am UTC
potluck-docs-demo Ready Ready Preview Sep 21, 2026 5:43am UTC

Request Review

The built homepage emitted `<title>Potluck Docs | Potluck Docs</title>`.
Starlight composes every title as `${page title} ${delimiter} ${site title}`
with no special case for the two being equal — `utils/head.ts` line 36, in
0.40.0 — and this site's title is already "Potluck Docs", so the page spent
its strongest on-page signal repeating one opaque word.

The page is now named for the category instead:

  <title>Astro + Starlight documentation template | Potluck Docs</title>

55 characters, so it is not truncated, and it is an exact match for the query
someone shopping for this actually types. Naming the stack is deliberate: a
new repository with no authority cannot rank for "documentation template",
but it can rank for "astro starlight documentation template", where the
searcher has already chosen the stack and is looking for exactly this.

Two things had to follow, because both read the page title:

`hero.title` is now set explicitly. `schemas/hero.ts` documents it as
defaulting to the top-level title, and `Hero.astro` destructures
`title = data.title` for the `<h1>`, so without this the visible heading
would have become the SEO string. It still reads "Potluck Docs" — the
rendered page is unchanged.

`og:title` is restored via a frontmatter `head` entry. It is the page title
with no site title appended (`head.ts` line 57), so the change above would
have taken the product name off every social card. Starlight's `mergeHead`
drops its own default when a page supplies a meta tag matching on `property`,
which is what makes the override clean rather than a duplicate tag.

Behavior confirmed by reading the installed Starlight 0.40.0 source, not from
memory: starlight.astro.build is blocked by this environment's egress proxy,
and the package is the version actually in use.

Verified from the build — title as above, `og:title` "Potluck Docs", meta
description unchanged, and the `<h1>` still "Potluck Docs". 196 + 35 tests,
check:shipped, and npm run check all pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KAJXuNGSbvuzKo71RjFjw6
@puneet-ekline
puneet-ekline marked this pull request as ready for review September 21, 2026 05:48
@puneet-ekline
puneet-ekline merged commit 7bca7b9 into main Sep 21, 2026
15 checks passed

This branch was successfully deployed

2 active deployments
Preview – potluck-docs-demo — 09c3d311 Deployed Sep 21, 2026 by vercel[bot]
Preview – potluck-docs — 09c3d311 Deployed Sep 21, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants