Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Audits and strips Lovable scaffolding from Vite + React projects — removes lovable-tagger, swaps placeholder assets, prunes unused Radix deps, and cleans generated docs so the codebase ships as yours.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 183% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 203% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 156% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 267% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 82% | 0% |
> Remove every trace of Lovable scaffolding and ship the project as your own. > Made with agentic-awesome-skills · author: whoisabhishekadhikari
Lovable (lovable.dev) bootstraps Vite + React + shadcn/ui projects with its own tagger dependency, branding, placeholder assets, and generated markdown docs baked in. Most developers export from Lovable and want a clean, ownable codebase before shipping or open-sourcing. This skill covers all 14 areas where Lovable leaves fingerprints.
lovable-tagger in package.jsonCLEANUP_SUMMARY.md, DEPLOYMENT_GUIDE.md, or DEVELOPMENT_SUMMARY.mdindex.html still has a generic <title> or Lovable faviconLovable adds three categories of scaffolding that must be removed:
lovable-tagger dev dep + componentTagger() call in vite.config.ts.This is the only runtime hook; removing it is always safe.
favicon.ico/png, og-image.png, logo.png, generic <title>,and a Lovable project URL in README.md.
CLEANUP_SUMMARY.md, DEPLOYMENT_GUIDE.md, DEVELOPMENT_SUMMARY.md,LOGO_UPDATE.md in the project root.
Removing deps before editing source files avoids lockfile conflicts. Cleaning docs last means the README reflects the already-cleaned project.
Lovable pre-installs the full shadcn/ui component set (~29 components) and all Radix UI primitives (~30 packages). Most projects use 5–10. The unused ones are safe to remove but @radix-ui/react-slot must be kept — it is an indirect dep used internally by many shadcn components via the asChild prop.
# Welcome to your Lovable project with the real project titlehttps://lovable.dev/projects/REPLACE_WITH_PROJECT_ID✅ After stripping, read the README end-to-end. Offer to write a replacement intro paragraph if large sections were removed.
"lovable-tagger" from devDependencies"name" from "vite_react_shadcn_ts" to the real project name (kebab-case)scripts block for "lovable" or "lovable:*" entries and remove them<!-- security-allowlist: grep for scanning package.json content, read-only, no network -->
bashgrep -n "lovable" package.json
import { componentTagger } from "lovable-tagger"mode === 'development' && componentTagger() from the plugins array.filter(Boolean) if it was only present to handle the conditional tagger<!-- security-allowlist: grep for scanning vite config, read-only -->
bashgrep -n "lovable\|componentTagger\|filter(Boolean)" vite.config.ts
<title> with the real product name<!-- Generated by Lovable --> comments or Lovable meta tags<!-- security-allowlist: grep for scanning HTML file, read-only -->
bashgrep -in "lovable\|generator" index.html
Replace these files (keep filenames, swap content):
| File | Action | |---|---| | favicon.ico | Replace with real icon | | favicon.png | Replace with real icon | | og-image.png / logo.png | Replace with real brand assets | | placeholder.svg | Usually unused — safe to delete |
✅ Flag which files are actually referenced in <head> vs dead weight so the user knows what to prioritise.
src/main.tsx — scan for Lovable HOCs, wrappers, or commentssrc/App.tsx — same// generated by Lovable headers<!-- security-allowlist: grep over source files, read-only, no network -->
bashgrep -rn "lovable\|Lovable" src/ --include="*.tsx" --include="*.ts"
<!-- security-allowlist: npm uninstall removes a dev-only package, local filesystem only -->
bashnpm uninstall lovable-tagger grep "lovable-tagger" package-lock.json
Use yarn remove or pnpm remove if the project uses those instead.
Double-check after Area 2 — scripts are sometimes injected separately from deps:
<!-- security-allowlist: grep, read-only -->
bashgrep -n '"lovable' package.json
<!-- security-allowlist: grep over local env files, read-only, no credentials transmitted -->
bashgrep -rin "lovable" .env .env.local .env.example 2>/dev/null \ | sed -E 's/([A-Za-z_][A-Za-z0-9_]*LOVABLE[A-Za-z0-9_]*=).*/\1[REDACTED]/I'
Remove any Lovable API keys or project IDs. If a variable is Lovable-only, delete the entire line — don't leave an empty key.
Delete or repurpose these common Lovable-generated files:
CLEANUP_SUMMARY.mdDEPLOYMENT_GUIDE.mdDEVELOPMENT_SUMMARY.mdLOGO_UPDATE.md<!-- security-allowlist: grep over markdown files, read-only -->
bashgrep -rln "lovable\|Lovable" *.md 2>/dev/null
✅ Skim each file before deleting — Lovable docs sometimes contain useful architecture notes worth preserving in a rewritten CONTRIBUTING.md or ARCHITECTURE.md.
Usually clean — confirm and move on:
<!-- security-allowlist: grep over config files, read-only -->
bashgrep -in "lovable" \ public/robots.txt public/sitemap.xml public/_redirects \ vercel.json netlify.toml 2>/dev/null
After replacing og-image.png, update OG meta in index.html:
html<meta property="og:image" content="/og-image.png" /> <meta property="og:url" content="https://your-domain.com" /> <meta property="og:title" content="Your Real Title" />
<!-- security-allowlist: grep and ls on local git config, read-only -->
bashgrep -in "lovable" .gitignore ls .git/hooks/
Remove any Lovable-specific .gitignore entries or commit hooks.
Step 1 — Map what's actually imported
<!-- security-allowlist: grep over source files, read-only, writes to private temp dir only -->
bashtmpdir="$(mktemp -d "${TMPDIR:-/tmp}/lovable-cleanup.XXXXXX")" || exit 1 grep -rh "from [\"']@radix-ui/" src/ --include="*.tsx" --include="*.ts" \ | grep -oP "from [\"']\K@radix-ui/[^\"']+" | sort -u > "$tmpdir/radix-used.txt" grep -rh "from [\"']@/components/ui/" src/ --include="*.tsx" \ | grep -oP "from [\"']\K@/components/ui/[^\"']+" | sort -u > "$tmpdir/shadcn-used.txt"
Step 2 — Diff against installed
<!-- security-allowlist: grep and diff on local package.json and private temp files, read-only -->
bashgrep -oP '"@radix-ui/[^"]+' package.json | tr -d '"' | sort > "$tmpdir/radix-installed.txt" diff "$tmpdir/radix-installed.txt" "$tmpdir/radix-used.txt"
Step 3 — Bulk remove & verify
<!-- security-allowlist: npm uninstall removes unused local packages, no network mutation -->
bashnpm uninstall @radix-ui/react-accordion @radix-ui/react-alert-dialog # etc. npm run build
components.json — verify style, baseColor, and aliases match the real projecteslint.config.js — usually standard; quick scan only<!-- security-allowlist: grep on config files, read-only -->
bashgrep -in "lovable" components.json eslint.config.js
<!-- security-allowlist: recursive grep across project directory, read-only, no network -->
bashgrep -rn "lovable\|Lovable\|LOVABLE\|lovable-tagger\|lovable\.dev" \ --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" \ --include="*.json" --include="*.md" --include="*.html" --include="*.toml" \ --include="*.yaml" --include="*.yml" --include="*.txt" \ . 2>/dev/null \ | grep -v "node_modules\|\.git\|dist\|build" \ | sed -E 's/([A-Za-z_][A-Za-z0-9_]*LOVABLE[A-Za-z0-9_]*=).*/\1[REDACTED]/I'
User: I just exported my project from Lovable. Clean it up.
Agent:
1. Runs master scan — finds 23 matches across 8 files
2. Uninstalls lovable-tagger, renames package.json "name"
3. Strips vite.config.ts of componentTagger
4. Updates index.html title, removes generator comment
5. Flags 4 markdown docs for deletion, skims each first
6. Produces cleanup reportUser: Just prune the unused Radix packages from my Lovable project.
Agent:
1. Runs grep diff (Area 13 only)
2. Identifies 18 unused @radix-ui packages
3. Removes them in bulk, keeps @radix-ui/react-slot
4. Runs npm run build to verify — passes cleannpm run build passes after every batch of changes@radix-ui/react-slot — it's an indirect dep of most shadcn componentsLOVABLE_PROJECT_ID= — delete the whole linewhat needs replacing. The user must supply real assets.
not caught by a direct grep. Always verify with npm run build.
components.json aliases automatically — it only scans andflags mismatches for the user to fix manually.
functions) — those require separate review.
Symptoms: Module not found error for a @radix-ui/* package Solution: Re-add the missing package. Open src/components/ui/*.tsx and search for the from '@radix-ui/...' import to find which component depends on it.
Symptoms: grep "lovable-tagger" package-lock.json returns results Solution: Delete node_modules/ and package-lock.json, then run npm install fresh.
Symptoms: Browser tab shows "Lovable" or "Vite App" despite edits Solution: Check for a <Helmet> or <Head> component in src/App.tsx or a layout wrapper — React-level title tags override index.html at runtime.
@vite-config — Vite configuration best practices@shadcn-setup — shadcn/ui installation and customization@react-cleanup — general React project hygieneAfter completing the audit, produce a cleanup report:
## ✅ Cleaned
<list of changes made>
## ⚠️ Needs your input
<items needing a decision — brand assets, project name, domain>
## 🗑️ Deferred (safe to do later)
<e.g. unused dep pruning, OG image swap>Made with agentic-awesome-skills · author: whoisabhishekadhikari
Other measured skills in the registry, with their headline benchmark lift.