claude-enrichr-skillSAFE
A Claude Code skill that turns the Enrichr MCP into a reliable capture -> verify -> rebuild pipeline for cloning live sites: DOM, CSS, tokens, GSAP/scroll motion, WebGL/shaders, SVG, 3D, and assets.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
A Claude Code skill that turns the [Enrichr](https://enrichr.dev) MCP into a reliable site-cloning pipeline — capture a live site's DOM, CSS, design tokens, GSAP/scroll animation, WebGL/shaders, SVG, 3D scene, and every asset; verify what's actually running; then rebuild the whole site or isolate a single effect, in Claude Code.
Quick start (60 seconds)
- Get a free API key at enrichr.dev (free plan, no card).
- Connect the MCP to Claude Code:
claude mcp add --transport http enrichr https://enrichr.dev/mcp \ --header "X-API-Key: enrichr_your-key-here"
- Install this skill:
npx skills add chrisjeffries24/claude-enrichr-skill
- Ask Claude:
Clone the hero section of https://linear.app as a standalone component. Capture it first, verify what actually animates, then rebuild it.
Using Cursor, VS Code, Windsurf or ChatGPT instead? Setup for each client is at enrichr.dev/connect. Want to see what a capture finds first? Try the free font finder, palette extractor and animation library checker, or browse design breakdowns of 100+ famous sites.
Why this exists
The Enrichr MCP is powerful: it renders a page in a real browser and reports what actually happened — computed styles, motion measured by scrolling,
626fa22690a5OBSERVED · 2026-10-14Install
Commands as the repository documents them. They are shown, not run.
claude mcp add --transport http enrichr https://enrichr.dev/mcp \
npx skills add chrisjeffries24/claude-enrichr-skill
git clone https://github.com/chrisjeffries24/claude-enrichr-skill.git ~/.claude/skills/enrichr
git clone https://github.com/chrisjeffries24/claude-enrichr-skill.git .claude/skills/enrichr
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned | |
| cursor | mentioned | |
| windsurf | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: enrichr
description: How to correctly drive the Enrichr MCP tools (reverse_engineer_dom, extract_site_profile, extract_design_system, reverse_engineer_animations, reverse_engineer_webgl, extract_assets, interact_with_page, take_screenshot, ocr_image, ocr_document, rebuild_brief, scrape_url, crawl_site, map_site) to reverse-engineer, clone, mirror, or pull design/animation reference from a live website — and then rebuild it in Claude Code, either the whole site or one isolated section/element. Use this whenever someone asks to "clone", "rebuild", "reverse-engineer", "recreate", "grab", "pull down", "copy", or "mirror" a site or app, wants an offline copy of a page, wants a specific effect lifted (mouse follower, cursor trail, WebGL/shader background, GSAP/ScrollTrigger animation, SVG morph, parallax, page transition), or wants things extracted from a URL — design tokens, a color palette, animation timings, the 3D scene, or "everything, verbatim." Load this BEFORE the first Enrichr call in a session, not after something breaks — it exists specifically to prevent the expensive mistakes made without it: (1) treating something found in a static capture (a shader, a uniform, a CSS rule, an animation in the bundle) as proof it is actually active on the page, when static analysis only shows what exists, not when it fires; (2) shipping a local rebuild that silently 404s or renders blank because of a well-known bundler quirk in how Enrichr localizes assets; and (3) stopping at the text brief instead of downloading the full capture zip that contains the DOM, assets, CSS, shaders, and 3D export. Also covers OCR of canvas/image-baked text, mandatory behavioral verification against the live URL, isolating one element vs. rebuilding the whole site, and which parts of a capture are safe to reuse verbatim versus which need original reimplementation.
---
# Enrichr: capture → verify → rebuild
Enrichr renders a page in a real browser and reports **what actually happened** — the computed styles after the cascade resolved, motion measured by physically scrolling, shaders compiled on a real GPU, the 3D scene read out of the running renderer. That is its whole edge over a plain fetch, and it is also the source of every mistake people make with it: an Enrichr capture is an **X-ray, not source code**. It shows you what is inside the page; it does not tell you what the page is *doing* with it. Almost everything in this skill exists to close that gap.
Work in three phases, always in this order:
1. **Capture** — pull the right data with the narrowest tool that answers the question (§1–§2), and for any real rebuild, download the full zip (§3).
2. **Verify** — confirm behaviorally, against the live URL, that the thing you think you found is actually firing (§5). This is the step people skip and regret.
3. **Rebuild** — reconstruct the whole site or isolate one element (§6), serve it, fix the known breakages (§4), and compare it back against the original (§8).
## 1. Match the tool to the intent
Do not reach for `rebuild_brief` reflexively — it is the heaviest call (a full browser session, tens of seconds, real credits) and is meant for one job: producing a buildable local mirror. Route by what is actually being asked:
| What they actually want | Tool |
|---|---|
| Plain text / markdown off a page | `scrape_url` (never drive a browser for this) |
| Quick structural/content read — headings, links, text | `reverse_engineer_dom` |
| Color palette / type scale / spacing / tokens | `extract_design_system` |
| How a scroll/hover/GSAP animation works | `reverse_engineer_animations` → then **verify per §5** |
| Shaders, WebGL scene, 3D internals | `reverse_engineer_webgl` |
| Full inventory of images / fonts / video / 3D | `extract_assets` |
| One page load, everything at once (tokens, fonts, framework internals, asset inventory, security, CDN) | `extract_site_profile` |
| Multiple pages / whole-site structure | `map_site`, then `crawl_site` |
| A mouse follower / cursor effect / hover interaction | `interact_with_page` (**behavior only** — see §5) |
| Text baked into canvas / images / video frames | `ocr_image` / `ocr_document` |
| "Clone this", "rebuild this", "grab everything verbatim" | `rebuild_brief` — see §3 |
If the ask is ambiguous ("pull down this site"), find out what they intend to *do* with it — study a technique, build an offline reference, or ship a working copy. That answer decides how many tools you need and how hard §7 (IP guardrails) constrains what you hand back.
**For the complete catalog of every capture subsystem** — DOM, applied CSS, tokens, fonts, GSAP/ScrollTrigger/Framer/Lenis, cursor effects, WebGL/GLSL, the glTF 3D export, SVG, assets, framework payloads, responsive states, interaction states, and exactly which tool and which file in the zip gives you each — read **`references/capture-subsystems.md`**. Consult it whenever you need a subsystem that is not obvious from the table above, or when someone asks for "everything."
## 2. "Everything" means run the surfaces you actually need, narrowly
When someone says "get everything — mouse follower, WebGL, GSAP, DOM, SVG, assets," that is not one magic call. `rebuild_brief` covers most of it in a single load (DOM, CSS, assets, animations, shaders, 3D, screenshots, motion frames), so start there and download the zip. Then fill specific gaps with narrow calls rather than re-running the full capture:
- Cursor/mouse-follower and hover behavior → `interact_with_page` on the live URL (the zip cannot record an interaction that never happened during capture).
- Canvas/image text → `ocr_image` over the screenshots and `motion-frames/`.
- Anything the brief flagged as "not captured" → the matching narrow tool.
Prefer two narrow calls over one full re-capture. Each Enrichr call holds a real browser open and costs credits, and re-running `rebuild_brief` to grab one thing an earlier call already has is waste.
## 3. `rebuild_brief` always means: dTrust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (1)
raw = base64.b64decode(candidate, validate=True)
Gates applied: no_behavioural_pass.
626fa22690a5full audit observations/trust-audit/skill/chrisjeffries24__claude-enrichr-skill.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-14 | 626fa22690a5 | SAFE | B | 89 | first audit |
Questions
What does the claude-enrichr-skill skill do?
A Claude Code skill that turns the Enrichr MCP into a reliable capture -> verify -> rebuild pipeline for cloning live sites: DOM, CSS, tokens, GSAP/scroll motion, WebGL/shaders, SVG, 3D, and assets.
Is claude-enrichr-skill safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can claude-enrichr-skill access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
Which assistants does claude-enrichr-skill work with?
Its documentation mentions claude-code, cursor and windsurf. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (626fa22690a5), read on 2026-10-14. The repository is watched, and a new audit runs when it changes — this is the first audit.