Skill discovery is the process of finding relevant skills for a given task or query. FastSkill provides multiple discovery methods to ensure AI agents can find the most appropriate skills for their needs.
Effective skill discovery is crucial for AI agent performance. FastSkill uses multiple algorithms and metadata to provide accurate, relevant results.
Full-text search across skill descriptions, names, and metadata:
Copy
async def text_search_example(): service = FastSkillService() await service.initialize() # Search by natural language skills = await service.discover_skills("extract text from PDF documents") print(f"Found {len(skills)} text extraction skills") # Search by functionality skills = await service.discover_skills("convert documents to different formats") print(f"Found {len(skills)} conversion skills") # Search by domain skills = await service.discover_skills("analyze data and create visualizations") print(f"Found {len(skills)} analysis skills") await service.shutdown()
Text search uses TF-IDF (Term Frequency-Inverse Document Frequency) and semantic similarity algorithms to find relevant skills even when exact keywords don’t match.
Combine multiple search criteria for precise results:
Copy
async def advanced_discovery(): service = FastSkillService() await service.initialize() # Define search criteria query = "analyze data from CSV files and create charts" required_capabilities = ["data_analysis", "csv_processing"] preferred_tags = ["data", "analysis", "visualization"] # Multi-criteria search skills = await service.discover_skills(query) # Filter by capabilities capability_matches = [] for skill in skills: skill_capabilities = skill.get('capabilities', '').split(',') if any(cap in skill_capabilities for cap in required_capabilities): capability_matches.append(skill) # Filter by tags tag_matches = [] for skill in capability_matches: skill_tags = skill.get('tags', '').split(',') if any(tag in skill_tags for tag in preferred_tags): tag_matches.append(skill) print(f"🎯 Found {len(tag_matches)} skills matching all criteria") # Show results for skill in tag_matches[:3]: print(f" - {skill['name']}: {skill['description']}") await service.shutdown()
async def fuzzy_search_example(): service = FastSkillService() await service.initialize() # These queries should find similar skills even with variations queries = [ "extrakt text from PDF", # Typo in "extract" "convert to pdf", # Missing "document" context "analize data", # Typo in "analyze" "webscraping", # Alternative spelling "doc conversion", # Abbreviated terms "file format change" # Different terminology ] for query in queries: skills = await service.discover_skills(query) print(f"🔍 '{query}': {len(skills)} matches") if skills: print(f" 💡 Best match: {skills[0]['name']}") await service.shutdown()
async def discovery_analytics(): service = FastSkillService() await service.initialize() # Get discovery statistics all_skills = await service.list_skills() # Analyze capability distribution capability_counts = {} for skill in all_skills: capabilities = skill.get('capabilities', '').split(',') for cap in capabilities: cap = cap.strip() if cap: capability_counts[cap] = capability_counts.get(cap, 0) + 1 print("📊 Capability Distribution:") for cap, count in sorted(capability_counts.items(), key=lambda x: x[1], reverse=True): print(f" {cap}: {count} skills") # Analyze tag distribution tag_counts = {} for skill in all_skills: tags = skill.get('tags', '').split(',') for tag in tags: tag = tag.strip() if tag: tag_counts[tag] = tag_counts.get(tag, 0) + 1 print(f"\n🏷️ Tag Distribution (top 10):") for tag, count in sorted(tag_counts.items(), key=lambda x: x[1], reverse=True)[:10]: print(f" {tag}: {count} skills") await service.shutdown()
Improve metadata: Add more specific descriptions, tags, and capabilities to help the search algorithm understand your skill better.
Check query processing: The search engine may be interpreting queries differently than expected. Try different phrasings.
Performance Issues
Enable caching: Use search result caching to improve performance for repeated queries.
Tune search parameters: Adjust relevance thresholds and result limits based on your use case.
Effective skill discovery requires good metadata. Invest time in writing clear descriptions and choosing relevant tags and capabilities to ensure your skills are easily discoverable.