skills-experimental/file-history-checkpointing/SKILL.md
File edit checkpointing and rollback. Automatically snapshot files before edits, enable per-messageId rewind. Use when: - Before making file edits (auto-snapshot) - User asks to undo/revert changes - Comparing current state to before a specific message - Recovering from bad edits Keywords: undo, revert, checkpoint, file history, rollback, restore, snapshot
npx skillsauth add bianhaifeng789-hue/openclaw-config file-history-checkpointingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
基于 Claude Code fileHistory.ts 的文件编辑检查点系统,支持按 messageId 回滚。
type FileHistorySnapshot = {
messageId: UUID // 关联的消息 ID
trackedFileBackups: Record<string, FileHistoryBackup> // 文件路径 → 备份
timestamp: Date
}
type FileHistoryBackup = {
backupFileName: string | null // null = 文件在此版本不存在
version: number // 单调递增版本号
backupTime: Date
}
// 最多保留 100 个快照
const MAX_SNAPSHOTS = 100
fileHistoryTrackEdit(filePath, messageId):
在编辑前调用:
1. 如果文件存在:复制到备份目录(硬链接,节省空间)
2. 记录 backup: { backupFileName, version, backupTime }
3. 关联到当前 messageId 的 snapshot
fileHistoryMakeSnapshot(messageId):
创建新快照:
1. 收集所有已追踪文件的当前备份
2. 写入 snapshot: { messageId, trackedFileBackups, timestamp }
3. 超过 MAX_SNAPSHOTS 时驱逐最旧的
fileHistoryRewind(messageId):
回滚到指定消息前的状态:
1. 找到 messageId 对应的 snapshot
2. 对每个追踪文件:
- 如果 backupFileName = null → 删除文件(该版本不存在)
- 否则 → 从备份恢复
3. 清理该 snapshot 之后的所有快照
fileHistoryGetDiffStats():
返回自上次快照以来的变更统计:
{ filesChanged: string[], insertions: number, deletions: number }
memory/file-history/
snapshots.json # 快照元数据
backups/
v1_src_utils_foo.ts # 备份文件(版本号前缀)
v2_src_utils_foo.ts
v1_src_index.ts
{
"snapshots": [
{
"messageId": "msg-abc123",
"timestamp": "2026-04-13T18:00:00+08:00",
"trackedFileBackups": {
"src/utils/foo.ts": {
"backupFileName": "v1_src_utils_foo.ts",
"version": 1,
"backupTime": "2026-04-13T18:00:00+08:00"
}
}
}
],
"snapshotSequence": 3
}
编辑前自动快照:
1. 用户请求编辑文件
2. 调用 fileHistoryTrackEdit(filePath, currentMessageId)
3. 执行编辑
4. 调用 fileHistoryMakeSnapshot(currentMessageId)
回滚:
用户: "撤销刚才的修改"
1. 找到上一个 messageId 的 snapshot
2. 调用 fileHistoryRewind(messageId)
3. 报告恢复了哪些文件
| 特性 | Claude Code | OpenClaw 适配 | |------|-------------|---------------| | 备份存储 | 硬链接(节省空间) | 文件复制 | | 最大快照数 | 100 | 可配置(默认 20) | | 触发时机 | FileEdit/FileWrite 工具自动触发 | 手动调用或 hook | | diff 统计 | 精确行级 diff | 文件级统计 | | 跨会话 | 不支持(内存状态) | 支持(文件持久化) |
business
IAA 日报飞书输出能力。 支持把固定 CSV 模板一键转换成: - 中文运营结论 - 飞书卡片 JSON - 飞书发送载荷 Use when: - 需要把 IAA 日报直接发到飞书 - 需要从 CSV 一键生成运营日报
data-ai
IAA日报分析模型 功能: - 渠道日报自动分析 - 小时级+日级ROI联动判断 - 按地区输出加量/降量/停投建议 - 按产品类型输出阈值 - 自动识别利润区/观察区/止损区 Use when: - 分析每天投放数据 - 生成运营日报结论 - 判断是否加量/降量/停投 - 对比美加澳/日韩表现 Keywords: - 日报模型, 投放日报, 加量, 降量, 停投, ROI日报, 分地区分析
data-ai
IAA固定日报分析模板 功能: - 固定字段模板(可直接贴每天数据) - 自动输出总盘结论 - 自动输出美加澳/日韩结论 - 自动给出加量/降量/停投建议 - 适配文件修复/清理两类产品 Use when: - 需要固定日报格式 - 每天复盘渠道表现 - 给运营团队出统一结论 Keywords: - 固定模板, 日报模板, ROI模板, IAA日报, 运营模板
development
# HyperlinkPool Pattern Skill HyperlinkPool Pattern - HyperlinkPool class + strings array + stringMap + Index 0 no hyperlink + intern(hyperlink) + get(id) + undefined handling + 5-minute reset + OSC8 hyperlink interning。 ## 功能概述 从Claude Code的ink/screen.ts提取的HyperlinkPool模式,用于OpenClaw的OSC8超链接池管理。 ## 核心机制 ### HyperlinkPool Class ```typescript export class HyperlinkPool { private strings: string[] = [''] // Index 0 = no hyperlink private stringMap = new Map<string, number>() // strings