Resources
1Install
npx skillscat add maxoreric/sop-engine/skills-user-confirm-skill Install via the SkillsCat registry.
SKILL.md
user-confirm-skill
用途: 判别式确认 - 展示内容并获取用户反馈
核心理念:
- 做选择题,不做填空题
- 人类擅长判别(喜不喜欢),不擅长生成(描述细节)
- 展示具体方案,让用户说"对/不对"
输入参数
input:
content: object | string # 要确认的内容(方案、结果等)
format: string # 展示格式(见下方)
question: string # 确认问题
options: array # 可选:预定义的选项format 选项
| 格式 | 说明 | 适用场景 |
|---|---|---|
visual_summary |
可视化摘要(emoji + 结构化) | 展示设计方案 |
file_list_with_summary |
文件列表 + 功能说明 | 展示执行结果 |
comparison_table |
对比表格 | 展示多个选项 |
markdown |
完整 Markdown | 通用 |
simple |
简单文本 | 快速确认 |
输出
output:
approved: boolean # 是否通过
satisfied: boolean # 是否满意(同义,兼容性)
confidence: number # 用户信心(1-10)
comments: string # 用户反馈
specific_issues: array # 具体问题点(如果有)
suggestions: array # 改进建议(如果有)执行逻辑
1. 格式化内容
根据 format 参数,将 content 格式化为易读的展示:
def format_content(content, format_type):
if format_type == "visual_summary":
return format_visual_summary(content)
elif format_type == "file_list_with_summary":
return format_file_list(content)
elif format_type == "comparison_table":
return format_comparison(content)
elif format_type == "markdown":
return content # 已经是 markdown
else:
return str(content)2. 展示给用户
展示模板:
[格式化的内容]
{question}
请回答:
✅ 通过/满意/可以
❌ 需要调整(请说明哪里需要改)
❓ 有疑问(请提出)3. 解析用户回复
识别关键词:
| 用户回复 | approved | confidence |
|---|---|---|
| "通过" / "可以" / "满意" / "好的" | true | 9 |
| "基本可以" / "还行" / "差不多" | true | 7 |
| "需要调整" / "不太对" / "有问题" | false | 5 |
| "完全不对" / "重新来" | false | 2 |
4. 提取反馈
如果用户说"需要调整",引导提取具体问题:
Claude: "明白了,具体哪里需要调整?我可以帮你改进。"
用户: "workflow 太复杂了,而且缺少 XXX 功能"
→ specific_issues: ["workflow 过于复杂", "缺少 XXX 功能"]
→ suggestions: ["简化 workflow", "增加 XXX 功能"]实现示例
示例 1: 展示设计方案
输入:
content:
system_name: health-system
structure:
agents: 1
skills: 8
workflows: 3
workflows:
- name: daily-check
trigger: "21:00"
- name: weekly-report
trigger: "Sunday 20:00"
- name: checkup-analysis
trigger: "file_upload"
format: visual_summary
question: "这个方案符合你的预期吗?需要调整哪里?"Claude 输出:
我已经完成设计!这是方案摘要:
📁 系统结构:
- 1 个 Agent(健康顾问)
- 8 个 Skills(体检分析、指标追踪等)
- 3 个 Workflows(每日检查、每周报告、体检分析)
🔄 核心流程:
① 每天 21:00 自动检查当日数据,生成健康提醒
② 每周日汇总本周情况,分析趋势
③ 上传体检报告时,自动分析并更新健康档案
📊 数据管理:
- 个人档案:基础信息、病史
- 指标记录:按日期存储
- 报告输出:Markdown 格式
这个方案符合你的预期吗?需要调整哪里?
请回答:
✅ 通过/满意/可以
❌ 需要调整(请说明哪里需要改)
❓ 有疑问(请提出)用户回复: "看起来不错,可以开始创建"
输出:
{
"approved": true,
"satisfied": true,
"confidence": 9,
"comments": "看起来不错,可以开始创建",
"specific_issues": [],
"suggestions": []
}示例 2: 用户提出调整
用户回复: "需要调整,我还想要饮食记录功能,而且每日检查改到早上 8 点"
Claude 追问:
明白了!你希望:
1. 增加饮食记录功能
2. 每日检查改到早上 8:00
还有其他需要调整的吗?用户: "没了"
输出:
{
"approved": false,
"satisfied": false,
"confidence": 7,
"comments": "需要调整,我还想要饮食记录功能,而且每日检查改到早上 8 点",
"specific_issues": [
"缺少饮食记录功能",
"每日检查时间不合适(应该是早上 8:00)"
],
"suggestions": [
"增加 diet-log-skill",
"调整 daily-check workflow 的触发时间为 08:00"
]
}示例 3: 展示执行结果
输入:
content:
created_files:
- "health-system/.claude/agents/health-advisor.md"
- "health-system/.claude/skills/checkup-analysis/SKILL.md"
- "health-system/.claude/workflows/daily-check.yaml"
# ... 更多文件
summary:
total_files: 25
agents: 1
skills: 8
workflows: 3
format: file_list_with_summary
question: "试用一下,有没有不符合预期的地方?"Claude 输出:
✅ 系统创建完成!
📁 health-system/
├── .claude/
│ ├── agents/health-advisor.md
│ ├── skills/ (8 个)
│ │ ├── checkup-analysis/
│ │ ├── health-indicators/
│ │ ├── risk-assessment/
│ │ └── ...
│ └── workflows/ (3 个)
│ ├── daily-check.yaml
│ ├── weekly-report.yaml
│ └── checkup-analysis.yaml
├── data/
│ ├── profile.json (示例)
│ └── indicators/
├── outputs/
└── README.md
🚀 下一步:
1. 填写 data/profile.json(你的基本信息)
2. 试用: "执行每日健康检查"
3. 上传体检报告测试分析功能
试用一下,有没有不符合预期的地方?
请回答:
✅ 满意/没问题
❌ 有问题(请说明)格式化函数
visual_summary 格式
def format_visual_summary(content):
"""
可视化摘要格式
使用 emoji + 结构化展示
"""
output = []
# 系统结构
if "structure" in content:
output.append("📁 系统结构:")
structure = content["structure"]
if "agents" in structure:
output.append(f" - {structure['agents']} 个 Agent")
if "skills" in structure:
output.append(f" - {structure['skills']} 个 Skills")
if "workflows" in structure:
output.append(f" - {structure['workflows']} 个 Workflows")
# 核心流程
if "workflows" in content:
output.append("\n🔄 核心流程:")
for i, wf in enumerate(content["workflows"], 1):
trigger = wf.get("trigger", "手动触发")
output.append(f" {chr(9311 + i)} {wf['name']}: {trigger}")
# 数据管理
if "data_structure" in content:
output.append("\n📊 数据管理:")
for item in content["data_structure"]:
output.append(f" - {item}")
return "\n".join(output)file_list_with_summary 格式
def format_file_list(content):
"""
文件列表 + 摘要格式
"""
output = ["✅ 系统创建完成!\n"]
# 文件树
if "created_files" in content:
output.append("📁 创建的文件:")
# 简化显示,只显示关键文件
for file in content["created_files"][:10]:
output.append(f" - {file}")
if len(content["created_files"]) > 10:
output.append(f" ... 共 {len(content['created_files'])} 个文件")
# 摘要
if "summary" in content:
output.append("\n📊 摘要:")
summary = content["summary"]
for key, value in summary.items():
output.append(f" - {key}: {value}")
return "\n".join(output)关键设计
1. 判别式交互
❌ 错误方式(生成式):
Claude: "你想要什么功能?"
用户: "呃...我想要...那个...嗯..."✅ 正确方式(判别式):
Claude: "我设计了这个方案:[具体方案]。符合预期吗?"
用户: "基本可以,但需要调整 X"2. 引导式反馈
当用户说"需要调整"时,不要让用户自己描述:
❌ 错误:
Claude: "好的,请详细描述你想要的调整"
用户: "呃...怎么说呢..."✅ 正确:
Claude: "明白了!具体哪里需要调整?
A. 功能缺失(缺少某个功能)
B. 流程问题(步骤不对)
C. 时间安排(触发时间)
D. 其他(请说明)"3. 信心评估
根据用户的措辞判断信心:
| 措辞 | confidence | 含义 |
|---|---|---|
| "完美" / "很好" | 10 | 非常满意 |
| "可以" / "不错" | 9 | 满意 |
| "还行" / "基本可以" | 7 | 勉强接受 |
| "有些问题" | 5 | 不满意但可修复 |
| "不对" / "重新来" | 2 | 严重不满 |
使用场景
场景 1: 设计方案确认
input:
content: <设计方案>
format: "visual_summary"
question: "这个方案符合你的预期吗?"场景 2: 执行结果验证
input:
content: <执行结果>
format: "file_list_with_summary"
question: "试用一下,有没有不符合预期的地方?"场景 3: 快速二选一
input:
content: "方案 A vs 方案 B"
format: "comparison_table"
question: "你更倾向哪个?"
options: ["A", "B", "都可以", "都不要"]实现注意事项
1. 自然语言理解
需要识别各种表达:
- 肯定:✅ "可以" / "好的" / "满意" / "没问题" / "👍"
- 否定:❌ "不行" / "需要调整" / "有问题" / "重新来"
- 中性:❓ "还行" / "差不多" / "基本可以"
2. 提取具体反馈
使用简单的 NLP 技巧:
- 识别否定词:不、没、缺、少
- 识别需求词:需要、想要、希望、增加
- 识别问题词:问题、错误、不对、太...
3. 超时处理
如果用户长时间没回复:
(等待 24 小时后)
Claude: "我还在等待你的确认。如果暂时没时间查看,我会先执行当前方案,后续你可以再调整。"评价标准
见 criteria.md
版本历史
- v1.0.0 (2026-01-19): 初始版本