技能:双子座技能
一个包含MCP(模型上下文协议)服务器的扩展,用于按需加载技能。
概述
该项目提供了一种灵活而动态的方式,为人工智能代理提供“技能”。此Gemini扩展包括一个MCP(模型上下文协议)服务器,用于按需加载技能和自定义命令。 这有助于AI代理根据需要加载技能来管理其上下文窗口。
作为双子座的延伸
该项目旨在用作Gemini扩展。这 gemini-extension.json 文件定义了如何加载和配置扩展。它包括一个MCP服务器和由Gemini CLI自动启动的自定义命令。
MCP服务器在中定义 mcp_app/skills_server.py,自定义命令位于 commands 目录。技能本身位于 skills 目录。
1-安装
此项目使用 uv 用于包装和环境管理。
面向开发人员(本地设置)
- 创建和同步虚拟环境:
运行以下命令以创建名为的虚拟环境 .venv 并从安装依赖项 pyproject.toml:
uv venv
uv sync- 激活虚拟环境:
在运行服务器之前,请激活环境。
在Windows上:
.venv\Scripts\activate- 运行服务器(用于本地测试/开发):
激活环境后,您可以启动服务器:
python mcp_app/skills_server.py用户(Gemini CLI扩展安装)
要将此存储库安装为Gemini CLI扩展:
- 确保
uv已安装: 按照上述说明进行安装uv如果你还没有。uv需要运行此扩展中嵌入的MCP服务器。 - 安装扩展:
gemini extensions install https://github.com/MohamedHamed19m/Skill_GEMINI_Extension安装后,重新启动Gemini CLI会话以确保加载了扩展。
2.激活
重新启动Gemini CLI。以下命令将可用:
list_skills()-使用元数据列出所有可用技能(轻量级)。
search_skills(query: str, limit: int = 5)-使用关键字匹配搜索相关技能。
load_skill(skill_name: str, force_reload: bool = False)-将全部技能内容加载到上下文中。
add_skills_directory(path: str)-添加自定义技能目录进行扫描。
注: 这会自动在主界面中创建本地快捷方式(符号链接/连接) skills 文件夹。这确保您始终可以使用一致的路径引用技能资源: ${extensionPath}/skills//...
更新扩展
- gemini扩展更新gemini技能
- gemini扩展更新--全部
技能结构
技能以目录结构组织。服务器扫描 skills 项目中的目录。
每个技能都必须在自己的目录中。目录名是技能名称。在技能目录中,必须有一个名为的文件 SKILL.md.
示例结构:
skills/
└── skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter metadata (required)
│ │ ├── name: (required)
│ │ └── description: (required)
│ └── Markdown instructions (required)
├── scripts/ (optional)
│ └── *.py
├── templates/ (optional)
│ └── *
└── resources/ (optional)
└── *在这个例子中,技能名称是 my-awesome-skill.内容 SKILL.md 将作为技能内容加载。技能目录中的任何其他文件仅供参考,服务器不会加载。
这 SKILL.md 文件可以有一个YAML frontmatter来提供元数据,例如:
---
description: This is a skill that does awesome things.
keywords: [awesome, skill]
---
The rest of the file is the skill content.技能名称始终从文件夹名称派生而来。任何 name 前文中提供的字段将被忽略。
AI代理工作流
推荐模式(带搜索)
- 搜索相关技能:
results = search_skills(query="How do I send ARETHIL frames?")
# Returns: Top 3-5 relevant skills with scores- 加载最佳匹配项:
load_skill(skill_name=results[0]["name"])- 使用内容回答问题
回退模式(无搜索)
- 列出所有技能 (仅当搜索失败时):
all_skills = list_skills()- 手动筛选 基于关键字/描述
- 负载特定技能
*该项目由MohamedHamed维护。*
