Skip to content

Add AI Hub navigation, Support page, and Applied AI Blog - #1912

Open
annieporter02 wants to merge 5 commits into
mainfrom
AI-Tools
Open

Add AI Hub navigation, Support page, and Applied AI Blog#1912
annieporter02 wants to merge 5 commits into
mainfrom
AI-Tools

Conversation

@annieporter02

Copy link
Copy Markdown

What changed?

  • Added an AI tab to the top nav with a dropdown (AI Hub, Skills, Blog) and a Support tab, alongside the existing Docs/Tutorials tabs.
  • Added an AI Hub landing page (/docs/ai/) with cards linking to Snowplow Assistant, Snowplow MCP Server, CLI MCP Server, Signals, the Skills Marketplace, and the Applied AI Blog.
  • Removed several thin stub pages under docs/ai/ (snowplow-assistant, snowplow-mcp-server, cli-mcp-server, signals, documentation-llms-txt, documentation-markdown) that duplicated fuller content already published at docs/llms-support/* and docs/signals/, and pointed the AI Hub cards, a few migration guide links, and the Skills Marketplace component at the canonical pages/anchors instead. Fixed the worker/redirects.js entries that had pointed the real pages back at those now-deleted stubs.
  • Moved the Support page from a standalone src/pages/support.tsx React page into docs/support/index.md, so it follows the standard docs frontmatter conventions and gets a real sidebar entry instead of being an orphaned standalone route. Added a redirect from the old /support/ URL.
  • Added a Skills Marketplace page and component (src/components/skills/).
  • Redesigned the Applied AI Blog page (/docs/ai/blog/) with a new BlogPostCard component (icon banner, category tag, title, author avatar, date) matching the style of snowplow.io/blog, and published the first two posts in the "Measuring first-party AI agents" series.

Why?

Establishes a dedicated AI section of the docs site with consistent navigation and no duplicated content, and gives Support and the AI blog proper homes in the docs information architecture instead of ad hoc standalone pages.

Reviewer guidance

  • The AI Hub cards intentionally link to the fuller docs/llms-support/* and docs/signals/ pages rather than thinner docs/ai/* versions that existed earlier in this branch — those were deleted as duplicates, along with the redirects that pointed at them.
  • The "Documentation index in llms.txt" and "Documentation pages as markdown" cards link to anchors on /docs/llms-support/ rather than separate pages, for the same reason.
  • BlogPostCard (src/components/blog/BlogPostCard.tsx) is a new, separate component from the existing LinkCard/CardGrid, so other cards across the site are unaffected.
  • Author avatars on the blog cards are initials-based placeholders (no real headshot assets were available).

AI reviews

Claude will automatically review this PR against the docs style guide.

If you have questions or want it to look again at something specific, tag @claude in a comment.

annieporter02 and others added 4 commits August 6, 2026 16:44
Converts src/pages/support.tsx into docs/support/index.md so it follows
the standard docs frontmatter/sidebar conventions and gets a real sidebar
entry, instead of being an orphaned standalone page. Updates the Support
nav tab to point at the new /docs/support route and adds a redirect from
the old /support URL.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
docs/ai/{snowplow-assistant,snowplow-mcp-server,cli-mcp-server,signals,
documentation-llms-txt,documentation-markdown} were thin stub pages
duplicating fuller content already at docs/llms-support/ and
docs/signals/. Repoints the AI Hub cards, migration guide links, and
the Skills Marketplace link at the canonical pages/anchors, and fixes
the redirects.js entries that pointed the real pages back at the
stubs we just deleted.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a BlogPostCard component (icon banner, category pill, title,
author initials avatar, and date) and uses it for the AI Blog page's
first two posts, part 1 and 2 of the Measuring first-party AI agents
series.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@snowplowcla

Copy link
Copy Markdown

Thanks for your pull request. Is this your first contribution to a Snowplow open source project? Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

📝 Please visit https://docs.snowplowanalytics.com/docs/contributing/contributor-license-agreement/ to learn more and sign.

Once you've signed, please reply here (e.g. I signed it!) and we'll verify. Thanks.

@github-actions

Copy link
Copy Markdown
Contributor

Missing SEO metadata

The following markdown files are missing required metadata fields:

  • docs/ai/blog/index.md: missing fields: keywords
  • docs/ai/mcp-resources/index.md: missing fields: keywords
  • docs/ai/skills/index.mdx: missing fields: keywords, sidebar_label

Required fields

The file metadata is important for SEO and marketing. All markdown files, except for those with filenames starting with _, should include:

  • title: Full, descriptive page title
  • sidebar_label: Short title for navigation sidebar (can be the same as the main title)
  • description: One to two sentences summarizing the page contents
  • keywords: Array of marketing/SEO keywords

Please add the missing metadata.

@greptile-apps

greptile-apps Bot commented Aug 18, 2026

Copy link
Copy Markdown

Greptile Summary

The PR establishes dedicated AI and Support documentation areas, adds an interactive skills marketplace and Applied AI cards, and updates navigation, sidebar transformation, redirects, and Docusaurus dependencies.

  • Adds AI Hub, skills, MCP resources, blog, and Support documentation pages.
  • Extends desktop and mobile navigation with AI and Support entries.
  • Redirects legacy routes to canonical AI and Support content.
  • Adds reusable marketplace and blog-card components and updates shared card styling.
  • Upgrades Docusaurus packages from 3.10.0 to 3.10.1.

Confidence Score: 4/5

The PR appears safe to merge after addressing two non-blocking UI concerns involving menu accessibility and unintended shared LinkCard styling.

The new routes and redirects have no established blocking failure, while the remaining findings are an unresolved AI-menu label and unconditional presentation changes to a shared card component.

Files Needing Attention: src/components/tutorials/TutorialTabs.tsx, src/components/CardGrid.tsx

Important Files Changed

Filename Overview
src/components/tutorials/TutorialTabs.tsx Adds functional AI dropdown and Support navigation on desktop and mobile, but both menus have an unresolved ARIA label reference.
src/components/CardGrid.tsx Adds centered cards but also applies the new Support-oriented gradient and smaller typography globally to all LinkCard consumers.
sidebars.js Expands link-item normalization and section-link construction without a concrete current failure identified.
worker/redirects.js Retargets legacy MCP routes and adds canonical documentation and Support redirects with no concrete redirect failure established.
src/components/skills/SkillsMarketplace.tsx Adds category filtering, installation guidance, and repository links for the skills marketplace.
docs/ai/index.md Adds the AI Hub landing page with cards targeting canonical AI documentation sections.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Nav[Desktop and mobile navigation] --> AI[AI Hub]
  Nav --> Support[Support docs]
  AI --> Skills[Skills Marketplace]
  AI --> Blog[Applied AI Blog]
  AI --> Canonical[Canonical MCP, Assistant, and Signals docs]
  Legacy[Legacy URLs] --> Redirects[Worker redirects]
  Redirects --> Support
  Redirects --> Canonical
Loading

Fix all with Greploop Fix All in Claude Code

Reviews (1): Last reviewed commit: "Redesign Applied AI Blog cards to match ..." | Re-trigger Greptile

anchorEl={menuAnchor}
open={Boolean(menuAnchor)}
onClose={handleMenuClose}
MenuListProps={{ 'aria-labelledby': 'ai-tab-menu' }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 AI menu label is unresolved

Both AI menus set aria-labelledby="ai-tab-menu", but neither AI tab declares that ID, so assistive technology cannot resolve the intended accessible label and may announce the menu without a meaningful name.

Fix in Claude Code

Comment on lines 102 to +109
to={href}
className="link-card block rounded-lg bg-card p-6 transition-all duration-200 hover:shadow-md"
style={{ border: '1px solid hsl(var(--border))' }}
className={`link-card block rounded-lg p-6 transition-all duration-200 hover:shadow-md ${centered ? 'text-center' : ''}`}
style={{
border: '1px solid hsl(var(--border))',
background: 'linear-gradient(135deg, rgba(111, 76, 255, 0.12) 0%, rgba(111, 76, 255, 0.04) 100%)',
}}
>
<p className="mb-3 text-xl font-semibold text-foreground">{title}</p>
<p className="text-base text-muted-foreground mb-0">{description}</p>
<p className="mb-3 text-lg font-semibold text-foreground">{title}</p>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Support styling affects every LinkCard

The gradient and smaller typography are applied unconditionally to the shared LinkCard, so existing card grids across the documentation also receive the Support page redesign. Scope these presentation changes to the new variant so unrelated cards remain unaffected.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Claude Code

@annieporter02

annieporter02 commented Aug 18, 2026 via email

Copy link
Copy Markdown
Author

@snowplowcla

Copy link
Copy Markdown

Confirmed! annieporter02 has signed the Contributor License Agreement. Thanks so much.

@claude

claude Bot commented Aug 18, 2026

Copy link
Copy Markdown

Documentation style review

Reviewed against CLAUDE.md and src/pages/style-guide/llm/index.md. Scope is writing quality, style, terminology, structure, frontmatter, links, and MDX component usage — nothing about the React/CSS/sidebar logic.

All external URLs touched by this PR resolve (snowplow.io blog posts, support.snowplow.io, the Jira service desk portal, github.com/snowplow/skills, and all six plugins/snowplow/skills/* folder URLs — verified against the GitHub contents API, since the HTML tree view renders client-side).


1. Internal links converted away from /index.md (blocking)

Three files change working links to the trailing-slash form:

-The [Snowplow CLI MCP server](/docs/llms-support/cli-mcp-server/index.md) enables AI assistants...
+The [Snowplow CLI MCP server](/docs/llms-support/cli-mcp-server/) enables AI assistants...

Rule: CLAUDE.md, File structure — "End all internal links with /index.md for validation, EXCEPT for links in files within /tutorials."

Fix: revert all three to /docs/llms-support/cli-mcp-server/index.md — in docs/event-studio/programmatic-management/index.md, docs/migration-guides/adobe-analytics/index.md, and docs/migration-guides/mixpanel/index.md. These are Markdown links in prose, so the rule applies. (The href props on <LinkCard> in docs/ai/index.md are fine as-is — they match the existing convention in docs/introduction.md and docs/signals/introduction/index.md.)

2. "Our" in the AI hub title, "we/our" in the blog intro

docs/ai/index.md:

title: "Explore Our AI Hub"
sidebar_label: "Explore Our AI Hub"

docs/ai/blog/index.md:

"A running feed of Snowplow's thinking on AI agents, behavioral data, and where the two intersect. We'll add to this page as our product and the industry evolve."

Rules: style guide, Writing style — "Refer to Snowplow as 'Snowplow', not 'we' or 'our'"; "Stay in the present tense. Never use 'currently', 'now', 'in the future'…". Also CLAUDE.md, Headings — sentence case.

Fix: title: "AI hub" (or "Explore the AI hub"), with a matching sidebar_label. For the blog intro: "Posts on AI agents, behavioral data, and where the two intersect. Snowplow adds to this page as the product and the industry evolve."

3. Titles are not in sentence case

title: "AI Blog", title: "MCP Resources", title: Skills Marketplace.

Rule: CLAUDE.md, Required frontmatter — "Descriptive title in sentence case".

Fix: "AI blog", "MCP resources", "Skills marketplace", and the same for the corresponding sidebar_label values.

4. Incomplete frontmatter on the new AI pages

docs/support/index.md is the model here — it has every required field. The AI pages don't:

  • docs/ai/blog/index.md — no keywords.
  • docs/ai/mcp-resources/index.md — no keywords.
  • docs/ai/skills/index.mdx — no sidebar_label, no keywords, no date; values are unquoted, and description: Browse Snowplow skills for Claude and AI workflows has no terminal period.

Rule: CLAUDE.md, Required frontmatter — keywords, sidebar_label, and date are all listed; description is "One to two sentences for SEO" and must be grammatically correct.

Fix: add the missing fields and quote the values, e.g. description: "Browse Snowplow skills for Claude and other AI assistants."

5. docs/ai/mcp-resources/index.md — heading with no preceding prose, and a stub body

## MCP Resources

Guides, examples, and configuration snippets for running the MCP server, creating endpoints, and connecting agents to Snowplow data sources.

Rules: CLAUDE.md, Headings — "Precede every heading with at least one paragraph of explanatory text"; style guide, Headings — sentence case. The H2 also just repeats the page title, which the H1 already renders.

Fix: drop the ## MCP Resources heading entirely and lead with the paragraph. Separately: the page promises guides, examples, and snippets but contains none, and it isn't linked from the AI hub card grid — consider holding it back until it has content, or adding a card for it.

6. "&" in user-facing category headings

src/data/skillsMarketplaceData.ts defines 'Build & Design' and 'Real-Time & AI', which SkillsMarketplace.tsx renders as <h2> elements on /docs/ai/skills/.

Rules: style guide, Formatting — "Use 'and', never '&'"; General technical terms — "'Real-time' as adjective"; Headings — sentence case.

Fix: 'Build and design', 'Real-time and AI', 'Operate', 'Troubleshoot' (update both SkillCategory and the categories array). The same sentence-case point applies to the skill names rendered as <h3> — "Tracking Design", "Pipeline Infrastructure", "Console Operations", etc. — unless those are fixed product names in the skills repo.

7. "backend" should be hyphenated

src/data/skillsMarketplaceData.ts:

"Add Snowplow trackers to your website, app, or backend, and confirm your events are firing correctly."

Rule: style guide, General technical terms — "Always hyphenate: back-end, front-end, server-side, client-side."

Fix: "or back-end".

8. Skills Marketplace copy

In src/components/skills/SkillsMarketplace.tsx:

"The first time you use a skill, you'll be prompted to log in and authorize access. After that, it's ready to go."

Rule: style guide, Writing style — "Remove filler words". The last sentence adds nothing.

Fix: end at "authorize access." — or say what actually persists, e.g. "The connection persists for subsequent sessions."

Two more in the same file:

  • The internal link uses a raw anchor with target="_blank": <a href="/docs/llms-support/snowplow-mcp/" target="_blank" rel="noopener noreferrer">. The file already imports Docusaurus Link; use <Link to="/docs/llms-support/snowplow-mcp/"> and drop the new-tab behavior, which is inconsistent with every other internal docs link.
  • "These skills connect your AI assistant, whether that's Claude, Cursor, Codex, or another MCP-compatible tool, to your Snowplow workspace, so it can see…" — the comma-delimited aside separates subject from object across 12 words. Suggest: "These skills connect your AI assistant — Claude, Cursor, Codex, or another MCP-compatible tool — to your Snowplow workspace, so it can see your pipelines, schemas, and Console data instead of describing them."

9. Marketing verbs in the AI hub card descriptions

"Discover the remote MCP server that connects AI assistants to your Snowplow Console account."

Rule: CLAUDE.md, Writing style — "Never use marketing language."

Fix: state what the thing does rather than exhorting the reader: "The remote MCP server connects AI assistants to your Snowplow Console account." The same applies to the "Explore how Signals delivers…" and "Find out how the local CLI MCP server…" cards. Also, description: "Guidance on integrating and using AI features with Snowplow documentation." doesn't describe this page — it covers AI features across Snowplow, not the documentation. Suggest: "Snowplow's AI capabilities, including the Console assistant, MCP servers, Signals, and skills."

10. Minor

  • Card title "Applied AI Blog" links to a page titled "AI Blog"; card title "Documentation pages as markdown" links to a heading spelled "Documentation pages as Markdown". Match the target page titles so the navigation reads consistently.
  • Trailing whitespace after the description: values in docs/ai/blog/index.md and docs/ai/mcp-resources/index.md.

docs/support/index.md is clean — complete frontmatter, no marketing language, and clear card copy. Items 1 and 5 are the ones worth fixing before merge; the rest are straightforward text edits.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 18, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
documentation 8ebd1eb Commit Preview URL

Branch Preview URL
Aug 18 2026, 03:22 PM

- Revert 3 internal Markdown links to the required /index.md form
  (docs/event-studio/programmatic-management, migration-guides/adobe-analytics,
  migration-guides/mixpanel) — LinkCard href props are unaffected, they
  already matched the existing convention.
- Drop "Our"/"we"/"our" language from the AI hub title and blog intro;
  Snowplow is referred to in third person per the style guide.
- Sentence-case the AI Blog, MCP Resources, and Skills Marketplace page
  titles/sidebar labels, and match the AI hub card titles to their
  target page titles so navigation reads consistently.
- Fill in missing frontmatter (keywords, sidebar_label, date, quoted
  values) on the blog, skills, and mcp-resources pages.
- Replace "&" with "and" in skill category names, hyphenate "back-end",
  and remove marketing-voice phrasing ("Discover", "Explore how", "Find
  out how") from AI hub card descriptions in favor of direct statements.
- Fix Skills Marketplace copy: use Docusaurus Link instead of a raw
  external-style <a> tag for an internal link, cut a filler sentence,
  and restructure a comma-heavy sentence with em dashes.
- Remove the docs/ai/mcp-resources stub page — it promised guides and
  examples it didn't have, and wasn't linked from any AI hub card.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@annieporter02

Copy link
Copy Markdown
Author

Claude (@claude) can you review against the docs style guide again?

@claude

claude Bot commented Aug 18, 2026

Copy link
Copy Markdown

Docs style review

Reviewed against CLAUDE.md and src/pages/style-guide/llm/index.md. Nice, focused IA change — the notes below are all copy and consistency points.

docs/ai/index.md

Product name capitalization. The canonical pages use lowercase "server": docs/llms-support/snowplow-mcp/index.md is titled "Snowplow MCP server" and docs/llms-support/cli-mcp-server/index.md is "CLI MCP server". The cards here say "Snowplow MCP Server" and "CLI MCP Server" — please lowercase both so the hub matches its targets.

"Markdown" capitalization is inconsistent within one card. The title says "Documentation pages as Markdown" and the description says "as markdown". The style guide says to match official third-party styling, so use "Markdown" in both. (The canonical heading is ## Documentation pages as Markdown.)

Passive voice and the "docs" abbreviation. "Learn how individual docs pages can be accessed directly as markdown for LLM-friendly retrieval." The style guide requires active voice. Suggested: "Access individual documentation pages as Markdown for LLM-friendly retrieval".

Filler and possessive. "Use the generated llms.txt index to help LLMs explore your Snowplow docs efficiently." Two things: "efficiently" is the kind of qualifier the style guide asks you to remove (alongside "easily", "quickly", "seamlessly"), and the documentation is not the reader's — "your Snowplow docs" should be "the Snowplow documentation". Same note on "Browse practical AI skills…": drop "practical".

Card description voice is mixed. Some descriptions are imperative ("Learn about…", "Browse…", "Read blog posts that…") and some are declarative ("The remote MCP server connects…", "Signals delivers…"). Elsewhere on the site (docs/introduction.md, docs/signals/introduction/index.md) card descriptions are short phrases with no trailing period and no "Learn about" framing, for example description="Let Claude or other MCP clients help with your data structure management". Worth normalizing to that pattern across all eight cards here and the three on the Support page.

Frontmatter naming. The description refers to "the Console assistant", but the product is Snowplow Assistant — both the card title on this page and the canonical page title use that name.

Minor: CardGrid and LinkCard are already registered globally in src/theme/MDXComponents.js, so the import line is redundant here and on docs/support/index.md (BlogPostCard genuinely needs its import). There is also a stray double blank line after the import.

docs/ai/blog/index.md

Intro paragraph. "Posts on AI agents, behavioral data, and where the two intersect. Snowplow adds to this page as the product and the industry evolve." The first sentence is a fragment and the second is vague about what actually gets added. Suggested: "This page collects Snowplow posts about AI agents, behavioral data, and where the two intersect. Snowplow publishes new posts as the product and the industry evolve."

Frontmatter. "articles about AI work in Snowplow" reads oddly — "at Snowplow" is what is meant.

docs/support/index.md

Filler. "Choose the right Snowplow support channel for your needs." — "for your needs" adds nothing. Suggested: "Choose the Snowplow support channel that fits your question."

"documentation" is ambiguous here. "Browse Snowplow help articles and documentation for common questions" sits directly above a Browse documentation button pointing at this docs site, while the card itself links to the Zendesk Knowledge Base. Suggested: "Browse help articles and answers to common questions".

Skills marketplace

Skill names should be sentence case. src/data/skillsMarketplaceData.ts uses Title Case ("Tracking Design", "Implementation Guidance", "Pipeline Infrastructure", "Console Operations"), and SkillsMarketplace.tsx renders each name as an h3. The heading rule is sentence case, so these should be "Tracking design", "Implementation guidance", and so on. The category names are already correct.

Unclear contrast in the intro. "…so it can see your pipelines, schemas, and Console data instead of describing them." It is not clear what "describing them" is contrasted with. Suggested: "…so it can read your pipelines, schemas, and Console data directly."

Vague summary. "Diagnose failed events and enrichment issues, and get pointed toward a fix." — "get pointed toward a fix" is informal and non-committal. Suggested: "Diagnose failed events and enrichment issues, and find a fix."

Repeated badge. "Requires MCP connection" appears on every skill row and restates the paragraph directly above it, which already says every skill needs the MCP connection. Consider dropping the per-row badge.

Stale code comment. The header comment in skillsMarketplaceData.ts says "The page component (index.tsx) reads from this list" — the component is src/components/skills/SkillsMarketplace.tsx.

Naming consistency. The page is titled "Skills marketplace", which is right since it is not in the always-capitalized terminology list, but the PR description calls it the "Skills Marketplace". Worth aligning so the term stays stable in future writing.

Two non-copy notes

  • The LinkCard change in src/components/CardGrid.tsx adds a purple gradient background and shrinks the title and description text for every LinkCard on the site, not just the new AI pages. If that is intended, it is worth calling out in the PR description; if not, it may want to be scoped to the new pages.
  • The PR description says the Support page was moved out of src/pages/support.tsx, but that file is not in the diff and does not exist on main — the description looks stale on that point.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants