google/site-marketing
Capsem marketing website (capsem.org). Use when editing marketing copy, adding sections, working with components, or changing the site theme. Covers site structure, data-driven content, component library, Tailwind theme, and dev workflow.
npx skills add https://github.com/google/capsem --skill site-marketing
The marketing site (capsem.org) is a single-page landing built with Astro 6 + Svelte 5 + Tailwind v4. Source lives in site/.
cd site && pnpm run dev # localhost:4321
cd site && pnpm run build # Production build
cd site && pnpm run preview # Preview production build
ci.yaml runs the merge-blocking site-build job under pr-gate. site.yaml
deploys only on every push to main and smokes https://capsem.org/. This
deploy rail is independent from binary releases, manual VM asset releases, and
the release.capsem.org asset-channel workflow.
Single page (site/src/pages/index.astro) composed of Svelte components. All marketing copy is centralized in site/src/lib/data.ts -- edit that file to change text, not the components.
site/
astro.config.mjs Astro config (site: capsem.org, Svelte + Tailwind)
package.json capsem-marketing package
src/
pages/index.astro Single landing page, composes all sections
layouts/Base.astro HTML shell (meta, fonts, skip-to-content)
lib/data.ts All copy: site metadata, nav, features, FAQ, footer
lib/icons.ts Icon SVG paths
styles/global.css Tailwind theme tokens, base styles, button utilities
components/
Nav.svelte Top navigation (client:load)
Hero.svelte Hero section with install command
Features.svelte Feature cards grid
ProductOverview.svelte Architecture diagram (host/guest/vsock)
HowItWorks.svelte Step-by-step explanation
FAQ.svelte Accordion FAQ (client:visible)
CTA.svelte Call-to-action (client:visible)
Footer.svelte Footer with link columns
Section.svelte Reusable section wrapper
SectionHeader.svelte Reusable heading + subtitle
Card.svelte Reusable card component
Badge.svelte Reusable badge component
Icon.svelte SVG icon component
InstallCommand.svelte Copy-to-clipboard install snippet
All text lives in site/src/lib/data.ts as typed const exports:
| Export | Content |
|--------|---------|
| SITE | Name, tagline, description, URLs (GitHub, docs, releases) |
| NAV_LINKS | Top nav items |
| AGENTS | Supported AI agents list |
| SECURITY_BLOCKS | Three security pillars (isolation, inspection, control) |
| HOST_COMPONENTS | Host-side architecture diagram items |
| GUEST_COMPONENTS | Guest-side architecture diagram items |
| VSOCK_CHANNELS | Vsock port labels for architecture diagram |
| FAQS | FAQ question/answer pairs |
| FOOTER_COLUMNS | Footer link groups |
| MCP_TOOLS | MCP tool examples |
| PACKAGES | Pre-installed packages list |
| ROADMAP | Roadmap items |
Defined in site/src/styles/global.css using Tailwind v4 @theme tokens:
--color-accent (blue), --color-accent-secondary (purple), gradient between them--color-surface) and dark (--color-surface-dark) variants@utility classes: btn-primary (gradient), btn-dark, btn-outline, btn-outline-darksection-dark utility classSection.svelte and SectionHeader.svelte provide consistent spacing and headingsclient:load (Nav) or client:visible (FAQ, CTA)gradient-text utility for accent-colored headingsIcons use inline SVG paths from site/src/lib/icons.ts, rendered via Icon.svelte. Favicons in site/public/ are generated from graphics/icon/1024w/capsem-logo-color.png.
Take google/site-marketing from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.