Install
openclaw skills install skill-grepUse when a user is trying to discover an installable or reusable skill or workflow, especially when they ask for a skill for a task, want to compare nearby s...
openclaw skills install skill-grepUse real API calls only. Do not output pseudo-instructions.
Primary objective for this deployment:
High-level flow:
POST /search_multi_fieldPOST /search_multi_field againPOST /feedback after user verdictHard limits:
https://skills.megatechai.com/POST /search_multi_fieldPOST /feedbackSession policy:
retrieval_session_id at pass #1 and reuse it for pass #2round explicitly (1 then 2)parent_search_id to pass #1 search_id/search_multi_field){
"origin_query": "user's original input query",
"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:
origin_query: user's original natural language inputretrieval_session_id: shared across pass #1 and pass #2round: pass number (1, 2, ...), API records only and does not blockparent_search_id: pass #2 points to pass #1 search_idclarification_used: true only when pass #2 is triggered by clarificationclarification_text: short summary of clarification reasonconsent_granted: whether detailed telemetry may be storedquery_fields.description: preferred strongest signal; keep concise and task-focusedLanguage rule:
origin_query as the original user input (may be non-English)/search_multi_field){
"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):
search_id: anchor for search-level feedback and round linkingretrieval_session_id: anchor for session-level feedbackresults: rank output for recommendation reasoning
github_stars_num: GitHub star count of the skill repositoryweekly_installs_num: weekly install volumefinal_score: final retrieval/ranking scoreValidation before using results:
search_id as non-empty stringretrieval_session_id as non-empty stringresults as array (can be empty)/feedback)Search-level feedback:
{
"target_type": "search",
"search_id": "search-id",
"feedback_type": "thumb_up",
"selected_skill_ids": ["owner/repo@skill"],
"comment": "optional"
}
Session-level feedback:
{
"target_type": "session",
"retrieval_session_id": "session-id",
"feedback_type": "thumb_up",
"selected_skill_ids": ["owner/repo@skill"],
"comment": "optional"
}
Feedback types:
thumb_upirrelevantclicked_onlyFeedback policy:
target_type=session for final user verdicttarget_type=search only when session id is unavailableselected_skill_ids when user explicitly approves/rejects specific itemscomment short and factual; omit if noneorigin_query: user's original input (keep as-is, may be non-English)name: short capability labeldescription: main problem to solve (strongest field)when_to_use: triggering scenariosections: optional coverage expectation
Guidelines:sections only when user explicitly cares about coveragePOST /search_multi_field with:
round=1clarification_used=falseretrieval_session_id generated once and reusedsearch_id as search_id_round1Use clarification when one or more is true:
Clarification question quality bar:
POST /search_multi_field with:
origin_query: same as pass #1 (user's original input)round=2retrieval_session_idparent_search_id=search_id_round1clarification_used=trueclarification_textFinal recommendation output must include per item:
skill_idfinal_scoregithub_stars_numAfter user accepts/rejects recommendations, call POST /feedback.
Recommended mapping:
thumb_upirrelevantclicked_onlyFeedback timing rules:
POST /search_multi_field
{
"origin_query": "I need a skill to help me write and validate new skills",
"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
}
POST /search_multi_field
{
"origin_query": "I need a skill to help me write and validate new skills",
"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
}
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"
}
results: tell user no relevant skills found and request refined intent (no pass #2 unless this is the one clarification)final_score or weekly_installs_numPOST /feedbackWhen user wants to download a recommended skill, please provide feedback first, and then download the skills as follows:
Option 1: Primary method (one-click install):
npx skills add https://github.com/owner/repo --skill skill_name
Example for a skill frontend-design from repo anthropics/skills:
npx skills add https://github.com/anthropics/skills --skill frontend-design
Option 2: Manual download:
You can manually download from GitHub repo and place in the correct local skills directory.
/search_multi_field as array root instead of envelope responseorigin_query in the requestsearch_id / retrieval_session_idparent_search_id on pass #2consent_granted or round/feedback after final user verdict