skill-compass
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSearch Skills
搜索Skill
Overview
概述
Use real API calls only. Do not output pseudo-instructions.
Primary objective for this deployment:
- ship stable retrieval and complete feedback telemetry for each recommendation cycle
High-level flow:
- build structured query
- call
POST /search_multi - if needed, ask one clarification
- call again
POST /search_multi - return 1-3 final recommendations
- call after user verdict
POST /feedback
Hard limits:
- at most two retrieval passes
- at most one clarification question
- never skip feedback submission after final verdict
仅使用真实API调用。不要输出伪指令。
本次部署的主要目标:
- 交付稳定的检索功能,并为每个推荐周期完成反馈遥测
高级流程:
- 构建结构化查询
- 调用
POST /search_multi - 如有需要,提出一个澄清问题
- 再次调用
POST /search_multi - 返回1-3个最终推荐结果
- 用户给出评价后调用
POST /feedback
硬性限制:
- 最多进行两次检索调用
- 最多提出一个澄清问题
- 收到最终评价后绝不能跳过反馈提交
Operational Integration
运营集成
- base URL env:
https://skills.megatechai.com/ - search endpoint:
POST /search_multi - feedback endpoint:
POST /feedback
Session policy:
- create one at pass #1 and reuse it for pass #2
retrieval_session_id - always set explicitly (
roundthen1)2 - when pass #2 is used, always set to pass #1
parent_search_idsearch_id
- 基础URL环境变量:
https://skills.megatechai.com/ - 搜索端点:
POST /search_multi - 反馈端点:
POST /feedback
会话策略:
- 在第一次调用时生成一个,并在第二次调用中复用
retrieval_session_id - 必须显式设置参数(第一次为
round,第二次为1)2 - 当进行第二次调用时,必须将设置为第一次调用返回的
parent_search_idsearch_id
Request Contract (/search_multi
)
/search_multi请求契约 (/search_multi
)
/search_multijson
{
"query": "optional broad query",
"query_fields": {
"name": "short capability label",
"description": "core problem",
"when_to_use": "triggering scenario",
"sections": "optional expected coverage"
},
"weights": {
"name": 0.1,
"description": 0.6,
"when_to_use": 0.2,
"sections": 0.1
},
"top_k": 10,
"candidate_k": 200,
"quality_weight": 0.1,
"retrieval_session_id": "optional session id",
"round": 1,
"parent_search_id": "optional previous search id",
"clarification_used": false,
"clarification_text": "optional short summary",
"consent_granted": true
}Field rules:
- : shared across pass #1 and pass #2
retrieval_session_id - : pass number (
round,1, ...), API records only and does not block2 - : pass #2 points to pass #1
parent_search_idsearch_id - : true only when pass #2 is triggered by clarification
clarification_used - : short summary of clarification reason
clarification_text - : whether detailed telemetry may be stored
consent_granted - : preferred strongest signal; keep concise and task-focused
query_fields.description - keep unknown fields empty instead of copying the same sentence into all fields
Language rule:
- if user input is not English, translate to natural English before sending payload text
json
{
"query": "optional broad query",
"query_fields": {
"name": "short capability label",
"description": "core problem",
"when_to_use": "triggering scenario",
"sections": "optional expected coverage"
},
"weights": {
"name": 0.1,
"description": 0.6,
"when_to_use": 0.2,
"sections": 0.1
},
"top_k": 10,
"candidate_k": 200,
"quality_weight": 0.1,
"retrieval_session_id": "optional session id",
"round": 1,
"parent_search_id": "optional previous search id",
"clarification_used": false,
"clarification_text": "optional short summary",
"consent_granted": true
}字段规则:
- : 在第一次和第二次调用间共享
retrieval_session_id - : 调用次数(
round、1...),仅用于API记录,不会阻止调用2 - : 第二次调用时指向第一次调用的
parent_search_idsearch_id - : 仅当第二次调用是由澄清问题触发时设为
clarification_usedtrue - : 澄清原因的简短总结
clarification_text - : 是否允许存储详细遥测数据
consent_granted - : 优先级最高的信号;保持简洁且聚焦于任务
query_fields.description - 未知字段留空,不要将同一句话复制到所有字段中
语言规则:
- 如果用户输入不是英文,在发送请求前先将其翻译成自然的英文
Response Contract (/search_multi
)
/search_multi响应契约 (/search_multi
)
/search_multijson
{
"search_id": "uuid",
"retrieval_session_id": "uuid-or-provided",
"results": [
{
"skill_id": "owner/repo@skill",
"repo": "repo",
"name": "skill",
"description": "...",
"when_to_use": ["..."],
"weekly_installs_num": 100,
"github_stars_num": 300,
"final_score": 0.8
}
]
}Response notes (envelope response, not array root):
- : anchor for search-level feedback and round linking
search_id - : anchor for session-level feedback
retrieval_session_id - : rank output for recommendation reasoning
results- : GitHub star count of the skill repository
github_stars_num - : weekly install volume
weekly_installs_num - : final retrieval/ranking score
final_score
Validation before using results:
- require as non-empty string
search_id - require as non-empty string
retrieval_session_id - require as array (can be empty)
results - if contract is broken, return parse/contract error and stop
json
{
"search_id": "uuid",
"retrieval_session_id": "uuid-or-provided",
"results": [
{
"skill_id": "owner/repo@skill",
"repo": "repo",
"name": "skill",
"description": "...",
"when_to_use": ["..."],
"weekly_installs_num": 100,
"github_stars_num": 300,
"final_score": 0.8
}
]
}响应说明(信封式响应,而非数组根节点):
- : 用于搜索级反馈和调用关联的锚点
search_id - : 用于会话级反馈的锚点
retrieval_session_id - : 用于推荐推理的排名输出
results- : Skill仓库的GitHub星标数量
github_stars_num - : 每周安装量
weekly_installs_num - : 最终检索/排名得分
final_score
使用结果前的验证:
- 要求为非空字符串
search_id - 要求为非空字符串
retrieval_session_id - 要求为数组(可以为空)
results - 如果契约被破坏,返回解析/契约错误并终止流程
Feedback Contract (/feedback
)
/feedback反馈契约 (/feedback
)
/feedbackSearch-level feedback:
json
{
"target_type": "search",
"search_id": "search-id",
"feedback_type": "thumb_up",
"selected_skill_ids": ["owner/repo@skill"],
"comment": "optional"
}Session-level feedback:
json
{
"target_type": "session",
"retrieval_session_id": "session-id",
"feedback_type": "thumb_up",
"selected_skill_ids": ["owner/repo@skill"],
"comment": "optional"
}Feedback types:
thumb_upirrelevantclicked_only
Feedback policy:
- prefer for final user verdict
target_type=session - fallback to only when session id is unavailable
target_type=search - include when user explicitly approves/rejects specific items
selected_skill_ids - keep short and factual; omit if none
comment
搜索级反馈:
json
{
"target_type": "search",
"search_id": "search-id",
"feedback_type": "thumb_up",
"selected_skill_ids": ["owner/repo@skill"],
"comment": "optional"
}会话级反馈:
json
{
"target_type": "session",
"retrieval_session_id": "session-id",
"feedback_type": "thumb_up",
"selected_skill_ids": ["owner/repo@skill"],
"comment": "optional"
}反馈类型:
thumb_upirrelevantclicked_only
反馈策略:
- 针对用户最终评价,优先使用
target_type=session - 仅当会话ID不可用时,回退到
target_type=search - 当用户明确批准/拒绝特定项时,包含
selected_skill_ids - 保持简短且基于事实;若无则省略
comment
Full Retrieval + Feedback Procedure
完整检索+反馈流程
1) Generate structured query
1) 生成结构化查询
- Transform user need into these fields:
- : short capability label
name - : main problem to solve (strongest field)
description - : triggering scenario
when_to_use - : optional coverage expectation Guidelines:
sections - keep unknown fields empty
- do not duplicate one sentence into all fields
- use only when user explicitly cares about coverage
sections
- call with:
POST /search_multiround=1clarification_used=false- generated once and reused
retrieval_session_id
- keep returned as
search_idsearch_id_round1
- 将用户需求转换为以下字段:
- : 简短的能力标签
name - : 要解决的核心问题(优先级最高的字段)
description - : 触发场景
when_to_use - : 可选的覆盖范围预期 指导原则:
sections - 未知字段留空
- 不要将同一句话复制到所有字段中
- 仅当用户明确关注覆盖范围时使用
sections
- 调用,参数包括:
POST /search_multiround=1clarification_used=false- 生成一个并复用
retrieval_session_id
- 将返回的保存为
search_idsearch_id_round1
2) Clarification decision
2) 澄清决策
- if top results are coherent: skip clarification, finalize
- if top results split: ask exactly one targeted clarification
Use clarification when one or more is true:
- top candidates represent different intents (for example tooling vs process)
- top 2 scores are close and imply different recommendation directions
- user request is under-specified for an irreversible recommendation
Clarification question quality bar:
- one question only
- present 2-3 concrete options found in pass #1
- ask for one decisive preference, not open-ended brainstorming
- 如果顶部结果连贯:跳过澄清,直接定稿
- 如果顶部结果分散:提出恰好一个针对性的澄清问题
满足以下任一条件时使用澄清:
- 顶部候选结果代表不同意图(例如工具类 vs 流程类)
- 前两个得分接近且暗示不同的推荐方向
- 用户请求的描述不够明确,无法给出不可逆的推荐
澄清问题的质量标准:
- 仅提一个问题
- 展示第一次调用中找到的2-3个具体选项
- 请求明确的偏好选择,而非开放式的头脑风暴
3) Regenerate structured query and retrieve again (only if clarification happened)
3) 重新生成结构化查询并再次检索(仅在进行澄清后执行)
- regenerate full query object (not only a raw append)
- call with:
POST /search_multiround=2- same
retrieval_session_id parent_search_id=search_id_round1clarification_used=true- short
clarification_text
- finalize with 1-3 recommendations
Final recommendation output must include per item:
skill_id- fit reason linked to user intent/query fields
final_scoregithub_stars_num
- 重新生成完整的查询对象(不仅是追加内容)
- 调用,参数包括:
POST /search_multiround=2- 相同的
retrieval_session_id parent_search_id=search_id_round1clarification_used=true- 简短的
clarification_text
- 最终给出1-3个推荐结果
最终推荐输出必须包含每个项的:
skill_id- 与用户意图/查询字段相关的适配理由
final_scoregithub_stars_num
4) Feedback submission
4) 反馈提交
After user accepts/rejects recommendations, call .
POST /feedbackRecommended mapping:
- user approves final recommendation ->
thumb_up - user says irrelevant/wrong direction ->
irrelevant - user clicked but no clear verdict ->
clicked_only
Feedback timing rules:
- do not send final feedback before user verdict exists
- once verdict exists, send exactly one final feedback event for this session
- if user updates verdict in the same conversation, send one additional corrected feedback event
用户接受/拒绝推荐后,调用。
POST /feedback推荐映射规则:
- 用户批准最终推荐 ->
thumb_up - 用户表示不相关/方向错误 ->
irrelevant - 用户仅点击但无明确评价 ->
clicked_only
反馈时间规则:
- 在用户给出评价前不要发送最终反馈
- 一旦收到评价,针对本次会话发送恰好一个最终反馈事件
- 如果用户在同一场对话中更新评价,发送一个额外的修正反馈事件
End-to-End Example
端到端示例
1) Pass #1
1) 第一次调用
json
POST /search_multi
{
"query_fields": {
"description": "find a skill to author and validate new skills"
},
"top_k": 10,
"candidate_k": 200,
"quality_weight": 0.1,
"retrieval_session_id": "sess-abc",
"round": 1,
"clarification_used": false,
"consent_granted": true
}json
POST /search_multi
{
"query_fields": {
"description": "find a skill to author and validate new skills"
},
"top_k": 10,
"candidate_k": 200,
"quality_weight": 0.1,
"retrieval_session_id": "sess-abc",
"round": 1,
"clarification_used": false,
"consent_granted": true
}2) Pass #2
2) 第二次调用
json
POST /search_multi
{
"query_fields": {
"name": "writing-skills",
"description": "author reusable skills and verify quality before release",
"when_to_use": "after deciding to create or edit a skill",
"sections": "testing, anti-patterns, deployment"
},
"weights": {
"name": 0.2,
"description": 0.45,
"when_to_use": 0.25,
"sections": 0.1
},
"top_k": 6,
"candidate_k": 150,
"quality_weight": 0.1,
"retrieval_session_id": "sess-abc",
"round": 2,
"parent_search_id": "<search_id_round1>",
"clarification_used": true,
"clarification_text": "focus on writing-skills instead of generic skill discovery",
"consent_granted": true
}json
POST /search_multi
{
"query_fields": {
"name": "writing-skills",
"description": "author reusable skills and verify quality before release",
"when_to_use": "after deciding to create or edit a skill",
"sections": "testing, anti-patterns, deployment"
},
"weights": {
"name": 0.2,
"description": 0.45,
"when_to_use": 0.25,
"sections": 0.1
},
"top_k": 6,
"candidate_k": 150,
"quality_weight": 0.1,
"retrieval_session_id": "sess-abc",
"round": 2,
"parent_search_id": "<search_id_round1>",
"clarification_used": true,
"clarification_text": "focus on writing-skills instead of generic skill discovery",
"consent_granted": true
}3) Feedback
3) 反馈
json
POST /feedback
{
"target_type": "session",
"retrieval_session_id": "sess-abc",
"feedback_type": "thumb_up",
"selected_skill_ids": ["obra/superpowers@writing-skills"],
"comment": "second pass solved ambiguity"
}json
POST /feedback
{
"target_type": "session",
"retrieval_session_id": "sess-abc",
"feedback_type": "thumb_up",
"selected_skill_ids": ["obra/superpowers@writing-skills"],
"comment": "second pass solved ambiguity"
}Error Handling
错误处理
- if API call fails after retry: return concrete error and stop
- if API returns non-JSON/invalid schema: return contract error and stop
- if pass #1 returns empty : tell user no relevant skills found and request refined intent (no pass #2 unless this is the one clarification)
results - do not fabricate retrieval results
- do not continue to recommendation stage without at least one successful retrieval
- 如果API调用重试后仍然失败:返回具体错误并终止流程
- 如果API返回非JSON/无效 schema:返回契约错误并终止流程
- 如果第一次调用返回空:告知用户未找到相关Skill,并请求细化意图(除非这是唯一的澄清请求,否则不进行第二次调用)
results - 不要编造检索结果
- 至少成功完成一次检索后,才能进入推荐阶段
Completion Rules
完成规则
- recommend 1-3 skills and briefly explain why they are relevant to user needs
- DO NOT show users or
final_scoreweekly_installs_num - display the GitHub star count of the repository it belongs to. Make it explicit that this is the star count of the GitHub repository
- when launch goal is explicit, state which recommendation helps API launch vs skill authoring
- stop after pass #2
- after final user verdict, call
POST /feedback
- 推荐1-3个Skill,并简要说明它们与用户需求的相关性
- 不要向用户展示或
final_scoreweekly_installs_num - 显示其所属仓库的GitHub星标数量。要明确说明这是GitHub仓库的星标数量
- 当启动目标明确时,说明哪个推荐有助于API启动 vs Skill创作
- 第二次调用后终止流程
- 用户给出最终评价后,调用
POST /feedback
Common Mistakes
常见错误
- parsing as array root instead of envelope response
/search_multi - forgetting to persist /
search_idretrieval_session_id - skipping on pass #2
parent_search_id - asking a second clarification question
- skipping or
consent_grantedround - not sending after final user verdict
/feedback
- 将的响应解析为数组根节点而非信封式响应
/search_multi - 忘记保存/
search_idretrieval_session_id - 第二次调用时遗漏
parent_search_id - 提出第二个澄清问题
- 遗漏或
consent_granted参数round - 用户给出最终评价后未调用
/feedback