Skill Grep
by @littledinoc
Use 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...
clawhub install skill-grepπ About This Skill
name: skill-grep description: Use 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 skill categories, or need help narrowing discovery results.
Skill Grep
Overview
Use real API calls only. Do not output pseudo-instructions.
Primary objective for this deployment:
High-level flow:
1. build structured query
2. call POST /search_multi_field
3. if needed, ask one clarification
4. call POST /search_multi_field again
5. return 1-3 final recommendations
6. call POST /feedback after user verdict
Hard limits:
Operational Integration
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_idRequest Contract (/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)Response Contract (/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 reasoninggithub_stars_num: GitHub star count of the skill repository
- weekly_installs_num: weekly install volume
- final_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 Contract (/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 noneFull Retrieval + Feedback Procedure
1) Generate structured query
1. Transform user need into these fields:
- origin_query: user's original input (keep as-is, may be non-English)
- name: short capability label
- description: main problem to solve (strongest field)
- when_to_use: triggering scenario
- sections: optional coverage expectation
Guidelines:
- keep unknown fields empty
- do not duplicate one sentence into all fields
- use sections only when user explicitly cares about coverage
1. call POST /search_multi_field with:
- round=1
- clarification_used=false
- retrieval_session_id generated once and reused
2. keep returned search_id as search_id_round1
2) Clarification decision
Use clarification when one or more is true:
Clarification question quality bar:
3) Regenerate structured query and retrieve again (only if clarification happened)
1. regenerate full query object (not only a raw append)
2. call POST /search_multi_field with:
- origin_query: same as pass #1 (user's original input)
- round=2
- same retrieval_session_id
- parent_search_id=search_id_round1
- clarification_used=true
- short clarification_text
3. finalize with 1-3 recommendations
Final recommendation output must include per item:
skill_idfinal_scoregithub_stars_num4) Feedback submission
After user accepts/rejects recommendations, call POST /feedback.
Recommended mapping:
thumb_upirrelevantclicked_onlyFeedback timing rules:
End-to-End Example
1) Pass #1
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
}
2) Pass #2
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": "",
"clarification_used": true,
"clarification_text": "focus on writing-skills instead of generic skill discovery",
"consent_granted": true
}
3) Feedback
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
results: tell user no relevant skills found and request refined intent (no pass #2 unless this is the one clarification)Completion Rules
final_score or weekly_installs_num POST /feedbackInstalling Skills
When 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.
Common Mistakes
/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