Creates professional, interactive multi-page websites from project documentation using React 18 + TypeScript + Tailwind CSS. Features landing page with hero and KPI cards, dark sidebar navigation, hash-based routing, full trilingual i18n (EN/PT-BR/ES), Microsoft+GitHub logo branding, and end-to-end storytelling. Develops with Vite (hot reload), bundles to single portable HTML via Parcel. USE FOR: create interactive site, project portal, documentation site, interactive dashboard, transform .md deliverables into website, create landing page, build project visualization, interactive architecture site, client-facing web portal. DO NOT USE FOR: FigJam/Mermaid diagrams (use figjam-diagrams), presentations (use pptx-creator), Word documents (use docx-creator), Excel (use xlsx-creator), PDF (use pdf-creator).
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Creates professional, interactive multi-page websites from project documentation using React 18 + TypeScript + Tailwind CSS. Features landing page with hero and KPI cards, dark sidebar navigation, hash-based routing, full trilingual i18n (EN/PT-BR/ES), Microsoft+GitHub logo branding, and end-to-end storytelling. Develops with Vite (hot reload), bundles to single portable HTML via Parcel. USE FOR: create interactive site, project portal, documentation site, interactive dashboard, transform .md deliverables into website, create landing page, build project visualization, interactive architecture site, client-facing web portal. DO NOT USE FOR: FigJam/Mermaid diagrams (use figjam-diagrams), presentations (use pptx-creator), Word documents (use docx-creator), Excel (use xlsx-creator), PDF (use pdf-creator).
Interactive Sites
Create professional, interactive multi-page websites from project documentation. Uses Vite + React 18 + TypeScript + Tailwind CSS for development, bundles to a single portable HTML file via Parcel + html-inline. Every site features Microsoft+GitHub branding, trilingual i18n, dark sidebar navigation, and end-to-end storytelling.
Architecture
Development Mode
npm install && npm run dev
Vite dev server with hot module replacement at localhost:5173. Full React 18 + TypeScript + Tailwind CSS development experience with path aliases (@/).
Production Bundle
bash scripts/bundle.sh
Produces a single self-contained .html file with all JS, CSS, and images inlined. Opens in any browser — no server, no build step, no Node.js needed by the viewer.
Stack
Layer
Technology
Purpose
Framework
React 18
Component-based UI
Language
TypeScript (strict)
Type safety, i18n enforcement
Styling
Tailwind CSS 3.4
Utility-first CSS with Microsoft tokens
Dev server
Vite 6
Fast HMR, path aliases
Bundler
Parcel + html-inline
Single-file HTML output
Routing
useHash() hook
Hash-based, no react-router, works in single HTML
i18n
React Context + tx()
Full trilingual support (EN/PT-BR/ES)
Components
Custom lightweight
No shadcn/ui — under 200KB bundle
Key Decisions
No shadcn/ui — Custom lightweight components keep bundle under 200KB. shadcn/ui adds 40+ unneeded components and 500KB.
No react-router — Hash-based routing via useHash() hook works in single HTML file without a server.
Base64 logos — Images embedded as data URIs by default for full portability. --no-inline-images flag for workspace-local relative paths.
Project Structure
The template lives at .github/skills/interactive-sites/template/. The agent clones it to output/html/{project-slug}/ per project.
template/
├── package.json # Dependencies: React 18, Vite, Tailwind, Parcel
├── tsconfig.json # TypeScript strict, @/ path alias
├── vite.config.ts # Vite config with @/ alias, ./ base
├── tailwind.config.ts # Microsoft palette as Tailwind tokens
├── postcss.config.js # Tailwind processing
├── index.html # Entry HTML
├── public/
│ └── logos/ # Copy MS+GH and client logos here
├── scripts/
│ └── bundle.sh # Parcel → html-inline → single HTML
└── src/
├── main.tsx # React 18 createRoot
├── App.tsx # Shell: Header + Sidebar + Router + Footer
├── i18n.tsx # tx() helper + LangContext + T translations
├── types.ts # Shared TypeScript interfaces
├── hooks/
│ └── useHash.ts # Hash-based routing hook
├── components/
│ ├── Header.tsx # MS+GH logo left, client center, lang selector right
│ ├── Sidebar.tsx # Dark sidebar, collapsible, section icons
│ ├── Footer.tsx # Logos + version + confidential
│ ├── LangSelector.tsx # EN / PT-BR / ES dropdown
│ ├── Card.tsx # Content card with hover lift
│ ├── Table.tsx # Sortable table with sticky header
│ ├── Annotation.tsx # Info / Success / Warning / Critical boxes
│ ├── KpiCard.tsx # Metric card (value + label + trend)
│ ├── ExpandableSection.tsx # Click-to-expand panel
│ ├── FlowDiagram.tsx # SVG flow with nodes + arrows
│ ├── Badge.tsx # Status badges (PRODUCTIVE, IN DEV, DRAFT)
│ ├── CodeBlock.tsx # Dark-themed code display with copy
│ ├── Modal.tsx # Overlay for detail views
│ ├── Timeline.tsx # Gantt-like CSS grid
│ └── TabGroup.tsx # Horizontal tabs within a page
├── pages/
│ ├── Landing.tsx # Hero + KPIs + navigation grid
│ └── (project pages) # One component per content section
└── styles/
└── globals.css # Tailwind directives + custom utilities
Left: Microsoft+GitHub combined logo + project name + metadata
Center: Client logo (optional, hidden if not provided)
Right: Language selector dropdown
Logo Embedding
Default (portable): Logos converted to base64 data URIs by bundle.shWorkspace-local: Use --no-inline-images flag for relative paths: ./logos/logo-msft-github-color.png
Inline SVG Fallback
The Header component includes inline SVG Microsoft 4-window + GitHub Octocat as fallback when no image file is provided. This ensures the header always renders branded logos.
i18n System
tx() Helper Function
exportfunctiontx(obj: I18nString, lang: Lang): string {
if (typeof obj === 'string') return obj; // Technical term — pass throughreturn obj[lang] || obj.en; // Localized — resolve by lang
}