Skip to content

M10/Phase 1: Embedding-based skill matcher #75

@bug-ops

Description

@bug-ops

Epic: #74
Effort: M (5 SP)

Deliverables

  • Embed skill descriptions (frontmatter description field) at load time using LlmProvider::embed()
  • SkillMatcher struct: 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_skills config field (default: 5) to limit injected skills
  • ZEPH_SKILLS_MAX_ACTIVE env 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_skills configurable 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew functionalityskillszeph-skills crate

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions