这是 FumoNull 的个人 Codex Skills 开源仓库。仓库按 skills/<skill-name>/ 组织,可以持续加入新的 Skill,也可以只安装其中一个。
| Skill | 功能 |
|---|---|
migrate-music-libraries |
在不同音乐平台之间迁移歌单、收藏歌单、专辑和关注歌手;将来源平台的“我喜欢”创建为目标平台中的独立原序歌单;完整读回验证后生成迁移报告。 |
PowerShell:
git clone https://github.com/FumoNull/codex-skills.git
$codexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { Join-Path $HOME ".codex" }
$skillHome = Join-Path $codexHome "skills"
New-Item -ItemType Directory -Path $skillHome -Force | Out-Null
Copy-Item `
-LiteralPath ".\codex-skills\skills\migrate-music-libraries" `
-Destination $skillHome `
-Recurse `
-ForcemacOS/Linux:
git clone https://github.com/FumoNull/codex-skills.git
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
cp -R ./codex-skills/skills/migrate-music-libraries \
"${CODEX_HOME:-$HOME/.codex}/skills/"安装后重新打开 Codex 任务,或刷新可用 Skills 列表。
PowerShell:
git clone https://github.com/FumoNull/codex-skills.git
$codexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { Join-Path $HOME ".codex" }
$skillHome = Join-Path $codexHome "skills"
New-Item -ItemType Directory -Path $skillHome -Force | Out-Null
Get-ChildItem -Directory ".\codex-skills\skills" |
Copy-Item -Destination $skillHome -Recurse -ForcemacOS/Linux:
git clone https://github.com/FumoNull/codex-skills.git
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
cp -R ./codex-skills/skills/* "${CODEX_HOME:-$HOME/.codex}/skills/"进入克隆目录并拉取最新内容,然后重新执行上面的复制命令:
git -C .\codex-skills pull在 Codex 中明确调用:
使用 $migrate-music-libraries,把我的网易云音乐完整迁移到 Spotify。
也可以直接描述需求:
把我的酷狗音乐歌单、收藏专辑和关注歌手迁移到 QQ 音乐。
来源平台的“我喜欢”不要写进 QQ 音乐内置的“我喜欢”,
请创建一个独立歌单,并保持来源平台的歌曲顺序。
Skill 将以下规则视为强制约束:
- 不直接修改目标平台内置的“我喜欢”或 Favorites。
- 在目标平台创建
<来源平台> 我喜欢(原顺序)。 - 从来源平台提取可靠的添加时间或权威 API 顺序。
- 探测目标平台是追加批次、置顶批次,还是会在批次内部倒序。
- 使用确定性脚本生成写入批次,不能在生成后重新分批。
- 写入完成后读取整个目标歌单,逐位置验证,而不只检查前几首。
- 自建歌单
- 收藏或关注的歌单
- “我喜欢”/Liked Songs/Favorites
- 收藏专辑
- 关注歌手
- 目标平台不支持的功能所需的替代歌单
任务结束后会生成报告,并分别记录:
- 来源数量
- 匹配数量
- 实际写入数量
- 目标平台读回数量
- 顺序验证结果
- 未匹配和存在歧义的歌曲
- 替代版本、重复歌曲处理和关注失败
- 需要用户手动清理的测试或旧歌单
只要仍有请求范围未完成或未验证,报告就会标记为“部分完成”或“受阻”,不会把它写成完全成功。
在 skills/ 下创建以小写字母、数字和连字符命名的目录:
skills/
└── my-new-skill/
├── SKILL.md
├── agents/
│ └── openai.yaml
├── scripts/
├── references/
└── assets/
最小 SKILL.md:
---
name: my-new-skill
description: Explain what this skill does and the situations that should trigger it.
---
# My New Skill
Write concise, imperative instructions for Codex.约定:
- Skill 目录名必须与 frontmatter 中的
name一致。 name只使用小写字母、数字和连字符。- frontmatter 只保留
name与description。 - 大段平台资料放入
references/,确定性工具放入scripts/。 - 不提交登录令牌、Cookie、验证码、账号导出或真实迁移清单。
- 新增 Skill 后运行校验:
python -m pip install -r requirements-dev.txt
python .\tools\validate_skills.py推送或创建 Pull Request 时,GitHub Actions 也会自动运行同一校验。
python -m pip install -r requirements-dev.txt
python .\tools\validate_skills.py
python .\skills\migrate-music-libraries\scripts\plan_order_batches.py --self-test
python .\skills\migrate-music-libraries\scripts\build_migration_report.py --self-test音乐迁移可能涉及私有歌单、手机号、Cookie、OAuth 令牌或设备凭证。本仓库只存放通用工作流和工具,不应提交任何真实账号认证数据或用户音乐资料。发现凭证泄露时,请立即撤销凭证并清理 Git 历史。