add-tool
Skill74 starsChanged 9 months agoMITView on GitHub
Add a new tool to the agent toolstore registry
We split this skill into the rules it gives an agent
5 rules. 0 are common, 1 is distinctive, and 4 are very specific to this project.
0
Common
Most of the 16 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Add tools to apps/artagent/backend/registries/toolstore/.
- Very specific: line 82
Create or edit file in registries/toolstore/
- Very specific: line 86
Import module in registry.py initialize_tools() function
- Very specific: line 87
Add tool name to agent's tools: list in their agent.yaml
- Distinctive: line 139
Always return dict with:
“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Add Tool Skill
Add tools to apps/artagent/backend/registries/toolstore/.
Tool File Structure
"""
Tool Module Name
================
Brief description of tools in this module.
"""
from __future__ import annotations
from typing import Any
from apps.artagent.backend.registries.toolstore.registry import register_tool
from utils.ml_logging import get_logger
logger = get_logger("agents.tools.module_name")
# ═══════════════════════════════════════════════════════════════════════════════
# SCHEMAS
# ═══════════════════════════════════════════════════════════════════════════════
tool_name_schema: dict[str, Any] = {
"name": "tool_name",
"description": "Clear description of what this tool does and when to use it.",
"parameters": {
"type": "object",
"properties": {
"param1": {"type": "string", "description": "Parameter description"},
"param2": {"type": "integer", "description": "Optional param"},
},
"required": ["param1"],
},
}
# ═══════════════════════════════════════════════════════════════════════════════
# EXECUTORS
# ═══════════════════════════════════════════════════════════════════════════════
async def tool_name(args: dict[str, Any]) -> dict[str, Any]:
"""Execute the tool with given arguments."""
param1 = (args.get("param1") or "").strip()
if not param1:
return {"success": False, "message": "param1 is required."}
# Tool implementation
logger.info("Tool executed: %s", param1)
return {
"success": True,
"result": "Tool output",
}
# ═══════════════════════════════════════════════════════════════════════════════
# REGISTRATION
# ═══════════════════════════════════════════════════════════════════════════════
register_tool(
"tool_name",
tool_name_schema,
tool_name,
tags={"category1", "category2"},
)Steps
- Create or edit file in
registries/toolstore/ - Define OpenAI-compatible schema with name, description, parameters
- Implement async executor function that takes
args: dict[str, Any] - Register tool with
register_tool()at module level - Import module in
registry.pyinitialize_tools()function - Add tool name to agent's
tools:list in theiragent.yaml
Registration Function
register_tool(
name="tool_name", # Unique identifier
schema=tool_name_schema, # OpenAI function schema
executor=tool_name, # Async function
is_handoff=False, # True if triggers agent transfer
tags={"category"}, # Optional categorization
override=False, # Allow re-registration
)Handoff Tools
For agent transfer tools, use is_handoff=True:
handoff_specialist_schema = {
"name": "handoff_specialist",
"description": "Transfer to specialist agent for [reason].",
"parameters": {
"type": "object",
"properties": {
"reason": {"type": "string", "description": "Why transferring"},
"context": {"type": "string", "description": "Relevant context"},
},
"required": ["reason"],
},
}
async def handoff_specialist(args: dict[str, Any]) -> dict[str, Any]:
return {
"success": True,
"handoff": True,
"target_agent": "specialist",
"reason": args.get("reason", ""),
}
register_tool(
"handoff_specialist",
handoff_specialist_schema,
handoff_specialist,
is_handoff=True,
tags={"handoff"},
)Return Format
Always return dict with:
success: bool- Whether operation succeededmessage: str- Error message if failed- Additional result fields as needed
Registry Location
apps/artagent/backend/registries/toolstore/registry.py
Key functions:
register_tool()- Register a toolget_tools_for_agent(tool_names)- Get schemas for agentexecute_tool(name, args)- Execute a toolinitialize_tools()- Load all tool modules
Other versions17 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 17
- takeshy/obsidian-gemini-helper★ 118same name
- hhopke/intervals-icu-mcp★ 114same name
- takeshy/obsidian-llm-hub★ 38same name
- ooloth/dotfiles★ 24same name
- Cognigy/cognigy-plugin★ 17same name
- PinMeTo/pinmeto-location-mcp★ 15same name
- microsoft/PilotSwarm★ 14same name
- alunduil/alunduil-chezmoi★ 2same name
- eborden/logseq-mcp-server★ 2same name
- Dipeshpal/capes★ 1same name
7 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository13 other files it gives its agents.
- .github/copilot-instructions.mdCopilot instructions
- add-componentSkill
- add-endpointSkill
- add-evaluationSkill
- add-mcp-serverSkill
- add-message-handlerSkill
- add-voice-handlerSkill
- create-agentSkill
- deployment-guideSkill
- observability-insightsSkill
- service-catalogSkill
- test-and-documentSkill
- troubleshootSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

