Thanks to visit codestin.com
Credit goes to github.com

Skip to content

v0.2.0 async discovery files#4

Merged
maxvaega merged 47 commits intomainfrom
001-v0-2-async-discovery-files
Nov 16, 2025
Merged

v0.2.0 async discovery files#4
maxvaega merged 47 commits intomainfrom
001-v0-2-async-discovery-files

Conversation

@maxvaega
Copy link
Owner

  • ✅ Full async/await support (adiscover(), ainvoke_skill())
  • ✅ Multi-source skill discovery (project, Anthropic config, plugins, custom paths)
  • ✅ Plugin ecosystem with MCPB manifest support
  • ✅ Priority-based conflict resolution
  • ✅ Fully qualified skill names (plugin:skill-name)
  • ✅ Nested directory structures (up to 5 levels)
  • ✅ Secure file path resolution with traversal prevention
  • ✅ LangChain async integration
  • ✅ Updated examples (async_usage.py, multi_source.py, file_references.py)
  • ✅ Backward compatible with v0.1

maxvaega and others added 16 commits November 15, 2025 15:23
This commit implements User Story 5 from v0.2, enabling discovery of skills
in nested directory structures up to 5 levels deep with security safeguards.

Changes:
- Updated SkillDiscovery.find_skill_files() to use recursive directory walking
- Added _find_skill_files_recursive() helper with depth limit validation
- Implemented circular symlink detection using inode tracking
- Added depth limit warnings when exceeding 5 levels
- Updated async version afind_skill_files() to delegate to sync implementation
- Created example nested skill structure with 4 test skills at various depths
- Created test_nested_discovery.py validation script (all tests pass)

Features:
- Supports both flat and nested directory structures simultaneously
- Depth limit: warns when skills are deeper than 5 levels
- Security: detects and prevents circular symlinks
- Symlink resolution: resolves symlinks to canonical paths before validation
- Backward compatible: max_depth parameter defaults to 5

Test Results:
- Sync Discovery: ✅ PASSED (4/4 skills discovered)
- Async Discovery: ✅ PASSED (4/4 skills discovered)
- Sync/Async Consistency: ✅ PASSED (identical results)

Code Quality:
- All ruff checks passed
- All mypy strict type checks passed
- Full type annotations for new set[tuple[int, int]] parameter

Task Status:
- [X] T044: Recursive directory walking implemented
- [X] T045: Depth limit validation (warn if >5 levels)
- [X] T046: Skill name extraction (already correct from YAML frontmatter)
- [X] T047: Symlink resolution and circular detection
- [X] T048: Sync/async consistency validated
- [X] T049: Example nested structure created

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@maxvaega maxvaega self-assigned this Nov 16, 2025
@maxvaega maxvaega merged commit 2fe01e1 into main Nov 16, 2025
@maxvaega maxvaega deleted the 001-v0-2-async-discovery-files branch November 16, 2025 22:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant