| name | website-cloner |
| description | Build an improved website clone from a URL via 6-phase gated workflow (Vite/React/shadcn/Tailwind + GitHub Pages). Use for end-to-end site rebuilds. Don't use for single-phase work. |
| license | MIT |
| effort | high |
| metadata | {"version":"1.1.6","author":"Luong NGUYEN <luongnv89@gmail.com>"} |
Website Cloner
6-phase orchestrator that clones any website and produces an improved version โ better performance, UI/UX, SEO, and security โ built with Vite + React + shadcn/ui + Tailwind CSS, deployable to GitHub Pages.
When to Use
Trigger when the user asks to:
- Clone, rebuild, or recreate a website ("clone this site", "make a better version of ")
- Improve a website's performance, UI/UX, or SEO by analyzing and rebuilding it
- Start a full website improvement workflow from a URL
Do not use for single-phase work (use the specific sibling skill directly).
Prerequisites
- A target URL (publicly reachable preferred).
- Write access to create a local project dir (defaults under
~/workspace/clones or $CLONE_DIR).
- The sibling phase skills installed (website-analyzer, website-clone-report, etc.).
- Optional: GitHub token if you want Pages deploy automation in Phase 5.
- User approval at gates (explicit confirmation before Phases 3, 4, 5 advance).
If a prerequisite is missing, stop and report it โ do not guess paths or credentials.
Workflow
Phase 1 โ Analyze โ website-analyzer
Phase 2 โ Report (gate) โ website-clone-report
Phase 3 โ Propose (gate) โ website-improvement-prd (outputs prd.md)
Phase 4 โ Plan (gate) โ website-implementation-plan (outputs tasks.md)
Phase 5 โ Build โ website-builder
Phase 6 โ Final Report โ website-clone-final-report
Approval gates after Phase 2, 3, and 4: the orchestrator must not advance without explicit user approval.
Artifacts (each written once, then referenced by name in the phases below): analysis.json โ Phase 1's structured findings; report.md โ Phase 2's plain-language summary; prd.md โ Phase 3's improvement proposal; tasks.md โ Phase 4's phased implementation plan; builder-metadata.json โ Phase 5's build-output metadata (asset counts, Pages URL) consumed by Phase 6.
Layout
This umbrella and its phase skills live together in a single suite folder:
skills/website-cloner/ โ this umbrella
โโโ SKILL.md โ orchestrator (you are here)
โโโ website-analyzer/ โ Phase 1
โโโ website-clone-report/ โ Phase 2
โโโ website-improvement-prd/ โ Phase 3
โโโ website-implementation-plan/ โ Phase 4
โโโ website-builder/ โ Phase 5
โโโ website-clone-final-report/ โ Phase 6
Why nested: the phases are tightly coupled to this umbrella's data flow (analysis JSON โ report โ PRD โ tasks โ built site โ final report). Keeping them in one folder makes the suite easy to browse, audit, and ship together. Each phase skill stays independently installable โ the installers (install.sh, remote-install.sh) discover both top-level and nested skills.
When invoking phase skills below, refer to them by name (/website-analyzer, /website-clone-report, โฆ); the runtime resolves names regardless of filesystem path.
See the individual phase skill docs for their full references/ and scripts/. This orchestrator stays short to fit the agent's context budget.
Repo Sync Before Edits (mandatory)
Before modifying files in a repository:
branch="$(git rev-parse --abbrev-ref HEAD)"
git fetch origin
git pull --rebase origin "$branch"
If dirty, stash first:
git stash push -u -m "website-cloner: pre-sync"
branch="$(git rev-parse --abbrev-ref HEAD)"
git fetch origin && git pull --rebase origin "$branch"
git stash pop
If origin is missing or rebase conflicts occur, stop and ask.
Setup
- Resolve working directory โ the directory where the cloned website will be built. If
$CLONE_DIR is set, use it. Otherwise ask the user once and save to ~/.config/website-cloner-dir.txt. Default: ~/workspace/clones.
- Create project folder under resolved root:
YYYY_MM_DD_<slug_from_url>/
- Set
$PROJECT_DIR to the created folder path.
- If no URL provided in
$ARGUMENTS, ask the user for one.
Phase 1: Understand the Website
Invoke website-analyzer with the URL:
/website-analyzer <url> --output "$PROJECT_DIR/analysis.json"
The analyzer produces a structured analysis covering: UI/UX, category, style, performance (LCP, CLS, TTFB, page weight, request count), surface-level security, and SEO (overall score + per-dimension breakdown).
Check: Analysis file exists and covers all 6 dimensions. If any dimension is missing, note it but continue โ partial results are acceptable for Phase 2.
Step Completion Report:
โ Analyze (step 1 of 6 โ <site name>)
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
UI/UX profile: โ pass | ร partial โ <gap>
Category detected: โ pass (<category>)
Style analysis: โ pass | ร partial โ <gap>
Performance metrics: โ pass (LCP=<val> CLS=<val>)
Security surface: โ pass | ร partial โ <gap>
SEO score: โ pass (<score>/100)
____________________________
Result: PASS | PARTIAL
Phase 2: End-User Report (GATE)
Invoke website-clone-report with the analysis output:
/website-clone-report "$PROJECT_DIR/analysis.json" --output "$PROJECT_DIR/report.md"
This skill produces a plain-language report for non-technical readers and prompts for approval before persisting. The orchestrator waits for user approval here.
Check: report.md exists and was approved by the user.
Step Completion Report:
โ Report (step 2 of 6 โ <site name>)
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
Report written: โ pass (report.md)
User approved: โ pass | ร pending
____________________________
Result: PASS | BLOCKED
If not approved, do not advance. Ask the user to review the report and approve or request changes.
Phase 3: Improvement Proposal (GATE)
Invoke website-improvement-prd with the approved report and analysis:
/website-improvement-prd "$PROJECT_DIR/report.md" "$PROJECT_DIR/analysis.json" --output "$PROJECT_DIR/prd.md"
This skill produces a full improvement proposal with what/why/value for each change and writes prd.md after user approval.
Check: prd.md exists and was approved.
Step Completion Report:
โ Proposal (step 3 of 6 โ <site name>)
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
prd.md written: โ pass
User approved: โ pass | ร pending
Changes catalogued: โ pass (<N> proposed changes)
____________________________
Result: PASS | BLOCKED
Phase 4: Implementation Plan (GATE)
Invoke website-implementation-plan with prd.md:
/website-implementation-plan "$PROJECT_DIR/prd.md" --output "$PROJECT_DIR/tasks.md"
This skill produces a phased implementation plan with landing page first, asset collection vs. creation, and individual tasks โ written to tasks.md after user approval.
Check: tasks.md exists and was approved.
Step Completion Report:
โ Plan (step 4 of 6 โ <site name>)
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
tasks.md written: โ pass
User approved: โ pass | ร pending
Phases defined: โ pass (โฅ 2 phases)
Landing page first: โ pass
____________________________
Result: PASS | BLOCKED
Phase 5: Build
Invoke website-builder with tasks.md and prd.md:
/website-builder "$PROJECT_DIR/tasks.md" "$PROJECT_DIR/prd.md" --output "$PROJECT_DIR/"
This skill executes the plan, builds the site (Vite + React + shadcn/ui + Tailwind), and deploys static assets. It should emit metadata for Phase 6.
Step Completion Report:
โ Build (step 5 of 6 โ <site name>)
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
Landing page built: โ pass
Assets collected: โ pass (<N> assets)
Assets created: โ pass (<N> assets)
GitHub Pages URL: โ pass (<url>)
____________________________
Result: PASS | PARTIAL
Phase 6: Final Comparison Report
Invoke website-clone-final-report with the analysis baseline and builder metadata:
/website-clone-final-report "$PROJECT_DIR/analysis.json" "$PROJECT_DIR/builder-metadata.json" --output "$PROJECT_DIR/final-report.md"
This skill produces a before/after comparison covering performance, SEO, security, UI/UX deltas, deviations, and the GitHub Pages URL.
Step Completion Report:
โ Final Report (step 6 of 6 โ <site name>)
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
final-report.md: โ pass
Performance delta: โ pass (beforeโafter)
SEO delta: โ pass (beforeโafter)
Deviations listed: โ pass | ร none
____________________________
Result: PASS
Expected Output
โ Website Cloner โ <site name>
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Phase 1 Analyze โ pass
Phase 2 Report โ approved
Phase 3 Proposal โ approved (prd.md)
Phase 4 Plan โ approved (tasks.md)
Phase 5 Build โ pass
Phase 6 Final Report โ pass
GitHub Pages: https://<user>.github.io/<repo>/
Project: <project_dir>
Edge Cases
- Unreachable URL: Stop Phase 1, report error, do not continue. Ask user for a different URL.
- JS-heavy SPA with no crawlable content: Note the limitation in Phase 1, proceed with best-effort analysis. The build phase may need user-supplied assets to compensate.
- User denies approval at any gate: Stop the pipeline. Do not auto-proceed. The user can re-run the skill to resume.
- Missing sibling skill: If a sibling skill is not available, skip that phase and note it in the report. Continue with remaining phases if possible.
- Partial Phase 1 results: If the analyzer returns partial data (e.g., no SEO score), proceed to Phase 2 with a note that the missing dimension was not evaluated.