skills-experimental/change-detector/SKILL.md
Change detector with chokidar FSWatcher. FILE_STABILITY_THRESHOLD_MS=1000, MDM_POLL_INTERVAL_MS=30min. settingsChanged signal. pendingDeletions map. Internal write suppression. Use when [change detector] is needed.
npx skillsauth add bianhaifeng789-hue/openclaw-config change-detectorInstall 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.
Change Detector 文件监听,支持稳定性阈值。
场景:
Claude Code 方案:changeDetector.ts + 389+ lines OpenClaw 飞书适配:Change detector + File watching
const FILE_STABILITY_THRESHOLD_MS = 1000 // Wait for file writes to stabilize
const FILE_STABILITY_POLL_INTERVAL_MS = 500 // Polling interval
const INTERNAL_WRITE_WINDOW_MS = 5000 // Internal write window
const MDM_POLL_INTERVAL_MS = 30 * 60 * 1000 // 30 minutes
const DELETION_GRACE_MS = FILE_STABILITY_THRESHOLD_MS + FILE_STABILITY_POLL_INTERVAL_MS + 200
async function initialize(): Promise<void> {
if (getIsRemoteMode()) return
if (initialized || disposed) return
initialized = true
// Start MDM poll
startMdmPoll()
// Register cleanup
registerCleanup(dispose)
const { dirs, settingsFiles, dropInDir } = await getWatchTargets()
// Create chokidar watcher
watcher = chokidar.watch([...dirs, ...settingsFiles], {
awaitWriteFinish: {
stabilityThreshold: FILE_STABILITY_THRESHOLD_MS,
pollInterval: FILE_STABILITY_POLL_INTERVAL_MS,
},
})
// Setup event handlers
watcher.on('add', handleAdd)
watcher.on('change', handleChange)
watcher.on('unlink', handleUnlink)
}
const settingsChanged = createSignal<[source: SettingSource]>()
// Subscribe to settings changes
settingsChanged.subscribe((source) => {
applySettingsChange(source, setAppState)
})
// Mark internal write
markInternalWrite(path)
// Check if internal write
function consumeInternalWrite(path: string, windowMs: number): boolean {
const ts = timestamps.get(path)
if (ts !== undefined && Date.now() - ts < windowMs) {
timestamps.delete(path)
return true
}
return false
}
{
"config": {"wide_screen_mode": true},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**👀 Change Detector**\n\n---\n\n**Constants**:\n\n| Constant | Value |\n|----------|-------|\n| FILE_STABILITY_THRESHOLD_MS | 1000 |\n| FILE_STABILITY_POLL_INTERVAL_MS | 500 |\n| INTERNAL_WRITE_WINDOW_MS | 5000 |\n| MDM_POLL_INTERVAL_MS | 30 min |\n| DELETION_GRACE_MS | 1700 |\n\n---\n\n**Features**:\n• chokidar FSWatcher\n• settingsChanged signal\n• pendingDeletions map\n• Internal write suppression\n• MDM polling"
}
}
]
}
// memory/change-detector-state.json
{
"watching": false,
"mdmPolling": false,
"constants": {
"stabilityThreshold": 1000,
"pollInterval": 500,
"internalWriteWindow": 5000,
"mdmPollInterval": 1800000
},
"stats": {
"totalChanges": 0,
"internalWrites": 0,
"mdmPolls": 0
},
"lastUpdate": "2026-04-12T01:20:00Z",
"notes": "Change Detector Skill 创建完成。等待 file watch 触发。"
}
| Claude Code | OpenClaw 飞书场景 | |-------------|------------------| | changeDetector.ts (389+ lines) | Skill + Detector | | chokidar | File watcher | | FILE_STABILITY_THRESHOLD_MS | 1000ms | | MDM_POLL_INTERVAL_MS | 30min | | settingsChanged | Signal |
此 Skill 在 file watch 时自动运行。
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