Skip to content

feat: vibestack rebrand, vendored skills, blog swarm, SEO foundation#95

Merged
f-amine merged 1 commit into
masterfrom
feat/vibestack-rebrand-skills-blog-seo
May 15, 2026
Merged

feat: vibestack rebrand, vendored skills, blog swarm, SEO foundation#95
f-amine merged 1 commit into
masterfrom
feat/vibestack-rebrand-skills-blog-seo

Conversation

@f-amine
Copy link
Copy Markdown
Owner

@f-amine f-amine commented May 15, 2026

Summary

Big positioning + workflow PR. Rebrands the repo to vibestack, vendors the Claude Code skill set, ships the blog-writer swarm, redesigns the web app, lays the SEO foundation, and wires the toprank plugin.

  • Rebrand: @starter-saas@vibestack across 230+ files. Marketing hero, footer, OG, metadata, README, CLAUDE/CONTEXT/AGENTS docs rewritten around the AI-first SaaS starter positioning.
  • Skills vendored in .claude/skills/: grill-with-docs, grill-me, to-prd, to-issues, triage, tdd, diagnose, prototype, improve-codebase-architecture, write-a-skill + new setup, blog-writer, impeccable. Update via pnpm skills:update.
  • Web app redesign ("The Lit Reading Room"): token overlay in apps/web/src/index.css, Fraunces + Geist + JetBrains Mono fonts, redesigned auth flow, app shell, dashboard typographic ledger, success page, onboarding hero. requireAdmin redirect loop fixed.
  • SEO foundation: robots.ts, sitemap.ts, metadataBase, hreflang alternates, per-page metadata, JSON-LD (Website / SoftwareApplication / BlogPosting / TechArticle), Atom feed at /blog/feed.xml, og route on edge runtime, rel-noopener sweep, required production env vars.
  • Toprank plugin wired: NotFair Google + Meta Ads MCPs in .mcp.json. /setup skill instructs marketplace install. CLAUDE.md/AGENTS.md route SEO/GEO/Ads intents to /toprank:*.
  • Blog writer swarm: 5-agent topology (researcher → writer → SEO editor + image prompt architect in parallel → image producer). The architect rewrites image placeholders with section-anchored prompts before any image is generated. Two seed posts shipped as drafts. Inline images via Gemini, served from apps/marketing/public/blog/<slug>/.
  • DynamicIslandTOC component in @vibestack/ui (motion + lucide-react), mounts on every blog post. Editorial typography (.blog-body) replaces @tailwindcss/typography.
  • ADRs: 0004 AI-first positioning, 0005 impeccable as default frontend skill, 0006 toprank, 0007 blog-writer swarm.

Test plan

  • pnpm install + pnpm typecheck (5/5 packages green locally)
  • pnpm dev boots web :3001, marketing :3000, admin :3002
  • Marketing routes return 200: /, /blog, /docs, /changelog, /robots.txt, /sitemap.xml, /blog/feed.xml
  • Blog post route renders with cover hero, inline images, TOC island
  • Admin: signed-in non-admin redirects to web (no loop)
  • .env.example files updated; add NEXT_PUBLIC_MARKETING_URL and NEXT_PUBLIC_WEB_APP_URL before deploying
  • Optional: run /blog-writer to generate a fresh post via the swarm
  • Optional: install toprank plugin in Claude Code, run /toprank:seo-analysis <deployed-url> post-merge

🤖 Generated with Claude Code

Rebrand
- Rename workspace from @Starter-SAAS to @VibeStack across 230+ files
- Marketing hero, header, footer, OG route, metadata updated
- README, CONTEXT.md, CLAUDE.md, AGENTS.md rewritten around the
  "AI-first SaaS starter" positioning

Vendored Claude Code skills (.claude/skills/)
- grill-with-docs, grill-me, to-prd, to-issues, triage, tdd, diagnose,
  prototype, improve-codebase-architecture, write-a-skill
- New: setup (first-run env bootstrap), blog-writer (5-agent swarm),
  impeccable (frontend design, mandatory entry for UI work)
- scripts/update-skills.sh + pnpm skills:update

Web app redesign ("The Lit Reading Room")
- Token overlay in apps/web/src/index.css maps shadcn vars to the
  marketing palette (deep blue-black ink, warm gold accent, parchment fg)
- Fraunces + Geist + JetBrains Mono wired via next/font/google
- Auth layout, sign-in/sign-up/forgot/verify/reset pages redesigned
- App shell sidebar with gold active strip, mono section labels,
  vibe/stack logomark
- Dashboard: typographic ledger replaces the 4-card stat grid
- Success page, onboarding wizard hero updated
- requireAdmin redirects fixed (no more localhost loop)

SEO foundation
- apps/marketing/src/app/robots.ts + sitemap.ts
- metadataBase, alternates.canonical, hreflang on root layout
- Per-page metadata for home, blog index, docs, docs slug
- JSON-LD (Website, SoftwareApplication, BlogPosting, TechArticle)
- Atom feed at /blog/feed.xml (top-level, outside [locale] matcher)
- NEXT_PUBLIC_WEB_APP_URL required in prod, dev fallback warns
- /og route runtime=edge, revalidate=86400
- rel=noopener noreferrer on external links, real GitHub URL,
  #how-it-works and #faq anchor IDs

Toprank plugin wired
- .mcp.json NotFair-GoogleAds + NotFair-MetaAds HTTP servers
- /setup skill instructs marketplace install
- CLAUDE.md/AGENTS.md route SEO/GEO/Ads intents to /toprank:*

Blog writer swarm
- Five-agent topology: researcher → writer → (SEO editor + image prompt
  architect)parallel → image producer
- Image Prompt Architect rewrites placeholders with section-anchored
  prompts before any image is generated, avoiding generic abstract output
- Gemini text + image worker scripts (write-long-blog-post.ts,
  gen-blog-inline-images.ts)
- Images served from apps/marketing/public/blog/<slug>/, HTML <img>
  tags in MDX so fumadocs doesn't try to import them as modules
- DynamicIslandTOC component in @vibestack/ui (motion + lucide-react),
  mounts on every blog post
- Editorial typography (.blog-body) replaces @tailwindcss/typography
- Two seed posts shipped as drafts

ADRs
- 0004 AI-first positioning
- 0005 impeccable as default frontend skill
- 0006 toprank for SEO/GEO/Ads
- 0007 blog-writer swarm

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@f-amine f-amine merged commit 3339f2f into master May 15, 2026
2 checks passed
@f-amine f-amine deleted the feat/vibestack-rebrand-skills-blog-seo branch May 15, 2026 20:36
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