skills-experimental/ask-user-question-tool/SKILL.md
# Ask User Question Tool Skill 用户提问工具 - MultiSelect + Preview + Uniqueness validation + Chip width。 ## 功能概述 从Claude Code的AskUserQuestionTool提取的交互式问答模式,用于OpenClaw的用户交互。 ## 核心机制 ### MultiSelect Support ```typescript multiSelect: z.boolean().default(false).describe( 'Set to true to allow selecting multiple options. Use when choices are not mutually exclusive.' ) // 单选或多选 // 非互斥选项支持多选 ``` ### Preview Content ```typescript preview: z.string().optional().describe( 'Optional preview content
npx skillsauth add bianhaifeng789-hue/openclaw-config skills-experimental/ask-user-question-toolInstall 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.
用户提问工具 - MultiSelect + Preview + Uniqueness validation + Chip width。
从Claude Code的AskUserQuestionTool提取的交互式问答模式,用于OpenClaw的用户交互。
multiSelect: z.boolean().default(false).describe(
'Set to true to allow selecting multiple options. Use when choices are not mutually exclusive.'
)
// 单选或多选
// 非互斥选项支持多选
preview: z.string().optional().describe(
'Optional preview content rendered when this option is focused.
Use for mockups, code snippets, or visual comparisons.'
)
// 选项focused时显示preview
// 代码片段、mockup等
const UNIQUENESS_REFINE = {
check: (data) => {
const questions = data.questions.map(q => q.question)
if (questions.length !== new Set(questions).size) return false
for (const question of data.questions) {
const labels = question.options.map(opt => opt.label)
if (labels.length !== new Set(labels).size) return false
}
return true
}
}
// 问题必须unique
// 每个问题的选项label必须unique
const ASK_USER_QUESTION_TOOL_CHIP_WIDTH = 15
header: z.string().describe(
`Very short label as chip/tag (max ${CHIP_WIDTH} chars). Examples: "Auth method", "Library".`
)
// Header有长度限制
// 紧凑显示
options: z.array(questionOptionSchema()).min(2).max(4).describe(
'The available choices. Must have 2-4 options.
Each should be a distinct, mutually exclusive choice.'
)
// 2-4个选项
// 没有"Other"(自动提供)
annotations: z.record(z.string(), z.object({
preview: z.string().optional(),
notes: z.string().optional()
})).optional()
// Keyed by question text
// 用户可添加notes
{
"question": "Which library?",
"header": "Library",
"multiSelect": false,
"optionsCount": 3,
"validated": true
}
Option focused → Preview rendered
// 视觉比较
// 更好决策
z.refine → Set comparison → reject duplicates
// 问题唯一
// 选项label唯一
No 'Other' in options → Auto-provided
// 用户可自定义
// 无需显式添加
tools/AskUserQuestionTool/AskUserQuestionTool.tsx (10KB+)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