Skip to content

docs(LINCHPIN-5253): Document the Linchpin slug vocabulary and correct the paint-name claim - #13

Merged
aaronware merged 2 commits into
mainfrom
docs/linchpin-slug-vocabulary
Jul 30, 2026
Merged

docs(LINCHPIN-5253): Document the Linchpin slug vocabulary and correct the paint-name claim#13
aaronware merged 2 commits into
mainfrom
docs/linchpin-slug-vocabulary

Conversation

@aaronware

Copy link
Copy Markdown
Contributor

Part of LINCHPIN-5253.

What measuring changed

I counted slug usage across the 265 pattern and part files in themes/linchpin before touching anything. The result reframes the ticket and corrects something I got wrong in #10.

Of 1,813 slug references:

Count Share
Structural core — base 557, primary 277, border-light 236, main-accent 203, secondary 178, main 143, + tints 1,740 96%
Paint tail — true-black 35, white-25 11, green 5, gray 4, medium-gray 4, warm 4, black-10 4, yellow 2, accent 2, almost-black 2 73 4%

So base-wp-theme-2026 didn't throw Ollie's vocabulary away — it kept the structural core and appended paint names alongside. My line in theme-baseline-precedents.md calling themes/linchpin "23, still paint-named" overstates it. Corrected here.

Why the tail can't just be retired

This is the part worth reading before anyone plans the migration:

  • No two slugs in the palette share a value. Every remap I sketched — true-black #000000main #031e1e, gray #BBBBBBmedium-gray #8e949a, warm #F5F2ECbase #ffffff — is a visual change, not a rename.
  • Removing a slug breaks live content. WordPress stops emitting --wp--preset--color--<slug>, so saved posts carrying has-<slug>-background-color lose their colour silently.

That makes retirement design work gated on a content audit, not a find-and-replace. Recorded in the skill rather than attempted.

Change

  • wp-design-tokens — names the structural slugs to reach for, the paint names to avoid in new work, and the fact that accent means different colours in the two themes (purple #7D58C6 vs teal #3fc1d0), so it can never be assumed.
  • theme-baseline-precedents.md — corrected claim, with the measured numbers.

Still open on the ticket

The Done criterion "themes/linchpin exposes role-named aliases" is not met here — aliasing means adding duplicate slugs, which the chosen approach deliberately avoided, and retiring the tail needs the audit above. Flagged for a follow-up rather than half-done.

Verify

npm run validate --strict → 22 skills, 0 errors, 0 warnings.

🤖 Generated with Claude Code

aaronware and others added 2 commits July 29, 2026 23:49
…t the paint-name claim

Measuring slug usage across the 265 pattern and part files in themes/linchpin
showed the vocabulary problem is much narrower than assumed, and that what I
wrote in #10 was wrong.

Of 1,813 slug references, 96% already flow through Ollie's structural core -
base 557, primary 277, border-light 236, main-accent 203, secondary 178, main
143. The paint tail is 73 references, about 4%. So base-wp-theme-2026 did not
replace the vocabulary; it kept the structural core and appended paint names
alongside it. The precedents reference said themes/linchpin was "still
paint-named", which overstates it. Corrected.

wp-design-tokens now names the structural slugs to reach for, lists the paint
names to avoid in new work, and flags that accent means different colours in
themes/linchpin and themes/docspress-linchpin, so it can never be assumed.

Also records why the tail cannot simply be retired. No two slugs in the palette
share a value, so every remap is a visual change rather than a rename, and
removing a slug stops WordPress emitting its preset custom property, which
silently breaks saved post content carrying has-slug-background-color. That work
needs a live content audit and design sign-off.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…roject skill

Applying the placement test to what PR 928 added to linchpin-theme-conventions:
some of it is true on any project and belongs here, not in one repo's file.

Moved up, because they hold regardless of whose brand it is:

  - measure every state, not just the resting one. A resting state that passes
    tells you nothing about hover, and auditing only rest states is how a button
    ships that is accessible only while being clicked
  - interaction ramp direction follows the label colour - light surface with a
    dark label lightens, dark surface with a white label darkens. Get this
    backwards and no amount of tuning the resting colour fixes it
  - disabled controls are exempt under WCAG SC 1.4.3, and a 16px bold button
    label is not large text, so 4.5:1 applies rather than 3:1

Stays in linchpin.com because it is one brand's decision: the specific teal, the
hex values and ratios, and the ghost-button gap.

Also removes a stale entry that should never have been in a portable skill - the
2.15:1 button contract was recorded here as an open question, and PR 928 decided
it. Project-specific open items do not belong in the library layer; the durable
lesson does.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@aaronware
aaronware merged commit 9fd1988 into main Jul 30, 2026
2 checks passed
@aaronware
aaronware deleted the docs/linchpin-slug-vocabulary branch July 30, 2026 04:04
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.

1 participant