-
Notifications
You must be signed in to change notification settings - Fork 2
M10/Phase 1: Embedding-based skill matcher #75
Copy link
Copy link
Closed
Labels
Description
Epic: #74
Effort: M (5 SP)
Deliverables
- Embed skill descriptions (frontmatter
descriptionfield) at load time usingLlmProvider::embed() SkillMatcherstruct: stores skill embeddings, performs cosine similarity search- On each user query: embed query -> rank skills by similarity -> inject top-K into system prompt
max_active_skillsconfig field (default: 5) to limit injected skillsZEPH_SKILLS_MAX_ACTIVEenv var override- Only matched skills appear in system prompt (replaces current inject-all behavior)
Acceptance Criteria
- Skills are embedded once at startup (or on reload)
-
SkillMatcher::match_skills(query, limit)returns ranked skills - System prompt includes only top-K relevant skills per query
-
max_active_skillsconfigurable in TOML and env var - Fallback: if embedding fails, inject all skills (current behavior)
- Unit tests for matcher ranking, edge cases (no skills, single skill)
Reactions are currently unavailable