Use when needing to discover available skills across project/user directories - automatically scans for SKILL.md files, parses YAML frontmatter, extracts metadata (name, description, type, MCP requirements), and builds comprehensive skill catalog. Enables intelligent skill selection and auto-invocation. NO competitor has automated skill discovery system.
View on GitHubkrzemienski/shannon-framework
shannon
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/krzemienski/shannon-framework/blob/main/skills/skill-discovery/SKILL.md -a claude-code --skill skill-discoveryInstallation paths:
.claude/skills/skill-discovery/# Automatic Skill Discovery & Inventory ## Overview This skill provides systematic discovery of ALL available skills on the system, enabling automatic skill selection and invocation instead of manual checklist-based approaches. **Core Principle**: Skills discovered automatically, selected intelligently, invoked explicitly **Output**: Comprehensive skill catalog with metadata for intelligent selection **Why This Matters**: ALL competitor frameworks (SuperClaude, Hummbl, Superpowers) rely on manual skill discovery via checklists. Shannon automates this completely. --- ## When to Use **Trigger Conditions**: - Session start (via SessionStart hook) - User requests skill inventory (/shannon:discover_skills) - Before command execution (check applicable skills) - When updating skill catalog after adding new skills **Symptoms That Need This**: - Forgetting applicable skills exists - Manual "list skills in your mind" checklist burden - Inconsistent skill application across sessions - Time wasted re-discovering skills --- ## The Discovery Protocol ### Step 1: Scan All Skill Directories **Directories to Scan**: ```bash # Project skills <project_root>/skills/*/SKILL.md shannon-plugin/skills/*/SKILL.md # User skills ~/.claude/skills/*/SKILL.md # Plugin skills (if plugin system available) <plugin_install_dir>/*/skills/*/SKILL.md ``` **Scanning Method**: ```bash # Use Glob for efficient discovery project_skills = Glob(pattern="skills/*/SKILL.md") user_skills = Glob(pattern="~/.claude/skills/*/SKILL.md", path=Path.home()) # Combine results all_skill_files = project_skills + user_skills ``` **Output**: List of all SKILL.md file paths ### Step 2: Parse Metadata from Each Skill **For each SKILL.md file**: 1. **Extract skill name** from directory: ``` skills/spec-analysis/SKILL.md → skill_name = "spec-analysis" ``` 2. **Read and parse YAML frontmatter**: ```python # Read file content = Read(skill_file) # Extract frontmatter (between --- delimi