Skill v1.0.0
Trusted Publisher100/100version: "1.0.0" name: site-marketing description: 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.
Marketing Website
The marketing site (capsem.org) is a single-page landing built with Astro 6 + Svelte 5 + Tailwind v4. Source lives in site/.
Dev workflow
cd site && pnpm run dev # localhost:4321cd site && pnpm run build # Production buildcd site && pnpm run preview # Preview production build
Architecture
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 packagesrc/pages/index.astro Single landing page, composes all sectionslayouts/Base.astro HTML shell (meta, fonts, skip-to-content)lib/data.ts All copy: site metadata, nav, features, FAQ, footerlib/icons.ts Icon SVG pathsstyles/global.css Tailwind theme tokens, base styles, button utilitiescomponents/Nav.svelte Top navigation (client:load)Hero.svelte Hero section with install commandFeatures.svelte Feature cards gridProductOverview.svelte Architecture diagram (host/guest/vsock)HowItWorks.svelte Step-by-step explanationFAQ.svelte Accordion FAQ (client:visible)CTA.svelte Call-to-action (client:visible)Footer.svelte Footer with link columnsSection.svelte Reusable section wrapperSectionHeader.svelte Reusable heading + subtitleCard.svelte Reusable card componentBadge.svelte Reusable badge componentIcon.svelte SVG icon componentInstallCommand.svelte Copy-to-clipboard install snippet
Content editing
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 |
Theme
Defined in site/src/styles/global.css using Tailwind v4 @theme tokens:
- Accent:
--color-accent(blue),--color-accent-secondary(purple), gradient between them - Surfaces: light (
--color-surface) and dark (--color-surface-dark) variants - Text: separate light-bg and dark-bg tokens, all WCAG AA compliant
- Buttons: 4 pill variants as
@utilityclasses:btn-primary(gradient),btn-dark,btn-outline,btn-outline-dark - Font: Inter (loaded from Google Fonts in Base.astro)
Component patterns
- Sections alternate light/dark backgrounds using
section-darkutility class Section.svelteandSectionHeader.svelteprovide consistent spacing and headings- Interactive components use Svelte hydration directives:
client:load(Nav) orclient:visible(FAQ, CTA) gradient-textutility for accent-colored headings
Graphics and icons
Icons 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.