This skill should be used when the user asks to "generate a website from a report", "convert markdown to React site", "create presentation website", "build interactive site from research", "turn my report into a website", "make my research interactive", "parse report for web", "scaffold Vite React project", "deploy to GitHub Pages", or needs guidance on markdown parsing strategy, component composition, interactive element detection, or static site generation from research documents.
Generates interactive React websites from research reports by parsing markdown into tabbed sections with calculators, timelines, and deployable static sites.
/plugin marketplace add reggiechan74/cc-plugins/plugin install report-to-web@cc-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/component-api.mdreferences/parsing-example.mdGenerate interactive React presentation websites from markdown research reports using Tailwind CSS v4 + shadcn/ui. Parse report structure into tabbed sections with interactive components, deploy as static sites to GitHub Pages.
Parse research report markdown into a structured site architecture:
Map markdown elements to React components:
| Markdown Pattern | React Component | Detection Rule |
|---|---|---|
> blockquote with legal/official text | StyledBlockquote | Contains legislation references, "section", "Act" |
| Tables with comparison data | ComparisonTable | 3+ columns, row headers describe same attributes |
| Tables with numerical data | DataTable or Calculator | Contains $, %, numerical values |
Footnote references [^N] | CitationCard | Inline superscript links to endnotes |
| Bullet/numbered lists | AnimatedList | Standard list rendering with reveal animations |
Bold markers [VERIFIED] etc. | Badge (shadcn) | Inline badge before content |
<!-- interactive: TYPE --> | Corresponding component | Explicit user marker |
Formula patterns X = A × B | Calculator | Mathematical expressions with variables |
Auto-detect interactive opportunities using these patterns:
Calculator candidates:
= with variable names on both sidesScenario candidates:
Timeline candidates:
Comparison candidates:
Support HTML comment markers for user control:
<!-- interactive: calculator -->
<!-- interactive: timeline -->
<!-- interactive: scenario -->
<!-- interactive: comparison -->
<!-- interactive: chart -->
Place markers immediately before the content block they apply to. Markers override AI detection.
Use Vite with React + Tailwind CSS v4 + shadcn/ui for fast builds and GitHub Pages compatibility.
Key config files:
vite.config.js — Set base to /<repo-name>/ for GitHub Pages, resolve.alias for @/, manualChunks for code splittingpostcss.config.js — @tailwindcss/postcss pluginjsconfig.json — @/ path alias to ./src/*components.json — shadcn config: tsx: false, style new-york, rsc: falsePackage dependencies:
react, react-dom — Core frameworkreact-markdown with remark-gfm — Render markdown content within componentsframer-motion — Animations for tab transitions and content revealslucide-react — Icons (search, external link, chevron, etc.)fuse.js — Lightweight fuzzy search for Knowledge Vaulttailwindcss, @tailwindcss/postcss, postcss — Tailwind CSS v4clsx, tailwind-merge, class-variance-authority — Utility class compositionradix-ui — Headless UI primitives for shadcn componentsshadcn — CLI for installing UI componentsAfter scaffolding, install shadcn UI components:
npx shadcn@latest add card input label table badge accordion collapsible slider button separator
Include .github/workflows/deploy.yml for automated deployment:
actions/deploy-pages@v4 for deploymentAlso include an npm run deploy script using gh-pages package as an alternative.
Each H2 section becomes a tab. Standard tab structure:
Each tab page follows this pattern:
TabPage
├── SectionRenderer (for each H3)
│ ├── Heading with gradient accent line
│ ├── Content (rendered markdown via ReactMarkdown)
│ └── InteractiveElement (if detected)
│ ├── Calculator (Card, Input, Label, Separator)
│ ├── ComparisonTable (Table, Button)
│ ├── TimelineView (Badge)
│ ├── ScenarioSlider (Card, Label, Separator)
│ └── CitationCard (Collapsible, Badge)
Parse report into reportData.js structured as:
reportData.meta → Site title, date, author
reportData.tabs[] → Tab definitions with sections
reportData.tabs[].sections[] → Section content with optional interactive configs
reportData.citations[] → All footnotes/endnotes with URLs
reportData.externalLinks[] → Deduplicated external URLs with labels
Interactive configurations go in interactiveConfig.js:
interactives[] → Array of interactive element definitions
.type → calculator | comparison | timeline | scenario
.tabId → Which tab contains this element
.sectionId → Which section within the tab
.config → Type-specific configuration (formula, inputs, data, etc.)
After scaffolding the project, install Vercel's agent skills for React code quality:
npx -y skills add vercel-labs/agent-skills --skill react-best-practices --skill web-design-guidelines --skill composition-patterns -y
Read the installed SKILL.md files and apply their rules when generating components:
These skills complement the bundled component templates by ensuring the generated code follows production-grade React patterns.
After generating all files:
npm install to install dependenciesnpm run build to verify production build succeedsFor detailed component API documentation, see ${CLAUDE_PLUGIN_ROOT}/skills/site-generation/references/component-api.md.
For a worked example of report parsing, see ${CLAUDE_PLUGIN_ROOT}/skills/site-generation/references/parsing-example.md.
For starter React component templates, see ${CLAUDE_PLUGIN_ROOT}/templates/src/components/.
For theme/registry selection, see ${CLAUDE_PLUGIN_ROOT}/skills/design-system/references/registry-guide.md.
Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.