Migrate Core Code to Submodules
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
Upgrades an older .cheat-state.json to the current schema version by applying migration files in order, with dry-run, backup and stop-on-failure behavior.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add XBuilderLAB/cheat-on-content --skill cheat-migrate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-migrate --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/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cheat-migrate .claude/skills/cheat-migrate && 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 "cheat-migrate" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-migrate into .claude/skills/cheat-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-migrate", 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/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-migrateType 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 XBuilderLAB/cheat-on-content --skill cheat-migrate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-migrate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/cheat-migrate .agents/skills/cheat-migrate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cheat-migrate" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-migrate into .agents/skills/cheat-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-migrate", 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 XBuilderLAB/cheat-on-content --skill cheat-migrate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-migrate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/cheat-migrate .cursor/skills/cheat-migrate && 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 "cheat-migrate" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-migrate into .cursor/skills/cheat-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-migrate", 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/XBuilderLAB/cheat-on-content.git --path skills/cheat-migrate--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 XBuilderLAB/cheat-on-content --skill cheat-migrate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-migrate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/cheat-migrate .gemini/skills/cheat-migrate && 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 "cheat-migrate" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-migrate into .gemini/skills/cheat-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-migrate", 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 XBuilderLAB/cheat-on-content cheat-migrateInstalls 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 XBuilderLAB/cheat-on-content --skill cheat-migrate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/cheat-migrate .github/skills/cheat-migrate && 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 "cheat-migrate" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-migrate into .github/skills/cheat-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-migrate", 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 XBuilderLAB/cheat-on-content --skill cheat-migrate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install XBuilderLAB/cheat-on-content cheat-migrate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-content.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/cheat-migrate .opencode/skills/cheat-migrate && 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 "cheat-migrate" agent skill from https://github.com/XBuilderLAB/cheat-on-content/tree/main/skills/cheat-migrate into .opencode/skills/cheat-migrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cheat-migrate", 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.
cheat-migrateUpgrades an older .cheat-state.json to the current schema version by applying migration files in order, with dry-run, backup and stop-on-failure behavior.
This skill upgrades a user's .cheat-state.json from an older schema_version to the version the cheat-on-content tool expects. It reads the state file and a migrations registry, works out the chain of migration steps from the current version to the target, and applies each step in order. Running it twice gives the same result, and a state newer than the target is reported as an error instead of being downgraded.
By default the first run is a dry run that shows the plan without changing files, and a backup copy of the state file is made before any write. Each step's migration file contains natural-language steps that the agent follows, not a script, and the state is written atomically after each step. If a step fails the process stops at the last good intermediate version without rolling back, and a rerun resumes from there. Afterwards the file is parsed again, the schema version checked and the required fields verified. Options let you turn off the dry run or migrate only up to a chosen version.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2d8211e. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(*)ReadWriteEditSkillFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
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.
cheat-on-content State Migrator loads about 1.5k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 390 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash(*), Read, Write, Edit, SkillAutomated 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 XBuilderLAB/cheat-on-content at commit 2d8211e, republished under its MIT licence (© XBuilderLAB). 390 words, ~1,535 tokens.
.claude/skills/cheat-migrate/SKILL.md (or your agent's skills folder).把用户 .cheat-state.json 从旧 schema_version 升级到 cheat-on-content 当前期望的 LATEST_SCHEMA。
[用户:迁移 / 或 SessionStart 提示后用户跑]
↓
[Phase 0: 读 .cheat-state.json + migrations/registry.md → 确定迁移链]
↓
[Phase 1: dry-run(默认)展示迁移计划,等用户确认]
↓
[Phase 2: 备份 .cheat-state.json → .cheat-state.json.backup-<timestamp>]
↓
[Phase 3: 按顺序对每个 step 应用对应迁移文件的 HOW 段]
↓
[Phase 4: 验证升级后 state 文件能被解析 + schema_version 已更新]
↓
[Phase 5: 报告 + 提示如有备份需要清理]${SKILL_DIR}/../../migrations/registry.md — 版本链单一来源${SKILL_DIR}/../../migrations/ — 迁移文件目录💡 调用时覆盖:
/cheat-migrate — dry-run: false直接执行 //cheat-migrate — to: 1.2仅升到指定版本
| 必填 | 来源 |
|---|---|
.cheat-state.json | 用户项目根 |
migrations/registry.md | LATEST_SCHEMA + 版本链表 |
migrations/<from>-to-<to>.md | 每步具体迁移指令 |
.cheat-state.json → 解析 current_version = state.schema_versionmigrations/registry.md → 解析 LATEST_SCHEMA 字段(行:LATEST_SCHEMA = "X.Y")args.to 覆盖(如有);否则 target = LATEST_SCHEMAargs.from 覆盖(罕见场景:用户的 state 文件 schema 字段坏了,强制指定起点)current_version == target → 输出"✅ state 已是 {target},无需迁移" → 退出current_version > target(比如用户跑了 dev 版又切回 release)→ 报错"无法降级,请手动调整或重新 init"current_version < target → 继续,从注册表查出迁移链chain = [(from, to, file), ...],按顺序串起 current → target如果某一步在注册表里缺失(比如 current_version 不在表里)→ 报错并展示"目前已知版本:[1.0, 1.1, ...]",让用户检查。
输出迁移计划:
📋 迁移计划
当前版本: 1.0
目标版本: 1.2
将按顺序跑 2 步:
[1/2] 1.0 → 1.1(MINOR)
新增字段:typical_duration_seconds, target_publish_cadence_days, ...(共 12 字段)
删除字段:mode, prediction_complexity, bucket_scheme
详见: migrations/1.0-to-1.1.md
[2/2] 1.1 → 1.2(MINOR)
新增字段:[...]
详见: migrations/1.1-to-1.2.md
⚠️ 备份位置: .cheat-state.json.backup-<timestamp>
继续吗?回 yes 执行 / no 退出 / dry-run-detail 看每步具体改什么。如 args["dry-run"] == false 或用户回 yes → 进 Phase 2。
cp .cheat-state.json .cheat-state.json.backup-$(date +%s)输出:"📦 备份到 .cheat-state.json.backup-1714838400"
对 chain 里的每个 (from, to, file):
migrations/<file> → 找到 ## HOW (Claude steps for /cheat-migrate) 段升完后:
.cheat-state.json → 解析 → 应能成功schema_version == target✅ 迁移完成
从: 1.0
到: 1.2
应用步骤: 2
state 文件现在含 X 字段,全部通过验证。
📦 备份保留:.cheat-state.json.backup-1714838400
(确认一切正常后可手动 rm;下次成功 /cheat-init 也会清理过期备份)
下一步建议:
- 跑 /cheat-status 确认看板正常
- 如有 hooks 重装需求,跑 bash <skill_repo>/install.sh --reinstall-hookscurrent_version == target 实现--dry-run: false,备份动作仍执行.cheat-state.json。其他用户数据由各自 skill 负责,迁移 skill 不碰--dry-run: false),但备份仍强制执行--from: 1.0,但要警告"基于猜测的迁移可能导致字段错位"state.schema_version != LATEST_SCHEMA → 输出红色警告 + 建议跑 /cheat-migratecheat-init:init 写新 state 时直接用 LATEST_SCHEMA,不需要走 migrateinstall.sh --reinstall-hooks:迁移不重装 hook 脚本(hook 脚本属于 skill 包代码,不属于用户 state)。这两件事解耦本 skill 写:
schema_version(每步成功后更新)本 skill 读:
本 skill 绝不写:
calibration_samples / pending_retros / shoots 等业务状态(这些是其他 skill 的职责)用户:迁移
Claude: [跑 cheat-migrate]
Phase 0: current=1.1, target=1.2, chain=[(1.1, 1.2)]
Phase 1: dry-run 输出计划
用户: yes
Phase 2: 备份
Phase 3: 应用 1.1-to-1.2.md(MINOR:新增 platform_metrics_url 等字段)
Phase 4: 验证 OK
Phase 5: 报告 ✅用户:我从 v0.1.0 升到 v0.5.0,state 还是 1.0
Claude: [跑 cheat-migrate]
Phase 0: current=1.0, target=1.4 (LATEST), chain=[(1.0, 1.1), (1.1, 1.2), (1.2, 1.3), (1.3, 1.4)]
Phase 1: dry-run 输出 4 步计划
...Phase 3:
→ [1/4] 应用 1.0-to-1.1.md ✓
→ [2/4] 应用 1.1-to-1.2.md ✓
→ [3/4] 应用 1.2-to-1.3.md... ❌ 失败:用户 baseline_plays 字段含非数字值,无法转 int
state 已停在 schema_version: 1.2。
修复 .cheat-state.json 后重跑 /cheat-migrate 会从 1.2 → 1.3 继续。© XBuilderLAB, 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 skills/cheat-migrate of XBuilderLAB/cheat-on-content.
Open the folder on GitHubat commit 2d8211e
cheat-on-content State Migrator 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 |
|---|---|---|---|---|---|---|
| cheat-on-content State Migrator this skillXBuilderLAB/cheat-on-content | 7.2k | — | ~1.5k | Automated safety check: Notes | MIT | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 41k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Migrate Internal Package into GhostTryGhost/Ghost | 55k | — | ~3.8k | Automated safety check: Pass | MIT | |
| ast-grep Structural Searchcode-yeongyu/oh-my-openagent | 70k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Deprecate R Functions and Argumentstidyverse/dplyr | 5.1k | 1 repos | ~1.2k | Automated safety check: Pass | Custom licence | |
| Rust Path Typesopeninterpreter/openinterpreter | 69k | 2 repos | ~605 | Automated safety check: Pass | Apache-2.0 |
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
TryGhost/Ghost
Moves a package from another TryGhost repository into Ghost as an internal workspace package while keeping its Git history, with checkpoints for the steps that need an administrator.
code-yeongyu/oh-my-openagent
Searches and rewrites code by syntax-tree shape across 25 languages with ast-grep, for codemods, structural queries and YAML lint rules, using a Python wrapper script.
tidyverse/dplyr
Walks through deprecating an R function or argument in a package: lifecycle warning, silenced tests, a new snapshot test, documentation badge and NEWS entry.
openinterpreter/openinterpreter
Rules for choosing Rust types for filesystem paths in new Codex code, covering protocol types, internal use and model tool arguments.
TryGhost/Ghost
Moves a legacy internal Ghost package from JavaScript and CommonJS to TypeScript and ESM in three focused commits that keep git file history intact.
XBuilderLAB/cheat-on-content
Proposes and applies upgrades to a content-scoring rubric: a full formula bump with blind re-scoring and a cross-model audit, or a lighter bucket-boundary recalibration.
XBuilderLAB/cheat-on-content
Onboards a new user to the cheat-on-content workflow with a short question flow, creating the project scaffolding and optionally importing past video history.
XBuilderLAB/cheat-on-content
Imports scripts and engagement numbers from an account you want to emulate, then extracts content patterns and starting scoring signals from them.
XBuilderLAB/cheat-on-content
Turns content creation into a calibrated loop of scoring, blind prediction, post-publish review and rubric evolution, with a built-in rubric for opinion videos.
XBuilderLAB/cheat-on-content
Builds or refreshes an account's audience profile from the comments in its post retrospectives and writes it to audience.md for later topic and script work.
XBuilderLAB/cheat-on-content
Writes an immutable blind prediction log for a finished content draft: a seven-dimension score, bucket, probability distribution and counterfactuals, scored blind by a sub-agent.
Categories
Upgrades an older .cheat-state.json to the current schema version by applying migration files in order, with dry-run, backup and stop-on-failure behavior. json from an older schema_version to the version the cheat-on-content tool expects. It reads the state file and a migrations registry, works out the chain of migration steps from the current version to the target, and applies each step in order.
cheat-on-content State Migrator fits situations like: upgrading an old .cheat-state.json after updating cheat-on-content; previewing the migration chain before changing any files; resuming a migration that stopped at an intermediate version.
Run `npx skills add XBuilderLAB/cheat-on-content --skill cheat-migrate -a claude-code`. Or copy the skill folder (skills/cheat-migrate in XBuilderLAB/cheat-on-content) into .claude/skills/cheat-migrate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add XBuilderLAB/cheat-on-content --skill cheat-migrate -a codex`. Or copy the skill folder (skills/cheat-migrate in XBuilderLAB/cheat-on-content) into .agents/skills/cheat-migrate 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 XBuilderLAB/cheat-on-content --skill cheat-migrate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cheat-migrate, .gemini/skills/cheat-migrate, .github/skills/cheat-migrate and .opencode/skills/cheat-migrate in your project.
SKILL.md names no scripts, command-line tools or credentials: cheat-on-content State Migrator is instructions for the agent only. Our summary lists: A .cheat-state.json file in the project root; The cheat-on-content migrations registry and migration files. Its frontmatter pre-approves these tools: Bash(*), Read, Write, Edit, Skill.
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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
cheat-on-content State Migrator 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 6.1k 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 cheat-on-content State Migrator: Migrate Core Code to Submodules (tinyhumansai/openhuman, 41k stars), Migrate Internal Package into Ghost (TryGhost/Ghost, 55k stars), ast-grep Structural Search (code-yeongyu/oh-my-openagent, 70k stars) and Deprecate R Functions and Arguments (tidyverse/dplyr, 5.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
XBuilderLAB (a GitHub organization) maintains it in XBuilderLAB/cheat-on-content, which has 7,225 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 5, 2026.
Source: XBuilderLAB/cheat-on-content on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.