A command-line interface and MCP server for managing local SKILL.md files, with support for cross-agent synchronization, skill validation, and analytics.
Skrills presents a challenging evaluation because it is a STDIO-only server with tool definitions that are inferred from schema files rather than explicitly registered in executable code. The tool_schemas.rs file contains 19 tools with varying levels of completeness. While most tools have descriptions and input schemas, there are significant quality issues: (1) 10 duplicate tools with different casing (list_mcp_tools vs list-mcp-tools, describe_mcp_tool vs describe-mcp-tool, get_context_stats vs get-context-stats) that would cause LLM confusion; (2) descriptions are generic and lack specificity about WHEN to use tools or what downstream calls enable; (3) parameter descriptions are minimal (e.g., 'Source agent' for 'from' param lacks guidance on what values mean or when to prefer one source over another); (4) no output schemas are documented in the visible source, making it impossible for LLMs to plan multi-step operations; (5) the first tool (sync-from-claude) has ZERO parameters but accepts no inputs, this is either an error or requires clarification; (6) error handling is not visible in tool definitions. The server operates as a synchronization utility for agent configuration files across Claude, Codex, Copilot, and Cursor, which is a narrower domain than general-purpose MCP servers. Most tools follow a verb_noun pattern (sync-*, validate-*, analyze-*, list-*, describe-*, get-*), which is positive, but the overlap between tools (e.g., sync-skills, sync-commands, sync-mcp-servers, sync-all) creates ambiguity about which to call when.
Analyze skills for token counts, dependencies, and optimization opportunities.
Get the full JSON schema for a specific MCP tool. Use this when you need to invoke a tool and want to see its complete parameter specification. Only loads the schema for the requested tool, preserving context.
Get the full JSON schema for a specific MCP tool. Use this when you need to invoke a tool and want to see its complete parameter specification. Only loads the schema for the requested tool, preserving context.
Get context usage statistics for MCP tools. Shows tokens saved by lazy loading, number of schemas loaded, and tool invocation patterns.
Get context usage statistics for MCP tools. Shows tokens saved by lazy loading, number of schemas loaded, and tool invocation patterns.
List available MCP tools with minimal context cost. Returns tool names, descriptions, and estimated token costs without loading full schemas. Use this to discover tools before loading their full definitions.
Duplicate tools with inconsistent naming (underscores vs hyphens): list-mcp-tools vs list_mcp_tools, describe-mcp-tool vs describe_mcp_tool, get-context-stats vs get_context_stats. LLMs will have difficulty selecting between these and may invoke both, wasting tokens and causing confusion.
No output schemas are documented for any tool. LLMs cannot plan multi-step operations or extract required IDs for downstream calls. For example, sync-* tools should document what sync results they return (number of files synced, which files failed, etc.) and whether they return status codes LLMs can use to decide next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 34 | - | v1 |
List available MCP tools with minimal context cost. Returns tool names, descriptions, and estimated token costs without loading full schemas. Use this to discover tools before loading their full definitions.
Sync skills, commands, hooks, MCP servers, and preferences between Claude, Codex, Copilot, and Cursor in one operation.
Sync slash command definitions between Claude, Codex, Copilot, and Cursor.
Copy SKILL.md files from ~/.claude into ~/.codex/skills (Codex discovery root)
Sync skills and instructions from GitHub Copilot CLI (~/.config/github-copilot) to Claude or Codex.
Sync skills, commands, agents, hooks, rules, and MCP servers from Cursor (~/.cursor) to Claude or Codex.
Sync MCP server configurations between Claude, Codex, Copilot, and Cursor.
Sync compatible settings/preferences between Claude, Codex, Copilot, and Cursor.
Sync SKILL.md files between Claude, Codex, Copilot, and Cursor. Use --from and --to to specify source and target.
Show what would be synced without making changes (dry run).
Sync skills and instructions from Claude or Codex to GitHub Copilot CLI (~/.config/github-copilot).
Sync skills, commands, agents, hooks, rules (.mdc), and MCP servers from Claude or Codex to Cursor (~/.cursor).
Validate skills for Claude Code, Codex, and/or Copilot CLI compatibility. Returns validation errors and warnings.
Parameter descriptions lack actionable context. For example, the 'from' and 'to' parameters across 13+ sync tools have minimal descriptions ('Source agent' / 'Target agent') without explaining the semantic difference between agents, when to prefer one sync direction, or what happens if source and target are the same.
sync-from-claude tool has an empty input schema (no properties), which suggests either a zero-parameter tool or an incomplete definition. If this tool truly takes no inputs, the description should explain what it syncs (presumably all skills from ~/.claude) and to where (implied by tool name). If it should accept parameters, the schema is incomplete.
analyze-skills and get-context-stats have no visible input schema (empty properties or missing from source). Without knowing what parameters these tools accept or require, LLMs cannot invoke them correctly. If they truly take no inputs, document that explicitly.
Tool descriptions are brief (50-75 chars typically) and lack specificity. They do not answer: What does this tool do? When should I use it instead of a similar tool (e.g., sync-skills vs sync-all)? What are the side effects? Do not edit parameters in place or create backups? Without these details, LLMs cannot reliably select between overlapping tools.
No error handling guidance visible in tool definitions. sync-* tools are destructive (WRITE risk level) but tool descriptions do not mention what happens if a sync fails, whether partial syncs are possible, how to recover from a failed sync, or whether the operation is idempotent. LLMs need this to plan retries and decide whether to ask the user for confirmation.
Tool composition issue: validate-skills has an 'autofix' parameter that modifies skills (marked WRITE), but describe-mcp-tool and list-mcp-tools are read-only discovery tools. There is no clear tool that updates or imports discovered MCP tool schemas into the agent config, so the discover → describe → sync workflow is incomplete.
Missing documentation on pagination and result limits. list-mcp-tools accepts 'source', 'category', and 'search' filters but no limit or offset parameters. LLMs cannot control result size, risking context window exhaustion if the tool returns hundreds of tools. Describe expected result size and whether pagination is available.