skills-experimental/concurrent-sessions/SKILL.md
Concurrent session registry. registerSession + SessionKind (interactive/bg/daemon/daemon-worker) + SessionStatus (busy/idle/waiting) + PID file (process.pid.json) + isBgSession + claude ps. Use when [concurrent sessions] is needed.
npx skillsauth add bianhaifeng789-hue/openclaw-config concurrent-sessionsInstall 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.
Concurrent Sessions 并发会话注册工具。
场景:
claude psClaude Code 方案:concurrentSessions.ts + 200+ lines OpenClaw 飞书适配:Concurrent sessions + Session registry
type SessionKind = 'interactive' | 'bg' | 'daemon' | 'daemon-worker'
type SessionStatus = 'busy' | 'idle' | 'waiting'
async function registerSession(): Promise<boolean> {
if (getAgentId() != null) return false
const kind: SessionKind = envSessionKind() ?? 'interactive'
const dir = getSessionsDir()
const pidFile = join(dir, `${process.pid}.json`)
registerCleanup(async () => {
try {
await unlink(pidFile)
} catch {
// ENOENT is fine
}
})
try {
await mkdir(dir, { recursive: true, mode: 0o700 })
await chmod(dir, 0o700)
await writeFile(
pidFile,
jsonStringify({
pid: process.pid,
sessionId: getSessionId(),
cwd: getOriginalCwd(),
startedAt: Date.now(),
kind,
entrypoint: process.env.CLAUDE_CODE_ENTRYPOINT,
// Feature flags
...(feature('UDS_INBOX') && { messagingSocketPath: process.env.CLAUDE_CODE_MESSAGING_SOCKET }),
...(feature('BG_SESSIONS') && {
name: process.env.CLAUDE_CODE_SESSION_NAME,
logPath: process.env.CLAUDE_CODE_SESSION_LOG,
agent: process.env.CLAUDE_CODE_AGENT,
}),
}),
)
// Update on session switch
onSessionSwitch(id => {
void updatePidFile({ sessionId: id })
})
return true
} catch (e) {
logForDebugging(`[concurrentSessions] register failed: ${errorMessage(e)}`)
return false
}
}
function isBgSession(): boolean {
return envSessionKind() === 'bg'
}
{
"pid": 12345,
"sessionId": "abc123",
"cwd": "/path/to/project",
"startedAt": 1713200000000,
"kind": "interactive",
"entrypoint": "cli"
}
{
"config": {"wide_screen_mode": true},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**📋 Concurrent Sessions**\n\n---\n\n**SessionKind**:\n• interactive\n• bg\n• daemon\n• daemon-worker\n\n---\n\n**SessionStatus**:\n• busy\n• idle\n• waiting\n\n---\n\n**Functions**:\n• registerSession() - Register session\n• isBgSession() - Check bg session\n• updateSessionName() - Update name\n\n---\n\n**PID File**:{pid}.json"
}
}
]
}
// memory/concurrent-sessions-state.json
{
"sessions": [],
"stats": {
"totalRegistered": 0
},
"lastUpdate": "2026-04-12T11:02:00Z",
"notes": "Concurrent Sessions Skill 创建完成。"
}
| Claude Code | OpenClaw 飞书场景 | |-------------|------------------| | concurrentSessions.ts (200+ lines) | Skill + Sessions | | registerSession() | Register | | SessionKind | Kind type | | PID file | Registry |
此 Skill 在 session registration 时自动运行。
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