| 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:
- ship stable retrieval and complete feedback telemetry for each recommendation cycle
High-level flow:
- build structured query
- call
POST /search_multi_field
- if needed, ask one clarification
- call
POST /search_multi_field again
- return 1-3 final recommendations
- call
POST /feedback after user verdict
Hard limits:
- at most two retrieval passes
- at most one clarification question
- never skip feedback submission after final verdict
If clarification was asked, the next user reply MUST be treated as continuation input for this same retrieval session. Do not exit this skill before pass #2 (or explicit stop on API failure).
Operational Integration
- base URL env:
https://skills.megatechai.com/
- search endpoint:
POST /search_multi_field
- feedback endpoint:
POST /feedback
Session policy:
- create one
retrieval_session_id at pass #1 and reuse it for pass #2
- always set
round explicitly (1 then 2)
- when pass #2 is used, always set
parent_search_id to pass #1 search_id
Request 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 input
retrieval_session_id: shared across pass #1 and pass #2
round: pass number (1, 2, ...), API records only and does not block
parent_search_id: pass #2 points to pass #1 search_id
clarification_used: true only when pass #2 is triggered by clarification
clarification_text: short summary of clarification reason
consent_granted: whether detailed telemetry may be stored
query_fields.description: preferred strongest signal; keep concise and task-focused
- 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
- keep
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 linking
retrieval_session_id: anchor for session-level feedback
results: rank output for recommendation reasoning
github_stars_num: GitHub star count of the skill repository
weekly_installs_num: weekly install volume
final_score: final retrieval/ranking score
Validation before using results:
- require
search_id as non-empty string
- require
retrieval_session_id as non-empty string
- require
results as array (can be empty)
- if contract is broken, return parse/contract error and stop
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_up
irrelevant
clicked_only
Feedback policy:
- prefer
target_type=session for final user verdict
- fallback to
target_type=search only when session id is unavailable
- include
selected_skill_ids when user explicitly approves/rejects specific items
- keep
comment short and factual; omit if none
Full Retrieval + Feedback Procedure
1) Generate structured query
- 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
- call
POST /search_multi_field with:
round=1
clarification_used=false
retrieval_session_id generated once and reused
- keep returned
search_id as search_id_round1
2) Clarification decision
- 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
3) Regenerate structured query and retrieve again (only if clarification happened)
- regenerate full query object (not only a raw append)
- 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
- finalize with 1-3 recommendations
Final recommendation output must include per item:
skill_id
- fit reason linked to user intent/query fields
final_score
github_stars_num
4) Feedback submission
After user accepts/rejects recommendations, call POST /feedback.
Recommended 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
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": "<search_id_round1>",
"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
- 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
results: tell user no relevant skills found and request refined intent (no pass #2 unless this is the one clarification)
- do not fabricate retrieval results
- do not continue to recommendation stage without at least one successful retrieval
Completion Rules
- recommend 1-3 skills and briefly explain why they are relevant to user needs
- DO NOT show users
final_score or weekly_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
Installing 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
- parsing
/search_multi_field as array root instead of envelope response
- forgetting to include
origin_query in the request
- forgetting to persist
search_id / retrieval_session_id
- skipping
parent_search_id on pass #2
- asking a second clarification question
- skipping
consent_granted or round
- not sending
/feedback after final user verdict