skill-router
A meta-skill designed to help AI agents intelligently decide which skill to use, evaluate the current skill environment, or vet unfamiliar skills before installation. It reduces redundant checks and clarifies skill choice when multiple options exist or none are obvious.
About this skill
The skill-router acts as a decision-making utility for AI agents, specifically when the choice of which skill to employ is unclear or ambiguous. Its primary function is to prevent common pitfalls such as repeatedly rediscovering already-installed skills, wasting time comparing overlapping capabilities, or installing new skills unnecessarily when the existing environment is already sufficient. This skill is particularly useful in scenarios where an agent might be unsure if a required skill is present, if the user's request maps to multiple existing skills, or if a new, suggested skill should be evaluated for suitability and safety before being added to the agent's toolkit. By centralizing this routing logic, it aims to streamline an agent's workflow and make skill-selection more efficient and deliberate. It is designed to be invoked only when skill choice itself is blocking progress, ensuring that the overhead of routing does not exceed the benefit of the decision. If the routing process would not change the agent's next action, the skill explicitly advises against its own use.
Best use case
This skill is invaluable for AI agents operating in complex environments with a growing number of available skills, especially when users frequently ask for guidance on skill usage or when skill names and functionalities might overlap. It benefits agents by providing a structured approach to skill management and selection, reducing operational friction and improving decision accuracy for users who are unsure how to proceed.
A meta-skill designed to help AI agents intelligently decide which skill to use, evaluate the current skill environment, or vet unfamiliar skills before installation. It reduces redundant checks and clarifies skill choice when multiple options exist or none are obvious.
A clear, actionable decision on which skill to use, whether to install a new skill, or confirmation that the current environment is sufficient for the task.
Practical example
Example input
I need to process some tabular data. Do I have a skill for that? Which one should I use?
Example output
Yes, you have the `data-analyzer` skill installed, which is suitable for tabular data processing. Use that skill.
When to use this skill
- The user asks which skill to use for a task.
- The user asks if a skill already exists for a specific purpose.
- Multiple installed skills plausibly fit the user's request, and the best choice is genuinely unclear.
- The current installed environment may be insufficient for the user's needs, or a new skill needs vetting.
When not to use this skill
- The task should be executed directly without needing a skill decision.
- One installed skill is the obvious and unambiguous match for the task.
- The correct skill is already active, or the user explicitly named the skill to use.
- More routing detail would not change the next practical action of the agent.
How skill-router Compares
| Feature / Agent | skill-router | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | easy | N/A |
Frequently Asked Questions
What does this skill do?
A meta-skill designed to help AI agents intelligently decide which skill to use, evaluate the current skill environment, or vet unfamiliar skills before installation. It reduces redundant checks and clarifies skill choice when multiple options exist or none are obvious.
How difficult is it to install?
The installation complexity is rated as easy. You can find the installation instructions above.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
Top AI Agents for Productivity
See the top AI agent skills for productivity, workflow automation, operational systems, documentation, and everyday task execution.
Best AI Skills for ChatGPT
Find the best AI skills to adapt into ChatGPT workflows for research, writing, summarization, planning, and repeatable assistant tasks.
AI Agents for Freelancers
Browse AI agent skills for freelancers handling client research, proposals, outreach, delivery systems, documentation, and repeatable admin work.
SKILL.md Source
# Skill Router Use this skill only when **skill choice itself** is blocking progress. Its job is to reduce: - repeated discovery of already-installed skills - repeated comparison between overlapping skills - unnecessary installation when the current environment is already enough - routing commentary that costs more than the decision itself If routing will not change the next real action, do not use this skill further. ## Trigger boundary ### Activate when - the user asks which skill to use - the user asks whether a skill already exists for the task - multiple installed skills plausibly fit and the default is genuinely unclear - the current installed environment may be insufficient - the user wants to evaluate an unfamiliar skill before installation ### Do not activate when - the task should just be executed directly - one installed skill is the obvious match - the correct skill is already active - the user explicitly named the skill to use - more routing detail would not change the next action If unsure, prefer silence. ## Main path Follow this path and stop as soon as a sufficient answer appears. ### Step 0 — Decide whether routing is needed Ask: **Will a routing decision materially change the next action?** If no, stop. This task does not need skill-router. ### Step 1 — Prefer installed reality Check the installed environment first. If there is already: - a clearly sufficient installed skill, or - a stable local default for this overlap, use it and stop. ### Step 2 — Test genuine insufficiency Only escalate if the installed set is actually not enough. Use the minimum test: 1. Can an installed skill accept the task input? 2. Can an installed skill produce the needed output? 3. Is the quality sufficient for the user’s real purpose? If all three are yes, stay with the installed path. If any answer is no, continue. ### Step 3 — Discover only for a real gap If the installed environment is genuinely insufficient: - state what capability is missing - keep the candidate set small - prefer concrete candidates over broad browsing - if `find-skills` is installed, prefer delegating discovery to it ### Step 4 — Vet unfamiliar candidates before recommendation If a candidate is unfamiliar, third-party, or broad in permissions: - vet it before recommending installation - compare scope to stated purpose - check source accountability - prefer caution over enthusiasm ## Output style Default outputs should be short and executable. Preferred shapes: - `Use X.` - `The installed set is sufficient; use X.` - `The installed set is not enough; discover candidates.` - `Candidate is unfamiliar; vet before recommendation.` - `This task does not need skill-router.` Do not output long routing analysis unless the user explicitly asks for reasoning. ## Default rules Use these only when they change the decision: - installed beats imagined - sufficient beats newer - dedicated beats general - platform-specific beats generic - recurring overlap should converge to a stable default ## Reference files Read only when needed. | File | Read when | |---|---| | `references/task-to-skill-map.md` | checking or recording a stable local default | | `references/micro-routing-examples.md` | you need short examples for overlap / insufficiency / vetting | | `references/local-overrides-example.md` | the user has an explicit local routing preference | | `references/publish-safe-runtime-contract.md` | vetting an unfamiliar candidate | | `references/resolution-order.md` | you need the expanded version of the main path | | `references/sufficiency-policy.md` | the real question is whether the installed path is actually strong enough for the user’s bar | | `references/default-update-policy.md` | the question is whether a stored default/override should stay, update, narrow, or be ignored | | `references/crowded-environment-policy.md` | environment size is creating fake routing complexity or irrelevant-skill noise | | `references/ambiguity-fallback-policy.md` | routing is needed but the task is still under-specified or unusually ambiguous | | `references/distrust-and-clarification-policy.md` | the user expresses distrust, uncertainty, or the real issue may be missing task information | | `references/capability-taxonomy.md` | the task is unusually ambiguous and installed reality still does not reveal the dominant path | | `docs/public-surface.md` | checking what this skill publicly promises | ## Keep in mind This skill is successful only if it reduces decision waste. If it is adding commentary without changing the decision, it is failing. n mind This skill is successful only if it reduces decision waste. If it is adding commentary without changing the decision, it is failing. sion, it is failing.
Related Skills
find-skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
filesystem
Advanced filesystem operations for listing files, searching content, batch processing, and directory analysis. Supports recursive search, file type filtering, size analysis, and batch operations like copy/move/delete. Use when you need to: list directory contents, search for files by name or content, analyze directory structures, perform batch file operations, or analyze file sizes and distribution.
Budget & Expense Tracker — AI Agent Financial Command Center
Track every dollar, enforce budgets, spot spending patterns, and build wealth — all through natural conversation with your AI agent.
yt-dlp
A robust CLI wrapper for yt-dlp to download videos, playlists, and audio from YouTube and thousands of other sites. Supports format selection, quality control, metadata embedding, and cookie authentication.
time-checker
Check accurate current time, date, and timezone information for any location worldwide using time.is. Use when the user asks "what time is it in X", "current time in Y", or needs to verify timezone offsets.
pihole-ctl
Manage and monitor local Pi-hole instance. Query FTL database for statistics (blocked ads, top clients) and control service via CLI. Use when user asks "how many ads blocked", "pihole status", or "update gravity".
mermaid-architect
Generate beautiful, hand-drawn Mermaid diagrams with robust syntax (quoted labels, ELK layout). Use this skill when the user asks for "diagram", "flowchart", "sequence diagram", or "visualize this process".
memory-cache
High-performance temporary storage system using Redis. Supports namespaced keys (mema:*), TTL management, and session context caching. Use for: (1) Saving agent state, (2) Caching API results, (3) Sharing data between sub-agents.
mema
Mema's personal brain - SQLite metadata index for documents and Redis short-term context buffer. Use for organizing workspace knowledge paths and managing ephemeral session state.
file-organizer-skill
Organize files in directories by grouping them into folders based on their extensions or date. Includes Dry-Run, Recursive, and Undo capabilities.
media-compress
Compress and convert images and videos using ffmpeg. Use when the user wants to reduce file size, change format, resize, or optimize media files. Handles common formats like JPG, PNG, WebP, MP4, MOV, WebM. Triggers on phrases like "compress image", "compress video", "reduce file size", "convert to webp/mp4", "resize image", "make image smaller", "batch compress", "optimize media".
edge-tts
Text-to-speech conversion using node-edge-tts npm package for generating audio from text. Supports multiple voices, languages, speed adjustment, pitch control, and subtitle generation. Use when: (1) User requests audio/voice output with the "tts" trigger or keyword. (2) Content needs to be spoken rather than read (multitasking, accessibility, driving, cooking). (3) User wants a specific voice, speed, pitch, or format for TTS output.