skills/claude-skills-open/skills/core/agent-contacts/SKILL.md
AI agent contacts — add, list, remove MCP contacts. Use when someone gives an agent URL, or when you need to view/remove contacts.
npx skillsauth add aaaaqwq/claude-code-skills agent-contactsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Contact book for AI agents. Add an MCP address and your Claude Code can communicate with other agents.
/agent-contacts add <url> — add a new contact/agent-contacts list — show all contacts/agent-contacts remove <name> — remove a contact| What | Path |
|------|------|
| Contacts DB | ~/.claude/agent-contacts.json |
[
{
"name": "Your Name",
"slug": "ivan-schedule",
"mcp_url": "https://your-agent.example.com/mcp/",
"discovery_url": "https://your-agent.example.com/.well-known/agent.json",
"capabilities": ["scheduling"],
"description": "Scheduling agent for Your Name",
"added": "2026-02-26"
}
]
Parse $ARGUMENTS to determine the command: first word is the command (add, list, remove), the rest is the argument.
/agent-contacts add <url>import json, re
from datetime import date
from pathlib import Path
CONTACTS_FILE = Path.home() / ".claude" / "agent-contacts.json"
# 1. Load existing contacts
if CONTACTS_FILE.exists():
contacts = json.loads(CONTACTS_FILE.read_text())
else:
contacts = []
# 2. Normalize URL — $ARGUMENTS[1] is the URL
url = "$1".strip().rstrip("/")
if not url.endswith("agent.json"):
discovery_url = url + "/.well-known/agent.json"
else:
discovery_url = url
url = url.rsplit("/.well-known/agent.json", 1)[0]
# 3. Use WebFetch to get agent.json content, then parse:
# - name = agent_data["name"]
# - description = agent_data.get("description", "")
# - capabilities = list(agent_data.get("capabilities", {}).keys())
# - mcp_url = agent_data["capabilities"][first_cap]["url"]
# Ensure mcp_url ends with "/"
# 4. Generate slug
slug = re.sub(r"[^a-z0-9-]", "", name.lower().replace(" ", "-"))
# 5. Check for duplicates
if any(c["slug"] == slug for c in contacts):
print(f"Contact '{name}' already exists.")
else:
contacts.append({
"name": name,
"slug": slug,
"mcp_url": mcp_url,
"discovery_url": discovery_url,
"capabilities": capabilities,
"description": description,
"added": str(date.today()),
})
CONTACTS_FILE.write_text(json.dumps(contacts, indent=2, ensure_ascii=False))
After saving to JSON, run:
claude mcp add <slug> --transport http <mcp_url>
Notify: "Contact <name> added. Restart Claude Code session to use their tools."
/agent-contacts listimport json
from pathlib import Path
CONTACTS_FILE = Path.home() / ".claude" / "agent-contacts.json"
if not CONTACTS_FILE.exists():
print("No agent contacts yet. Use '/agent-contacts add <url>' to add one.")
else:
contacts = json.loads(CONTACTS_FILE.read_text())
if not contacts:
print("No agent contacts yet.")
else:
for i, c in enumerate(contacts, 1):
caps = ", ".join(c.get("capabilities", []))
print(f" {i}. {c['name']} ({c['slug']})")
print(f" MCP: {c['mcp_url']}")
print(f" Capabilities: {caps}")
print()
/agent-contacts remove <name-or-slug>import json
from pathlib import Path
CONTACTS_FILE = Path.home() / ".claude" / "agent-contacts.json"
target = "$1".strip().lower() # name or slug
contacts = json.loads(CONTACTS_FILE.read_text())
match = [c for c in contacts if c["slug"] == target or c["name"].lower() == target]
if not match:
print(f"Contact '{target}' not found.")
else:
slug = match[0]["slug"]
name = match[0]["name"]
contacts = [c for c in contacts if c["slug"] != slug]
CONTACTS_FILE.write_text(json.dumps(contacts, indent=2, ensure_ascii=False))
After removing from JSON, run:
claude mcp remove <slug>
Notify: "Contact <name> removed."
Simply send the link:
https://your-agent.example.com/.well-known/agent.json
If the person has this skill:
/agent-contacts add https://your-agent.example.com
If they don't have the skill -- one command:
claude mcp add ivan-schedule --transport http https://your-agent.example.com/mcp/
agent-contacts.json is created automatically on the first add/ (trailing slash)add, a new session of Claude Code is required for MCP tools to become availableclaude mcp add/remove), hence disable-model-invocation: truedeploy-website — deploy page with instructions for new contactstesting
通用自媒体文章自动发布工具。支持百家号、搜狐号、知乎、微信公众号、小红书、抖音号六个平台的自动化发布流程。使用Playwright自动化实现平台导航和发布,支持通过storageState管理Cookie实现账号切换。
development
# SKILL.md - Model Configuration Status (mcstatus) ## 触发条件 - `/mcstatus` 命令 - 用户询问模型配备、模型配置、model status、模型列表等 ## 功能 实时生成 Agent + Cron 的模型配置报告,展示当前所有 agent 的主模型/fallback链和所有 cron 任务的模型分配。 ## 执行步骤 ### Step 1: 收集 Agent 模型配置 读取各 agent 的 models.json 获取主模型和 fallback 链: ```bash for agent in main ops code quant data research content market finance pm law product sales batch; do config=$(cat ~/.openclaw/agents/$agent/agent/models.json 2>/dev/null) if [ -n "$config" ]; then echo "=== $agent
tools
MCP 服务器智能管理助手。自动检测 MCP 可用性、智能开关、功能问答,提供人性化的 MCP 管理体验。
tools
从GitHub搜索并自动安装配置MCP(Model Context Protocol)服务器工具到Claude配置文件。当用户需要安装MCP工具时触发此技能。工作流程:搜索GitHub上的MCP项目 -> 提取npx配置 -> 添加到~/.claude.json -> 处理API密钥(如有)。