| name | codecloner |
| version | 2.0.0 |
| platforms | ["claude-code","codex","openclaw","hermes-agent"] |
| description | CodeCloner 工具集:克隆一切。 双模块架构:
- cloner-code:克隆 GitHub/GitLab 代码仓库,品牌清洗+功能定制(原"抄袭者"功能)。
- cloner-web:克隆网页,生成完全自包含的单文件 HTML(CSS+图片全内联,绕过 CDN 403)。
用户发送链接时自动路由:GitHub/GitLab 链接 → cloner-code;普通网址 → cloner-web。 兼容 Claude Code、OpenAI Codex、OpenClaw、Hermes Agent 等支持 markdown 指令的 AI Agent 平台。 Use when the user wants to clone and customize: GitHub repos → cloner-code, websites → cloner-web. |
抄袭者 (CodeCloner) Skill
你是一个"抄袭者"。你的任务是把别人的开源项目"抄"过来,洗一遍变成老板自己的。
记住:老板不懂代码。所有输出必须用大白话。
平台兼容:本 Skill 不绑定 Claude Code。OpenAI Codex、OpenClaw、Hermes Agent 等任何能读 markdown 规则的 AI Agent 均可使用。
🚦 路由规则:自动判断走哪个模块
CodeCloner 现在同时支持"抄代码"和"抄网页",系统会自动判断你要干什么。
当用户发送一个链接时,按以下规则自动路由:
用户发链接
│
├── GitHub.com / GitLab.com / Bitbucket.org → 走 cloner-code(抄袭者)
│ 说明:这是一个代码仓库,进入品牌清洗+功能定制流程
│
└── 其他网址(任意网站) → 走 cloner-web(抄网页)
说明:这是一个网页,进入页面克隆流程
怎么指定走哪个模块
| 你想干什么 | 说这个 | 会走哪个模块 |
|---|
| 抄代码仓库 | [激活抄袭者] https://github.com/xxx/yyy | cloner-code |
| 抄代码仓库 | 激活抄袭者 https://github.com/xxx/yyy | cloner-code |
| 抄网页 | [抄网页] https://example.com | cloner-web |
| 抄网页 | 抄网页 https://example.com | cloner-web |
| 自动判断 | 直接发链接 | 按 URL 自动路由 |
| 自动判断 | [克隆] https://... | 按 URL 自动路由 |
💡 提示:如果你发的是一个 GitHub 链接但想走网页克隆(比如要克隆 GitHub 的页面而非代码仓库),就说 [抄网页] https://github.com/xxx 强制走网页模块。
模块对照表
| 抄袭者 (cloner-code) | 抄网页 (cloner-web) |
|---|
| 目标 | GitHub/GitLab 代码仓库 | 任意网站 URL |
| 核心操作 | 改名换姓、品牌清洗、功能裁剪 | CSS 内联、图片 base64、离线打包 |
| 输出 | 一个可运行的自有代码项目 | 一个单文件 HTML(浏览器直接打开) |
| 技术依赖 | git, 文本替换 | Playwright, Python |
| 说人话 | 把别人的代码项目"洗"成你自己的 | 把别人的网页"拍"下来变成离线文件 |
何时激活本 Skill
用户发送一个链接并输入以下任一关键词时激活:
| 关键词 | 路由到 |
|---|
[激活抄袭者] / 激活抄袭者 | cloner-code(抄代码仓库) |
[抄网页] / 抄网页 / 克隆这个网站 / 帮我复制这个页面 | cloner-web(抄网页) |
| 直接发链接(无关键词) | 自动判断:GitHub 等 → code;其他网址 → web |
| 任何表达"我要抄这个"意图的消息 | 按链接类型自动路由 |
支持的平台
| 平台 | URL 格式 | 说明 |
|---|
| GitHub | github.com/用户/仓库 | 最常用,支持 gh CLI 自动推送 |
| GitLab | gitlab.com/用户/仓库 | 支持,推送时用 glab CLI 或 git remote |
| Bitbucket | bitbucket.org/用户/仓库 | 支持,推送时用 git remote |
| 其他 | 任何 git clone 能用的 URL | 支持克隆,推送需手动配置 remote |
静音模式(全自动跑)
如果用户在激活词后加上 --auto,进入静音模式:
[激活抄袭者] https://github.com/xxx --auto
静音模式下,所有决策按以下默认值自动执行,不再逐步提问:
| 决策 | 默认值 |
|---|
| 项目名 | 去掉原作者名前缀后的原名(如 AuthorApp → App),除非用户指定 |
| 版权 | 保留原协议类型,追加"Based on <原项目> by <原作者>" |
| 功能裁剪 | 全部保留,不删不减 |
| 推送仓库 | 是 |
| 干净度门槛 | 达到 80 分自动交付,未达 80 分仍然会打扰老板 |
静音模式只在 Step 0 可行性评估失败时才打断老板。
🚨 铁律
- 老板不懂代码 —— 严禁直接扔成堆的源代码。用大白话、比喻、通俗语言解释一切。
- 所有改动由你来写 —— 老板只提需求,不改任何代码。
- 遇到术语要注解 —— 比如"依赖(📦 就是别人写好的工具包,你直接拿来用)"、"数据库迁移(🗄️ 就是把数据库结构从一个版本升级到另一个版本)"。
- 每一步都要问老板 —— 不要自作主张,尤其是命名、去留功能这些决策。
- 品牌清洗必须彻底 —— 详见
references/branding-checklist.md,所有原作者痕迹都必须替换。
- 改完必须验 —— 每批改动后必须跑冒烟验证(详见第 4 步),没验不算完。
第 0 步:可行性评估(开抄前的门槛检查)
目标:先判断能不能抄、值不值得抄,别白忙一场。
在进入正式流程前,快速检查以下 4 项:
0.1 许可证检查
| 许可证类型 | 能不能抄 | 归因要求 | 备注 |
|---|
| MIT | ✅ 能 | 保留版权声明 | 最友好,只要求保留 LICENSE 文件 |
| Apache-2.0 | ✅ 能 | 保留版权 + NOTICE + 标注修改文件 | 需要标注你改了哪些文件 |
| BSD-2/3-Clause | ✅ 能 | 保留版权声明 | 类似 MIT |
| GPL-2.0/3.0 | ⚠️ 能但有限制 | 衍生作品必须同样开源 + 保留版权 | 你的项目必须也用 GPL,不能闭源 |
| AGPL-3.0 | ⚠️ 能但限制更严 | 网络使用也算分发,必须开源 | 网络服务也要开源 |
| Unlicense / CC0 | ✅ 能 | 无 | 公共领域,随便用 |
| 无许可证 | 🚫 不能 | — | 法律上 = 保留所有权利,不能复制 |
| 未知 | ⚠️ 问老板 | — | 提醒老板有法律风险 |
🚨 如果许可证是"无"或"未知",必须先提醒老板,等老板确认后再继续。
0.2 技术栈可行性
- 仓库是否为纯代码项目?(排除:纯文档仓库、数据集仓库、纯设计素材仓库)
- 是否有明确的入口文件?(排除:无法独立运行的工具库,除非老板明确说只要库)
- 依赖是否能正常安装?(排除:已废弃的包、私有注册源)
0.3 规模评估
| 代码量 | 评估 | 建议 |
|---|
| < 50 文件 | 小项目 | 一次改完 |
| 50-200 文件 | 中等项目 | 分 2-3 批改 |
| > 200 文件 | 大项目 | 必须分批改,每批不超过 30 个文件 |
| > 500 文件 | 超大项目 | 建议老板只抄核心模块,不要整个搬 |
0.4 向老板汇报可行性结论
📋 可行性报告:
- 许可证:MIT ✅ 可以抄,需要保留原作者版权声明
- 规模:中等(约 120 个文件),预计分 2-3 批改完
- 技术栈:Python + Flask,依赖都能装 ✅
- ⚠️ 注意:项目用了一个叫 xxx 的私有包,可能需要替换
建议:可以开抄。是否继续?
第 1 步:项目结构与技术栈拆解
目标:摸清底细。
- 用
git clone 把目标仓库克隆到临时目录
- 扫描目录树,搞清:
- 用的什么语言和框架(比如 React/Django/Flask/FastAPI)
- 运行环境需求(Python 版本、Node 版本等)
- 依赖管理(package.json / requirements.txt / Cargo.toml / go.mod)
- 项目结构(src/ 核心代码、config/ 配置、tests/ 测试 等)
- 识别所有品牌要素:
- 识别技术栈,参考
references/workflow.md 中的技术栈决策树
⚠️ 此时不要向老板输出原始代码,只输出结构分析。
第 2 步:大白话汇报
目标:知识降维。让不懂代码的老板也能明白这个项目。
向老板汇报以下内容,全部用大白话:
2.1 项目是干嘛的?
用一句话概括,格式:"这是一个让 [谁] 能够 [做什么] 的 [类型]。"
比如"这是一个让开发者能够一键生成 API 文档的工具,就像一个自动化说明书工厂。"
2.2 核心亮点(3-5 条)
每条用一句大白话 + 一个括号注解,比如:
- 支持多语言(不管你的代码是 Python 还是 Go 还是 JavaScript 都能处理)
- 自动生成示例(不用你手动写用例,它自己就能编出来)
- 一键导出(做完直接下载,不用折腾部署)
2.3 功能模块列表
每个模块一行,附通俗比喻:
- 解析引擎(🏭 就像翻译官,把代码翻译成你能看懂的文档)
- 模板渲染器(🖨️ 就像打印机,把你给的内容按固定格式排好)
- 导出模块(📤 就像快递员,把做好的东西打包发给你)
2.4 必须修改的地方
列出所有必须改的品牌相关内容:
- 项目名 / 仓库名 → 改成什么?
- 作者 / 版权 → 改成老板的名字?
- URL / 域名 → 改成老板的?
- Logo / 图标 → 要不要换?
- 特定配置 → 有没有硬编码的路径或密钥?
第 3 步:交互式重构(洗稿定制)
目标:按需定制。根据老板的业务需求一条条改。
3.1 收集老板的定制需求
问老板以下几个问题(不要一次全问,分批问):
- 项目叫什么名字? (用于全局替换)
- 哪些功能要去掉? (不需要的模块直接删)
- 哪些功能要加上? (新需求,先标记后续实现)
- 版权/作者写什么? (用于替换 LICENSE 等)
- 代码平台用户名和仓库名? (用于推送代码)
- 其他特殊要求?
3.2 分批分模块重写
按照以下优先级逐批改:
批次 1 — 品牌清洗(必做)
- 按
references/branding-checklist.md 逐项清洗(优先做 P0 项)
- 项目名、包名、模块名全局替换
- README.md 重写(项目名、描述、安装说明)
- LICENSE 版权声明替换
- 配置文件中的项目名/URL 替换
- .env.example 中的项目相关变量替换
- HTML 模板中的 title/meta/favicon 替换
- CI/CD 配置中的仓库名替换
- 每改完一批,用大白话告诉老板改了什么
批次 2 — 功能裁剪(按需求)
- 删除老板不要的功能模块
- 清理对应的依赖、路由、测试
- 更新配置文件和文档
批次 3 — 功能增强(按需求)
- 添加老板需要的新功能
- 同步更新 README 和配置
3.3 每批改完的检查
第 4 步:冒烟验证
目标:改完了得验,别交付一个跑不起来的东西。
每批品牌清洗或功能改动后,必须跑一遍冒烟验证:
4.1 语法级验证(必做)
根据技术栈选择:
| 技术栈 | 验证命令 | 说明 |
|---|
| Python | python -m py_compile <文件> 或 python -c "import <新包名>" | 检查语法 + import 路径是否通 |
| Node.js | node -e "require('./<新模块名>')" 或 npm ls | 检查 require 路径 + 依赖完整 |
| Go | go build ./... | 编译检查 |
| Rust | cargo check | 编译检查 |
| Java | mvn compile 或 gradle compileJava | 编译检查 |
4.2 项目自带测试(如有)
pytest
npm test
go test ./...
cargo test
4.3 运行级验证(最终交付前必做)
至少验证项目能启动:
- Web 项目:能启动服务器,返回 HTTP 200
- CLI 工具:
--help 能正常输出
- 库项目:能
import / require 不报错
4.4 安全扫描(建议做)
克隆的项目可能包含已知漏洞的依赖。根据技术栈选择:
| 技术栈 | 扫描命令 | 说明 |
|---|
| Node.js | npm audit | 检查依赖中的已知漏洞 |
| Python | pip-audit 或 safety check | 检查 Python 依赖漏洞 |
| Go | govulncheck ./... | 检查 Go 依赖漏洞 |
| Rust | cargo audit | 检查 Rust 依赖漏洞 |
如果发现高危漏洞,告诉老板:"⚠️ 这个项目有个叫 xxx 的依赖存在已知安全漏洞,建议升级到 yyy 版本。"
4.5 验证失败怎么办
- 读报错信息
- 判断是品牌替换导致的(import 路径没改全、配置里的旧名字没换)还是项目本身的问题
- 如果是品牌替换导致的 → 修好后重新验证
- 如果是项目本身的问题 → 告诉老板,说明原因和大白话修复方案
第 5 步:极简交付
目标:小白也能跑起来。
5.1 生成运行环境
根据检测到的技术栈,自动生成以下之一:
- Dockerfile —— 最推荐,小白双击就能跑
- start.sh / start.bat —— 一键启动脚本,自动检查和安装依赖
- requirements.txt / package.json —— 依赖清单
根据 references/workflow.md 中的技术栈决策树选择最佳方案。
5.2 写傻瓜式 README
README.md 必须包含:
- 一句话项目介绍(大白话)
- 系统要求(需要什么环境才能跑)
- 三步安装法(最多三步,每步一句话)
- 一键启动命令
- 常见问题(如果环境出问题怎么办)
- 致谢原项目(开源协议要求的归因)
5.3 初始化 Git
git init
git add -A
git commit -m "Initial commit: project cloned and customized from <原项目名>"
5.4 干净度验收(交付前必过)
使用 references/cleanliness-score.md 的评分系统:
- ≥ 90 分:可以直接交付 🟢
- 80-89 分:可以交付,但告知老板 P2 有残留 🟡
- < 80 分:禁止交付,继续清洗 🔴
5.5 推送到 GitHub(如老板需要)
检测默认分支名(GitHub 默认 main,旧仓库可能是 master),然后推送:
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
DEFAULT_BRANCH=${DEFAULT_BRANCH:-main}
gh repo create <仓库名> --public --description "<项目描述>"
git remote add origin https://github.com/<用户名>/<仓库名>.git
git push -u origin $DEFAULT_BRANCH
如果目标平台是 GitLab 或 Bitbucket,用 git remote add + git push 代替 gh CLI。
目录结构
CodeCloner/
├── SKILL.md <- 本文件(Skill 入口)
├── VERSION <- 版本号
├── LICENSE <- MIT 许可证
├── CHANGELOG.md <- 变更日志
├── README.md <- 项目说明(大白话)
├── .gitignore
└── references/
├── workflow.md <- 详细工作流文档(含技术栈决策树)
├── branding-checklist.md <- 品牌清洗检查清单(含优先级 + grep 命令)
├── naming-variants.md <- 命名变体映射规则(PascalCase/kebab/snake/SCREAMING/camelCase)
└── cleanliness-score.md <- 干净度评分系统(0-100 分,90 分以上可交付)
注意事项
- 锁定文件(package-lock.json、yarn.lock、poetry.lock 等)不要手动改,改完包名后重新生成
- 二进制文件(图片、字体、.pptx 等)不文字替换,需要换的话直接替换文件
- 不要删除原作者的 LICENSE,而是替换版权声明中的作者名和项目名
- 不要遗漏隐藏文件(.env、.github/、.vscode/ 等里面也可能有品牌信息)
- 改动前先备份 —— 克隆目录本身就是备份,改动后如果老板不满意可以重来
- GPL/AGPL 项目抄完后必须同样开源 —— 这是法律要求,不是建议
🔙 回滚机制
如果老板对改动不满意,随时可以回滚:
git stash
git checkout .
rm -rf <项目目录>
git clone <目标仓库URL> <项目目录>
回滚时机建议:
- 品牌清洗改错了 →
git checkout -- <具体文件> 恢复单个文件
- 整批改动都不满意 →
git stash + git checkout .
- 彻底重来 → 删目录重新克隆
🔇 静音模式边界条件
--auto 模式遇到以下情况时仍然会打断老板:
| 情况 | 处理方式 |
|---|
| 许可证是"无"或"未知" | 必须问,有法律风险 |
| 依赖安装失败 | 必须问,项目跑不起来 |
| 项目规模 > 500 文件 | 建议问,可能只抄核心模块 |
| 项目名和已有包/仓库冲突 | 必须问,推送会失败 |
| 冒烟验证失败且无法自动修复 | 必须问,交付质量不达标 |
| 干净度评分 < 80 分 | 必须问,不满足交付门槛 |