Commit f44c498
feat: vibestack rebrand, vendored skills, blog swarm, SEO foundation
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>1 parent c653426 commit f44c498
341 files changed
Lines changed: 22407 additions & 1279 deletions
File tree
- .claude/skills
- blog-writer
- impeccable
- agents
- reference
- scripts
- setup
- .github/workflows
- .ruflo
- prompts
- apps
- admin
- src
- app
- [locale]
- affiliate
- analytics
- audit
- billing
- feature-flags
- orgs
- users
- api/health
- ingest/[...path]
- components/layout
- i18n
- lib
- marketing
- content
- blog
- docs
- public/blog
- ai-vibecoding-tools
- vibe-coding-production
- src
- app
- [locale]
- blog
- [slug]
- changelog
- [slug]
- docs
- [[...slug]]
- roadmap
- api/affiliate/click
- blog/feed.xml
- ingest/[...path]
- og
- components
- marketing
- sections
- seo
- i18n
- lib
- web
- src
- app
- (app)
- dashboard
- affiliate
- files
- organizations
- [id]
- referrals
- security
- settings
- (auth)
- forgot-password
- reset-password
- sign-in
- sign-up
- verify-email
- api
- affiliate
- me
- payouts
- api-keys
- [id]
- auth/[...all]
- files
- [...key]
- gdpr/purge
- health
- notifications
- preferences
- referrals
- search
- trpc/[trpc]
- v1/me
- webhooks
- deliveries
- [id]/replay
- polar
- process
- resend
- subscriptions
- [id]
- ingest/[...path]
- onboarding
- orgs/invitations/[id]
- success
- components
- app
- auth
- settings
- lib
- utils
- docs/adr
- packages
- analytics
- src
- api
- src
- routers
- auth
- src
- lib
- billing
- src
- config
- db
- scripts
- src
- email
- src/lib
- env
- src
- feature-flags
- src
- i18n
- storage
- src
- ui
- src/components
- scripts
- agents
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | | - | |
4 | | - | |
| 3 | + | |
5 | 4 | | |
6 | | - | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
7 | 25 | | |
8 | 26 | | |
9 | 27 | | |
10 | | - | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
11 | 33 | | |
12 | 34 | | |
13 | 35 | | |
14 | | - | |
| 36 | + | |
15 | 37 | | |
16 | 38 | | |
17 | 39 | | |
18 | | - | |
| 40 | + | |
| 41 | + | |
19 | 42 | | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
| 43 | + | |
24 | 44 | | |
25 | 45 | | |
26 | | - | |
| 46 | + | |
27 | 47 | | |
28 | 48 | | |
29 | | - | |
30 | | - | |
| 49 | + | |
31 | 50 | | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
| 51 | + | |
48 | 52 | | |
49 | | - | |
| 53 | + | |
50 | 54 | | |
51 | 55 | | |
52 | | - | |
53 | | - | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
54 | 59 | | |
55 | 60 | | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
| 61 | + | |
0 commit comments