skills-experimental/fast-mode-cooldown/SKILL.md
Rate limit cooldown mechanism. Switch to alternative mode when rate limit hit. Track cooldown state with expiration. Auto-recovery after cooldown period. Use when [fast mode cooldown] is needed.
npx skillsauth add bianhaifeng789-hue/openclaw-config fast-mode-cooldownInstall 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.
Rate limit 触发时自动切换模式,冷却期结束后恢复。
场景:
Claude Code 方案:fastMode.ts + cooldown mechanism OpenClaw 飞书适配:冷却状态追踪 + 飞书卡片提示
type FastModeState = 'off' | 'cooldown' | 'on'
interface CooldownInfo {
state: FastModeState
triggeredAt: string | null
expiresAt: string | null
remainingSeconds: number
reason: string | null
}
• Rate limit reached
• 429 response from API
• Usage quota exceeded
• Manual trigger
interface CooldownConfig {
durationMinutes: number // 冷却时长(默认 30 分钟)
autoRecovery: boolean // 自动恢复(默认 true)
notifyOnTrigger: boolean // 触发时通知(默认 true)
notifyOnRecovery: boolean // 恢复时通知(默认 true)
fallbackMode: string // 备用模式
}
{
"config": {"wide_screen_mode": true},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**⚡ Fast Mode Cooldown 触发**\n\n**状态变更**:`on` → `cooldown`\n\n**原因**:Rate limit reached\n\n**冷却期**:30 分钟\n\n**恢复时间**:00:33\n\n---\n\n**当前状态**:\n• **触发时间**:00:03\n• **剩余时间**:30 分钟\n• **备用模式**:正常模式\n\n---\n\n**自动恢复后将继续使用快速模式**"
}
}
]
}
{
"config": {"wide_screen_mode": true},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**✅ Fast Mode Cooldown 结束**\n\n**状态变更**:`cooldown` → `on`\n\n**冷却期结束**:已恢复正常模式\n\n---\n\n**统计**:\n• **冷却时长**:30 分钟\n• **触发原因**:Rate limit reached\n• **自动恢复**:成功"
}
}
]
}
Fast Mode Cooldown:
1. 检测 rate limit / 429 response
2. 触发 cooldown 状态变更
3. 发送飞书卡片通知
4. 记录触发时间和原因
5. 启动冷却计时器
function getCooldownState(): CooldownInfo {
const state = readCooldownState()
if (state.state !== 'cooldown') {
return { state: state.state, ... }
}
// 计算剩余时间
const remaining = calculateRemaining(state.expiresAt)
if (remaining <= 0) {
// 冷却期结束,自动恢复
recoverFromCooldown()
return { state: 'on', ... }
}
return {
state: 'cooldown',
remainingSeconds: remaining,
...
}
}
function recoverFromCooldown(): void {
// 更新状态
updateCooldownState({ state: 'on', ... })
// 发送恢复通知
if (config.notifyOnRecovery) {
sendRecoveryCard()
}
// 记录统计
recordCooldownStats()
}
// memory/fast-mode-cooldown-state.json
{
"state": "off",
"cooldowns": [
{
"triggeredAt": "2026-04-12T00:03:00Z",
"expiresAt": "2026-04-12T00:33:00Z",
"reason": "Rate limit reached",
"recovered": true,
"recoveredAt": "2026-04-12T00:33:00Z"
}
],
"stats": {
"cooldownsTriggered": 0,
"cooldownsRecovered": 0,
"totalCooldownMinutes": 0
},
"config": {
"durationMinutes": 30,
"autoRecovery": true,
"notifyOnTrigger": true,
"notifyOnRecovery": true
}
}
| Claude Code | OpenClaw 飞书场景 | |-------------|------------------| | triggerFastModeCooldown | Skill + 状态文件 | | getFastModeState | getCooldownState | | Org-level permission check | 飞书用户权限 | | Extra usage billing | 飞书用量追踪 | | Terminal notification | 飞书卡片通知 |
此 Skill 在 rate limit 或 heartbeat 时自动检查状态。
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