Tools
Nonebot Plugin To Skill
Convert NoneBot2 plugins into OpenClaw skills - Documentation and best practices
README
# NoneBot2-to-Skill Converter
将 NoneBot2 插件转换为 OpenClaw Skill 的转换指南和工具。
## 简介
本项目提供了详细的文档和最佳实践,用于将 NoneBot2 聊天机器人插件转换为独立的 OpenClaw CLI 工具。
## 特性
- 🔄 完整的转换工作流指南
- 📋 命令提取和转换模式
- 🛠️ 代码重构最佳实践
- 📦 Skill 结构生成
- 🧪 测试和验证方法
## 支持的转换模式
| NoneBot2 Matcher | CLI 转换方式 |
|-----------------|-------------|
| `on_command` | `argparse` + 异步函数 |
| `on_regex` | 正则参数验证 |
| `on_message` | 显式文本检查 |
| `on_startswith/endswith` | 参数验证 |
| `on_fullmatch` | `choices` 限制 |
## 转换示例
### 转换前 (NoneBot2)
```python
from nonebot import on_command
from nonebot.adapters import Message
from nonebot.params import CommandArg
ping = on_command("ping")
@ping.handle()
async def handle_ping(args: Message = CommandArg()):
msg = args.extract_plain_text()
await ping.finish(f"Pong! {msg}")
```
### 转换后 (CLI)
```python
import argparse
import asyncio
async def ping(message=None):
print(f"Pong! {message}" if message else "Pong!")
def main():
parser = argparse.ArgumentParser()
parser.add_argument("message", nargs="?")
args = parser.parse_args()
asyncio.run(ping(args.message))
if __name__ == "__main__":
main()
```
## 完整案例
- [Majsoul CLI](https://github.com/ssttkkl/majsoul-query-skill) - 从 nonebot-plugin-majsoul 转换
## 使用说明
详细的转换流程请参考 `SKILL.md`,包含:
1. 项目结构识别
2. 命令提取方法
3. 代码转换模式
4. Skill 类型判断
5. 包管理器配置
6. 测试验证
## 依赖管理
推荐使用 `uv` 作为包管理器:
```bash
# 初始化项目
uv init
# 添加依赖
uv add httpx pydantic
# 安装依赖
uv sync
```
## License
MIT License
tools
Comments
Sign in to leave a comment