Web Clone
Jane-xiaoer/claude-skill-web-clone
网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…
Prevents common mistakes and prohibited practices in vite-threejs projects.
$ npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hexianWeb/Third-Person-MC vtj-anti-patterns --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hexianWeb/Third-Person-MC.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agent/skills/vtj-anti-patterns .claude/skills/vtj-anti-patterns && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "vtj-anti-patterns" agent skill from https://github.com/hexianWeb/Third-Person-MC/tree/main/.agent/skills/vtj-anti-patterns into .claude/skills/vtj-anti-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vtj-anti-patterns", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hexianWeb/Third-Person-MC/tree/main/.agent/skills/vtj-anti-patternsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hexianWeb/Third-Person-MC vtj-anti-patterns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hexianWeb/Third-Person-MC.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agent/skills/vtj-anti-patterns .agents/skills/vtj-anti-patterns && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "vtj-anti-patterns" agent skill from https://github.com/hexianWeb/Third-Person-MC/tree/main/.agent/skills/vtj-anti-patterns into .agents/skills/vtj-anti-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vtj-anti-patterns", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hexianWeb/Third-Person-MC vtj-anti-patterns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hexianWeb/Third-Person-MC.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agent/skills/vtj-anti-patterns .cursor/skills/vtj-anti-patterns && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "vtj-anti-patterns" agent skill from https://github.com/hexianWeb/Third-Person-MC/tree/main/.agent/skills/vtj-anti-patterns into .cursor/skills/vtj-anti-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vtj-anti-patterns", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hexianWeb/Third-Person-MC.git --path .agent/skills/vtj-anti-patterns--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hexianWeb/Third-Person-MC vtj-anti-patterns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hexianWeb/Third-Person-MC.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agent/skills/vtj-anti-patterns .gemini/skills/vtj-anti-patterns && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "vtj-anti-patterns" agent skill from https://github.com/hexianWeb/Third-Person-MC/tree/main/.agent/skills/vtj-anti-patterns into .gemini/skills/vtj-anti-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vtj-anti-patterns", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hexianWeb/Third-Person-MC vtj-anti-patternsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hexianWeb/Third-Person-MC.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agent/skills/vtj-anti-patterns .github/skills/vtj-anti-patterns && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "vtj-anti-patterns" agent skill from https://github.com/hexianWeb/Third-Person-MC/tree/main/.agent/skills/vtj-anti-patterns into .github/skills/vtj-anti-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vtj-anti-patterns", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hexianWeb/Third-Person-MC vtj-anti-patterns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hexianWeb/Third-Person-MC.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agent/skills/vtj-anti-patterns .opencode/skills/vtj-anti-patterns && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "vtj-anti-patterns" agent skill from https://github.com/hexianWeb/Third-Person-MC/tree/main/.agent/skills/vtj-anti-patterns into .opencode/skills/vtj-anti-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vtj-anti-patterns", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
vtj-anti-patternsPrevents common mistakes and prohibited practices in vite-threejs projects.
Vtj Anti Patterns is an agent skill from hexianWeb/Third-Person-MC. Prevents common mistakes and prohibited practices in vite-threejs projects. Use before writing code to avoid bugs, memory leaks, and maintenance issues.
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development, covering 3D graphics and WebGL and Performance optimization. It works with Three.js and Vue.js. The repository describes itself as: Three.js web version Minecraft in browser. The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 490203c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Vtj Anti Patterns loads about 1.5k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 289 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from hexianWeb/Third-Person-MC at commit 490203c, republished under its MIT licence (© hexianWeb). 289 words, ~1,494 tokens.
.claude/skills/vtj-anti-patterns/SKILL.md (or your agent's skills folder).本文档列出本项目中 禁止的做法。违反这些规则会导致 bug、内存泄漏或维护困难。
在编写任何代码之前,请先检查此列表。
| 禁止 | 原因 | 正确做法 |
|---|---|---|
as any | 隐藏类型错误 | 正确定义类型 |
@ts-ignore | 绕过检查 | 修复类型问题 |
@ts-expect-error | 绕过检查 | 修复类型问题 |
// ❌ FORBIDDEN
const value = someObject as any
// @ts-ignore
problematicCode()
// ✅ CORRECT
const value = someObject // 确保类型正确| 禁止 | 原因 | 正确做法 |
|---|---|---|
| 空 catch 块 | 吞掉错误,调试困难 | 记录或重新抛出 |
| 删除失败的测试 | 隐藏问题 | 修复测试或标记 skip |
// ❌ FORBIDDEN
try {
riskyOperation()
}
catch (e) {} // 空 catch!
// ✅ CORRECT
try {
riskyOperation()
}
catch (e) {
console.error('Operation failed:', e)
// 或重新抛出
throw e
}| 禁止 | 原因 | 正确做法 |
|---|---|---|
| 缺少 destroy() | 内存泄漏 | 涉及 Object3D 必须实现 |
| 不清理事件监听 | 内存泄漏 | destroy() 中 emitter.off() |
| 不 dispose 材质/几何体 | GPU 内存泄漏 | 销毁时 dispose() |
// ❌ FORBIDDEN: 创建 mesh 但没有 destroy
class BadComponent {
constructor() {
this.mesh = new THREE.Mesh(...)
this.scene.add(this.mesh)
emitter.on('event', this.handler.bind(this))
}
// 没有 destroy() → 泄漏!
}
// ✅ CORRECT
class GoodComponent {
constructor() {
this.mesh = new THREE.Mesh(...)
this.scene.add(this.mesh)
this._boundHandler = this.handler.bind(this)
emitter.on('event', this._boundHandler)
}
destroy() {
emitter.off('event', this._boundHandler)
this.scene.remove(this.mesh)
this.mesh.geometry?.dispose()
this.mesh.material?.dispose()
this.mesh = null
}
}| 禁止 | 原因 | 正确做法 |
|---|---|---|
| 手动计算 NDC | 不一致,易出错 | 使用 iMouse.normalizedMouse |
| 直接监听 window 事件 | 绕过输入系统 | 使用 mitt 事件 |
| 匿名事件监听器 | 无法清理 | 保存函数引用 |
// ❌ FORBIDDEN
const x = (event.clientX / window.innerWidth) * 2 - 1
window.addEventListener('keydown', e => this.handle(e))
emitter.on('event', data => this.process(data))
// ✅ CORRECT
const ndc = this.iMouse.normalizedMouse
emitter.on('input:jump', this._boundHandler) // 保存引用| 禁止 | 原因 | 正确做法 |
|---|---|---|
| Vue 直接操作 Three.js | 破坏解耦 | 通过 mitt 事件 |
| Vue 导入 3D 组件类 | 职责混淆 | 只通过事件交互 |
| Three.js 直接写 Pinia | 违反数据流 | emit 事件让 Vue 处理 |
// ❌ FORBIDDEN (在 Vue 中)
import Experience from '@three/experience.js'
const exp = new Experience()
exp.world.player.setPosition(0, 0, 0)
// ✅ CORRECT
emitter.emit('game:player-teleport', { x: 0, y: 0, z: 0 })| 禁止 | 原因 | 正确做法 |
|---|---|---|
debuggerInit() | 命名不一致 | 使用 debugInit() |
setDebug() | 命名不一致 | 使用 debugInit() |
| 直接访问 debug.ui | 跳过 active 检查 | 先检查 debug.active |
// ❌ FORBIDDEN
debuggerInit() { ... }
setDebug() { ... }
this.debug = this.experience.debug.ui
// ✅ CORRECT
constructor() {
this.debug = this.experience.debug
if (this.debug.active) {
this.debugInit()
}
}
debugInit() {
this.debugFolder = this.debug.ui.addFolder(...)
}| 禁止 | 原因 | 正确做法 |
|---|---|---|
| 通过参数传递 deltaTime | 不一致 | 通过 Experience 访问 |
// ❌ FORBIDDEN
update(deltaTime) {
this.mesh.rotation.y += deltaTime
}
// ✅ CORRECT
update() {
const delta = this.experience.time.delta
this.mesh.rotation.y += delta * 0.001
}| 禁止 | 原因 | 正确做法 |
|---|---|---|
| 着色器放 js 目录 | 组织混乱 | 放 src/shaders/ |
| 无调试面板的 uniform | 无法调参 | 必须有 debugInit |
| 颜色不用 view: 'color' | 调参困难 | Tweakpane 用 color view |
// ❌ FORBIDDEN
import shader from './world/effect.glsl' // 在 js 目录
folder.addBinding(config, 'color') // 没有 view: 'color'
// ✅ CORRECT
import shader from '@/shaders/effect/fragment.glsl'
folder.addBinding(config, 'color', { view: 'color' })| 禁止 | 原因 | 正确做法 |
|---|---|---|
| 每个对象创建几何体 | 内存浪费 | 共享几何体 |
| splice 移除实例 | O(n) 复杂度 | swap-and-pop |
| 主线程阻塞操作 | 卡顿 | 使用 IdleQueue |
| 忘记 needsUpdate | 渲染不更新 | 修改后标记 |
// ❌ FORBIDDEN
blocks.forEach((b) => {
const geo = new THREE.BoxGeometry(1, 1, 1) // 每个都创建!
})
instances.splice(index, 1) // O(n)
// ✅ CORRECT
const sharedGeo = new THREE.BoxGeometry(1, 1, 1) // 共享
instances[index] = instances[instances.length - 1]
instances.pop() // O(1)| 禁止 | 原因 | 正确做法 |
|---|---|---|
| 未请求时 commit | 过度主动 | 只在明确请求时 |
| 无验证就声称完成 | 可能有问题 | 先运行诊断 |
| 修改 bug 时重构 | 范围蔓延 | Bug 修复要最小化 |
| 禁止 | 原因 | 正确做法 |
|---|---|---|
| 不使用 Experience 单例 | 不一致 | new Experience() 获取 |
| 提取全部依赖 | 冗余 | 只取所需 |
| 继承 EventEmitter | 已弃用 | 使用 mitt |
// ❌ FORBIDDEN
class BadComponent extends EventEmitter {
constructor() {
// 提取全部
this.scene = exp.scene
this.camera = exp.camera
this.renderer = exp.renderer
this.time = exp.time
this.sizes = exp.sizes
this.iMouse = exp.iMouse // 大部分用不到
}
}
// ✅ CORRECT
class GoodComponent {
constructor() {
this.experience = new Experience()
// 只取需要的
this.scene = this.experience.scene
this.resources = this.experience.resources
}
}在提交代码前,确认以下事项:
as any、@ts-ignore、@ts-expect-errordestroy() 方法iMouse.normalizedMousedebugInit()this.experience.time 访问src/shaders/ 目录view: 'color'needsUpdate = true| 级别 | 说明 | 示例 |
|---|---|---|
| 🔴 CRITICAL | 必然导致 bug 或崩溃 | 缺少 destroy、空 catch |
| 🟠 HIGH | 导致性能问题或内存泄漏 | splice 移除、不 dispose |
| 🟡 MEDIUM | 违反架构规范 | 跨层直接操作 |
| 🟢 LOW | 代码风格问题 | 命名不一致 |
所有级别的违规都应避免。
© hexianWeb, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agent/skills/vtj-anti-patterns of hexianWeb/Third-Person-MC.
Open the folder on GitHubat commit 490203c
Vtj Anti Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Vtj Anti Patterns this skillhexianWeb/Third-Person-MC | 194 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Web CloneJane-xiaoer/claude-skill-web-clone | 1k | 2 repos | ~2.7k | Automated safety check: Pass | MIT | |
| New ExperimentTresjs/tres | 3.8k | — | ~782 | Automated safety check: Pass | MIT | |
| Polycsslayoutit/polycss | 759 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Optimize Performancetextura-agency/next16-claude-starter | 132 | — | ~3.7k | Automated safety check: Notes | Unlicense | |
| Threejs Debug Profilermintdotgg/mint-threejs-skills | 114 | — | ~435 | Automated safety check: Pass | MIT |
Jane-xiaoer/claude-skill-web-clone
网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…
Tresjs/tres
Create a new experiment in TresJS Lab with all necessary files
layoutit/polycss
Build PolyCSS scenes that render 3D meshes, primitive shapes, or custom polygons as DOM/CSS polygon elements.
textura-agency/next16-claude-starter
Make a page in this starter actually smooth — build it, scroll it in real Chrome on PC and on an emulated phone, fix what the measurement blames, re-measure to prove it.
mintdotgg/mint-threejs-skills
Diagnose Three.js rendering, loading, animation, resize, audio, physics, input, mobile, and performance problems using reproduction and measured evidence.
valkor-ai/loom
Debug and profile Three.js browser games: blank canvases, render and runtime bugs, asset and audio loading, animation, resize, mobile input, plus performance profiling of draw calls, triangles…
hexianWeb/Third-Person-MC
Configures Tweakpane debug panels for 3D components. An agent skill from hexianWeb/Third-Person-MC.
hexianWeb/Third-Person-MC
Configures third-person camera systems with collision avoidance.
hexianWeb/Third-Person-MC
Creates 3D components using the Experience singleton pattern.
hexianWeb/Third-Person-MC
Handles mouse, keyboard, and touch input via the IMouse and InputManager systems.
hexianWeb/Third-Person-MC
Optimizes Three.js rendering performance. An agent skill from hexianWeb/Third-Person-MC.
hexianWeb/Third-Person-MC
Implements ray picking and collision detection. An agent skill from hexianWeb/Third-Person-MC.
Categories
Prevents common mistakes and prohibited practices in vite-threejs projects. Vtj Anti Patterns is an agent skill from hexianWeb/Third-Person-MC. Prevents common mistakes and prohibited practices in vite-threejs projects.
Vtj Anti Patterns fits situations like: tasks that involve 3D graphics and WebGL; tasks that involve Performance optimization.
Run `npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a claude-code`. Or copy the skill folder (.agent/skills/vtj-anti-patterns in hexianWeb/Third-Person-MC) into .claude/skills/vtj-anti-patterns in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a codex`. Or copy the skill folder (.agent/skills/vtj-anti-patterns in hexianWeb/Third-Person-MC) into .agents/skills/vtj-anti-patterns in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hexianWeb/Third-Person-MC --skill vtj-anti-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vtj-anti-patterns, .gemini/skills/vtj-anti-patterns, .github/skills/vtj-anti-patterns and .opencode/skills/vtj-anti-patterns in your project.
SKILL.md names no scripts, command-line tools or credentials: Vtj Anti Patterns is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Vtj Anti Patterns is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Vtj Anti Patterns: Web Clone (Jane-xiaoer/claude-skill-web-clone, 1k stars), New Experiment (Tresjs/tres, 3.8k stars), Polycss (layoutit/polycss, 759 stars) and Optimize Performance (textura-agency/next16-claude-starter, 132 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hexianWeb (a GitHub user) maintains it in hexianWeb/Third-Person-MC, which has 194 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on July 27, 2026.
Source: hexianWeb/Third-Person-MC on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.