@primer/brand-mcp 0.71.0-rc.1102b23e → 0.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,11 +6,9 @@ Learn individual component APIs and usage with `primer_brand_docs` and `primer_b
6
6
 
7
7
  ## Start here
8
8
 
9
- The Flexsuite recipe templates are the current canonical source of truth for what GitHub web pages should look like today. Every component in them reflects the latest brand, unlike many older standalone examples. Use them as your
10
- starting point and reference, and mirror their composition and section order:
9
+ The Flexsuite recipe templates are the current canonical source of truth for what GitHub web pages should look like today. Every component in them reflects the latest brand, unlike many older standalone examples. Use them as your starting point and reference, and mirror their composition and section order:
11
10
 
12
- - **Overview / landing page** — `FlexSuiteAIOverview` (hero with media, logo suite, gridline card
13
- grids, rivers, pricing, FAQ, footer).
11
+ - **Overview / landing page** — `FlexSuiteAIOverview` (hero with media, logo suite, gridline card grids, rivers, pricing, FAQ, footer).
14
12
  - **Category page** — `FlexSuiteSecurityCategory`.
15
13
  - **Details page** — `FlexSuiteAIDetailsPlaylist`.
16
14
 
@@ -23,6 +21,8 @@ Pull adaptable component snippets with `primer_brand_examples`.
23
21
  - **Do** — when a component offers a gridline-family option, choose it over the older or default look. "Expressive" gridline options are a more pronounced sub-variant of the same aesthetic, not a competing style; reach for them where a section wants extra emphasis.
24
22
  - **Don't** — settle for a component's plainest or legacy variant, or borrow section layouts from an older brand generation, when a gridline equivalent exists.
25
23
 
24
+ The gridline look is crucial and literal, not just a set of variants. Gridlines are thin ruled lines that frame the content column and separate sections (see "Contain content within the grid" section below).
25
+
26
26
  Confirm the exact options with `primer_brand_component` rather than assuming which variants a component has — the specific names evolve over time.
27
27
 
28
28
  ## Page structure
@@ -34,21 +34,42 @@ Every full page should be framed top and bottom, unless the user has requested a
34
34
  - **Do** — use `SubdomainNavBar` at the top and `MinimalFooter` at the bottom (APIs via `primer_brand_component`).
35
35
  - **Don't** — hand-roll a `<header>`, `<nav>`, or `<footer>` unless user has a separate plan for it.
36
36
 
37
+ ### Contain content within the grid
38
+
39
+ Body content must always sit in a centered, max-width column framed by the brand's gridlines — it should rarely stretch edge-to-edge.
40
+
41
+ Examples of this are in the Flexsuite recipes.
42
+
43
+ - **Do** — keep content (heroes, rivers, tables, card grids, CTAs, prose) in a shared max-width column with clear left and right gutters, and let thin ruled gridlines run down both sides of the column with full-bleed horizontal rules between major sections.
44
+ - **Don't** — stretch tables, card grids, CTAs, or text edge-to-edge, or let a section bleed full-width unless it is a deliberate background band.
45
+ - **Mobile** — use a modest, consistent side inset and make sure nothing overflows the viewport.
46
+
47
+ Resolve gutter, inset, and gridline (border) values with `primer_brand_tokens`; don't hardcode hex or pixel values.
48
+
37
49
  ### Spacing
38
50
 
39
51
  Generous spacing is what lets a layout breathe; the Flexsuite recipes are a good reference for the rhythm to aim for.
40
52
 
41
- - **Do** — use `Box` and `Stack` (both have responsive spacing props) to add consistent rhythm between sections.
42
- - **Don't** — pack sections edge-to-edge or hand-roll ad-hoc margins.
53
+ - **Do** — use `Box` and `Stack` (both have responsive spacing props) to add consistent rhythm between sections, and take spacing steps from the standard scale so gaps repeat predictably across sections and inside cards.
54
+ - **Don't** — pack sections edge-to-edge, hand-roll ad-hoc margins, or invent one-off gap values.
55
+
56
+ ### Typographic hierarchy
57
+
58
+ A page has one clear headline and a calm step-down from there.
59
+
60
+ - **Do** — use a single hero heading, make secondary section headings a clear step smaller, and set body copy at the standard body size and weight. Left-align long-form copy; reserve centering for short hero or section intros.
61
+ - **Don't** — size secondary headings close to the hero, set body text in heavy weights, or center long paragraphs.
62
+
63
+ Resolve exact sizes and weights with `primer_brand_tokens`.
43
64
 
44
65
  ## Component & element patterns
45
66
 
46
67
  ### Heroes carry media
47
68
 
48
- A text-only hero reads as unfinished; heroes should carry a visual.
69
+ A text-only hero reads as unfinished; heroes should carry a visual and lead with a label.
49
70
 
50
- - **Do** — give `Hero` a `Hero.Image` (or `Hero.Video`); source imagery from `primer_brand_asset` (Octovisuals) or generate it with the Asset Generator MCP (see _Generated imagery_ below).
51
- - **Don't** — ship a bare, text-only hero.
71
+ - **Do** — give `Hero` a `Hero.Image` (or `Hero.Video`); source imagery from `primer_brand_asset` (Octovisuals) or generate it with the Asset Generator MCP (see _Generated imagery_ below). Lead the hero with an eyebrow label (see _Labels hug their content_), and bound decorative or illustrative media with a set aspect ratio and max height so it stays inside the grid.
72
+ - **Don't** — ship a bare, text-only hero, drop the eyebrow, or let an illustration run arbitrarily tall or bleed full-width.
52
73
 
53
74
  ### Generated imagery adds color and interest
54
75
 
@@ -66,11 +87,18 @@ A grid of items (features, pathways, plans) uses the connected **gridline** grid
66
87
 
67
88
  ### Labels hug their content
68
89
 
69
- Eyebrow/section labels are intrinsic width; stretching them reads as off-brand.
90
+ Lead heroes and sections with an eyebrow/section label; it is intrinsic width, and stretching it reads as off-brand.
91
+
92
+ - **Do** — use `Hero.Label` / `SectionIntro.Label` / `EyebrowText` for the standard treatment (a short, monospace, uppercase label) and let it size to its content; alignment follows the section (start by default, or centered inside a centered `SectionIntro`).
93
+ - **Don't** — set a label full-width, give it a block/full-bleed background, or hand-style your own instead of the label components.
94
+
95
+ ### Sweat the small details
96
+
97
+ Small, repeated treatments are where a page quietly drifts off-brand.
70
98
 
71
- - **Do** — let `Hero.Label` / `SectionIntro.Label` / `EyebrowText` size to their content; alignment follows the section (start by default, or centered inside a centered `SectionIntro`).
72
- - **Don't** — set a label full-width or give it a block/full-bleed background.
99
+ - **Do** — use dot bullets for lists; keep buttons in their real interactive states (hover/active) and use a `Button` for a primary CTA rather than a bare link; show FAQ/accordion category navigation only when there are several categories; leave `Icon` at its default color — which renders green — wherever Octicons appear (`Card.Icon`, `Pillar.Icon`, and standalone `Icon`) so icons read as one consistent accent.
100
+ - **Don't** — use dashes as bullets, add divider rules between list items or sections, ship flat/stateless buttons, render an empty single-category sidebar, or override the `color` prop on `Icon` or `Card.Icon` to tint icons off-green without a strong, deliberate reason (`Pillar.Icon` has no `color` prop — it's already locked to green).
73
101
 
74
102
  ## General guidance
75
103
 
76
- - If browser tooling (e.g. the Playwright MCP) is available, verify your work visually before finishing: serve the page locally, open it, and take screenshots across different breakpoints. Review the screenshots against this guidance and automatically fix obvious defects like clipped or overflowing content, cramped spacing, stretched/full-width labels that should preserve their intrinsic width, low-contrast text, a text-only hero, broken images, and off-brand tells (glows, purple gradients, pill buttons, glassmorphism, placeholder copy). Re-screenshot to confirm the fixes.
104
+ - If browser tooling (e.g. the Playwright MCP) is available, verify your work visually before finishing: serve the page locally, open it, and take screenshots across different breakpoints. Review the screenshots against this guidance and automatically fix obvious defects like content that bleeds edge-to-edge instead of sitting in the gridline column, clipped or overflowing content, cramped or one-off spacing, stretched/full-width labels that should preserve their intrinsic width, a hero with no eyebrow, an illustration that runs too tall, dashes used as bullets, low-contrast text, a text-only hero, broken images, and off-brand tells (glows, purple gradients, pill buttons, glassmorphism, placeholder copy). Re-screenshot to confirm the fixes.
package/dist/catalog.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "brandPackage": "@primer/react-brand",
3
- "generatedFromVersion": "0.71.0-rc.1102b23e",
4
- "generatedAt": "2026-07-08T11:16:29.594Z",
3
+ "generatedFromVersion": "0.71.0",
4
+ "generatedAt": "2026-07-13T15:41:57.658Z",
5
5
  "components": [
6
6
  {
7
7
  "name": "Hero",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/brand-mcp",
3
- "version": "0.71.0-rc.1102b23e",
3
+ "version": "0.71.0",
4
4
  "description": "MCP (Model Context Protocol) server that helps AI agents use Primer Brand (@primer/react-brand) correctly when building GitHub marketing and landing pages.",
5
5
  "keywords": [
6
6
  "primer",