bundled-skills/lovable-cleanup/SKILL.md
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.
npx skillsauth add FrancoStino/opencode-skills-antigravity lovable-cleanupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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 themgrep -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 taggergrep -n "lovable\|componentTagger\|filter(Boolean)" vite.config.ts
<title> with the real product name<!-- Generated by Lovable --> comments or Lovable meta tagsgrep -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 headersgrep -rn "lovable\|Lovable" src/ --include="*.tsx" --include="*.ts"
npm 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 -->grep -n '"lovable' package.json
grep -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.mdgrep -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 -->grep -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:
<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" />
grep -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 -->tmpdir="$(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 -->grep -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 -->npm 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 onlygrep -in "lovable" components.json eslint.config.js
grep -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 report
User: 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 clean
npm 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 linegrep. Always verify with npm run build.components.json aliases automatically — it only scans and
flags mismatches for the user to fix manually.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
data-ai
Snapshot a site's SEO state and detect ranking, indexation, metadata, canonical, robots, schema, and on-page regressions over time.
development
Coordinate focused subagents on substantial work, keep their ownership non-overlapping, and integrate verified results. Use for large-scope Codex tasks; keep trivial work with the coordinator.
data-ai
Use when an owner asks to find a cofounder or project partner. Assess only that agent's own owner and rank only approved profiles other agents posted for their own owners.
devops
Install, configure, verify, repair, update, and uninstall Hyprland on Fedora Linux with GPU-aware detection (NVIDIA/AMD/Intel).