feat(skill): integrate agent skills discovery #414

Merged
freemo merged 1 commit from feature/m3-agent-skills-registry into master 2026-02-24 20:28:54 +00:00
Owner

Summary

Adds the agent skills discovery system that scans configurable filesystem paths for Agent Skills Standard folders (containing SKILL.md with YAML front-matter) and registers them as tools in ToolRegistry. This enables runtime discovery of external agent skills and integrates them into the tool routing pipeline.

Changes

  • skills/discovery.py: New module implementing path parsing, directory scanning, SKILL.md front-matter parsing, ToolSpec building, and registration with configurable conflict handling (skip/error/replace strategies).
  • Config: Added skills.agent_skills_paths config key for comma-separated discovery paths.
  • ToolSpec: Extended with source and source_metadata fields for provenance tracking.
  • ToolRegistry.list_tools(): Added source filter parameter to query tools by origin.
  • SkillRegistryService: Rewritten with discover_and_register() and refresh_agent_skills() hooks for on-demand re-scanning.
  • CLI: Updated agents skill tools command with --refresh flag and source metadata in JSON output.
  • Documentation: Updated docs/reference/skill_registry.md with Agent Skills Discovery section covering config, algorithm, SKILL.md format, conflict handling, refresh hook, CLI output, and service API.
  • Tests: 27 Behave scenarios covering config key, path parsing, discovery, ToolSpec building, registration, conflict handling, refresh, and edge cases. 10 Robot Framework integration tests for end-to-end discovery flow. ASV benchmarks for discovery scan performance overhead.

Closes #161

## Summary Adds the agent skills discovery system that scans configurable filesystem paths for Agent Skills Standard folders (containing `SKILL.md` with YAML front-matter) and registers them as tools in `ToolRegistry`. This enables runtime discovery of external agent skills and integrates them into the tool routing pipeline. ### Changes - **`skills/discovery.py`**: New module implementing path parsing, directory scanning, `SKILL.md` front-matter parsing, `ToolSpec` building, and registration with configurable conflict handling (skip/error/replace strategies). - **Config**: Added `skills.agent_skills_paths` config key for comma-separated discovery paths. - **`ToolSpec`**: Extended with `source` and `source_metadata` fields for provenance tracking. - **`ToolRegistry.list_tools()`**: Added `source` filter parameter to query tools by origin. - **`SkillRegistryService`**: Rewritten with `discover_and_register()` and `refresh_agent_skills()` hooks for on-demand re-scanning. - **CLI**: Updated `agents skill tools` command with `--refresh` flag and source metadata in JSON output. - **Documentation**: Updated `docs/reference/skill_registry.md` with Agent Skills Discovery section covering config, algorithm, SKILL.md format, conflict handling, refresh hook, CLI output, and service API. - **Tests**: 27 Behave scenarios covering config key, path parsing, discovery, ToolSpec building, registration, conflict handling, refresh, and edge cases. 10 Robot Framework integration tests for end-to-end discovery flow. ASV benchmarks for discovery scan performance overhead. Closes #161
freemo added this to the v3.1.0 milestone 2026-02-24 12:38:56 +00:00
freemo force-pushed feature/m3-agent-skills-registry from 3a1825148a
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 18s
CI / security (pull_request) Successful in 31s
CI / typecheck (pull_request) Successful in 34s
CI / integration_tests (pull_request) Successful in 3m18s
CI / unit_tests (pull_request) Failing after 6m41s
CI / docker (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 16m13s
CI / coverage (pull_request) Failing after 23m34s
to 0db0fe6bb2
Some checks failed
CI / quality (pull_request) Successful in 18s
CI / lint (pull_request) Successful in 20s
CI / benchmark-publish (pull_request) Has been skipped
CI / security (pull_request) Successful in 44s
CI / build (pull_request) Successful in 23s
CI / typecheck (pull_request) Successful in 53s
CI / integration_tests (pull_request) Successful in 3m33s
CI / unit_tests (pull_request) Failing after 14m51s
CI / docker (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 19m6s
CI / coverage (pull_request) Failing after 23m50s
2026-02-24 14:33:57 +00:00
Compare
freemo force-pushed feature/m3-agent-skills-registry from 0db0fe6bb2
Some checks failed
CI / quality (pull_request) Successful in 18s
CI / lint (pull_request) Successful in 20s
CI / benchmark-publish (pull_request) Has been skipped
CI / security (pull_request) Successful in 44s
CI / build (pull_request) Successful in 23s
CI / typecheck (pull_request) Successful in 53s
CI / integration_tests (pull_request) Successful in 3m33s
CI / unit_tests (pull_request) Failing after 14m51s
CI / docker (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 19m6s
CI / coverage (pull_request) Failing after 23m50s
to 5eb58c1dd4
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 16s
CI / build (pull_request) Successful in 17s
CI / quality (pull_request) Successful in 23s
CI / security (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 37s
CI / integration_tests (pull_request) Successful in 2m45s
CI / benchmark-regression (pull_request) Successful in 16m7s
CI / unit_tests (pull_request) Successful in 19m50s
CI / docker (pull_request) Successful in 38s
CI / coverage (pull_request) Failing after 36m46s
2026-02-24 15:02:17 +00:00
Compare
freemo force-pushed feature/m3-agent-skills-registry from 5eb58c1dd4
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 16s
CI / build (pull_request) Successful in 17s
CI / quality (pull_request) Successful in 23s
CI / security (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 37s
CI / integration_tests (pull_request) Successful in 2m45s
CI / benchmark-regression (pull_request) Successful in 16m7s
CI / unit_tests (pull_request) Successful in 19m50s
CI / docker (pull_request) Successful in 38s
CI / coverage (pull_request) Failing after 36m46s
to 25c571541f
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 16s
CI / build (pull_request) Successful in 25s
CI / quality (pull_request) Successful in 33s
CI / security (pull_request) Successful in 36s
CI / typecheck (pull_request) Successful in 37s
CI / integration_tests (pull_request) Successful in 2m48s
CI / unit_tests (pull_request) Successful in 17m30s
CI / benchmark-regression (pull_request) Successful in 17m43s
CI / docker (pull_request) Successful in 1m2s
CI / coverage (pull_request) Successful in 46m42s
CI / lint (push) Successful in 13s
CI / quality (push) Successful in 26s
CI / security (push) Successful in 53s
CI / typecheck (push) Successful in 53s
CI / build (push) Successful in 33s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 4m2s
CI / benchmark-publish (push) Successful in 13m12s
CI / unit_tests (push) Successful in 20m41s
CI / docker (push) Successful in 1m14s
CI / coverage (push) Successful in 1h7m53s
2026-02-24 19:41:31 +00:00
Compare
freemo scheduled this pull request to auto merge when all checks succeed 2026-02-24 19:41:41 +00:00
freemo merged commit 25c571541f into master 2026-02-24 20:28:54 +00:00
freemo deleted branch feature/m3-agent-skills-registry 2026-02-24 20:28:55 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Blocks
Reference
cleveragents/cleveragents-core!414
No description provided.