dispatch
Shared multi-model CLI dispatch infrastructure for the adv plugin. Houses dispatch.sh, preflight.sh, run-phase.sh, scope.sh, and reviewer prompt templates used…
Create MCP tools — individual tool functions exposed via Model Context Protocol. Use this skill whenever users mention MCP tools, tool handlers, tool functions, tool definitions, or want to add capabilities to an MCP server. Also use when the conversation involves designing tool
$ npx -y skills add andisab/swe-marketplace --skill mcp-tool-dev --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/mcp-tool-devContext preview
The summary Claude sees to decide when to auto-load this skill.
Create MCP tools — individual tool functions exposed via Model Context Protocol. Use this skill whenever users mention MCP tools, tool handlers, tool functions, tool definitions, or want to add capabilities to an MCP server. Also use when the conversation involves designing tool
name: mcp-tool-dev description: > Create MCP tools — individual tool functions exposed via Model Context Protocol. Use this skill whenever users mention MCP tools, tool handlers, tool functions, tool definitions, or want to add capabilities to an MCP server. Also use when the conversation involves designing tool schemas, writing tool descriptions, or implementing tool input validation. Covers FastMCP patterns, Anthropic tool description best practices, and testing strategies. Activate for: - "Create an MCP tool" - "Add a tool to my MCP server" - "Write a tool handler" - "Design a tool schema" - "Implement tool input validation" Do NOT use for: - Creating full MCP servers with multiple tools (use mcp-server-dev) - General API development without MCP - Claude Code slash commands or hooks allowed-tools: Read, Write, Edit, Grep, Glob, mcp__Conventions__search_conventions, mcp__Conventions__get_convention
Create individual MCP tool functions that follow Anthropic's tool design best practices and the Model Context Protocol specification.
An MCP tool is a single function exposed via the Model Context Protocol that an LLM can invoke. Each tool has:
Tools can be standalone (single-file utilities) or part of an MCP server (grouped related tools).
Every MCP tool consists of four parts:
Use `snake_case` with verb-noun pattern. Be specific — `search_files_by_content` beats `search`.
Write 3-4 sentences covering: 1. What the tool does (capability statement) 2. When to use it (primary use cases) 3. When NOT to use it (scope boundaries, suggest alternatives) 4. Key behavior notes (pagination, rate limits, return format)
Good descriptions prevent misuse and reduce wasted calls. Include parameter semantics — if "query" means regex vs full-text vs exact match, say so.
Define parameters using JSON Schema with:
Async function that:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-server")
@mcp.tool()
async def search_documents(query: str, max_results: int = 10) -> str:
"""Search documents by content.
Performs full-text search across all indexed documents. Use this tool
when the user wants to find documents containing specific terms or phrases.
Do not use for metadata-only searches — use list_documents with filters instead.
Args:
query: Full-text search query. Supports AND/OR operators.
max_results: Maximum results to return (1-100, default 10).
"""
if not query.strip():
return "Error: query cannot be empty. Provide a search term."
max_results = min(max(1, max_results), 100)
results = await do_search(query, max_results)
return format_results(results)FastMCP infers the JSON Schema from the function signature and docstring. Type hints drive the schema; the docstring `Args:` section populates parameter descriptions.
Define what the tool does before writing code:
For FastMCP, the schema is implicit in the function signature. For manual schemas:
TOOL_SCHEMA = {
"name": "search_documents",
"description": "Search documents by content...",
"inputSchema": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Full-text search query"},
"max_results": {"type": "integer", "default": 10, "minimum": 1, "maximum": 100}
},
"required": ["query"]
}
}Write the async handler function. Key principles:
Test the handler directly by calling it with a dict:
async def test_search_documents():
result = await search_documents("test query", max_results=5)
assert "results" in result.lower() or isinstance(result, str)
async def test_search_documents_empty_query():
result = await search_documents("")
assert "error" in result.lower()Use `templates/mcp-tool-template.py` as a starting point. It includes the FastMCP decorator pattern, input validation, conte
A curated Claude Code plugin marketplace for practical, everyday usage in software engineering — 13 plugins, 53 specialist agents, 14 skills, 3 commands. A few opinionated choices that set it apart from larger awesome-style lists: Curated, not exhaustive.
Repo: andisab/swe-marketplace
Shared multi-model CLI dispatch infrastructure for the adv plugin. Houses dispatch.sh, preflight.sh, run-phase.sh, scope.sh, and reviewer prompt templates used…
Use this skill when creating or refining Claude Code sub-agent definitions. Helps design specialized AI assistants with proper YAML frontmatter, system…
Use this skill when creating or refining custom Claude Code slash commands. Slash commands are user-invoked reusable prompts that can accept arguments,…
Use this skill when creating or refining Claude Code hooks. Hooks are shell commands that execute at specific lifecycle events (tool use, prompt submit,…
Create MCP servers — multi-tool services exposed via Model Context Protocol. Use this skill whenever users mention MCP servers, building servers, server…
Use this skill when creating or refining Claude Code plugins. Plugins are bundled collections of agents, skills, commands, hooks, and MCP servers that provide…