Files
getskills/PROJECT_SUMMARY.md

254 lines
4.8 KiB
Markdown
Raw Normal View History

# GetSkill 项目总结
## 项目概述
**GetSkill** 是一个用于管理 OpenClaw 技能的命令行工具,支持从 getskill.work 搜索、安装和更新技能文件。
## 核心特性
### 1. 零外部依赖
- 仅使用 Node.js 内置模块
- 轻量级,安装快速
- 无需担心依赖冲突
### 2. Git 集成
- 自动检测 Git 安装状态
- Windows 平台自动下载 Git 安装程序
- macOS/Linux 提供安装指南
- 通过 Git 管理技能版本
### 3. 跨平台支持
- Windows (32/64位)
- macOS
- Linux (多发行版)
- 自动适配操作系统路径
### 4. 双目录架构
```
~/.claude/
├── skills/ # 技能文件(.md
└── skills-cache/ # Git 仓库缓存
```
## 技术架构
### 依赖模块(全部为 Node.js 内置)
| 模块 | 用途 |
|------|------|
| `https/http` | API 请求和文件下载 |
| `fs` | 文件系统操作 |
| `path` | 路径处理 |
| `os` | 系统信息获取 |
| `child_process` | 执行 Git 命令 |
### 核心函数
| 函数 | 功能 |
|------|------|
| `searchSkills()` | 从 API 搜索技能 |
| `downloadSkill()` | 安装技能Git clone |
| `updateSkill()` | 更新技能Git pull |
| `checkGitInstalled()` | 检测 Git |
| `ensureGitInstalled()` | 确保 Git 可用 |
| `cloneOrUpdateRepo()` | Git 仓库管理 |
| `copySkillFiles()` | 复制技能文件 |
## API 接口设计
### 搜索接口
```
GET https://getskill.work/api/skills/search?q=<关键词>
Response:
{
"skills": [
{
"id": "skill-id",
"name": "skill-name",
"description": "描述",
"git_url": "https://github.com/...",
"author": "作者"
}
]
}
```
### 详情接口
```
GET https://getskill.work/api/skills/<技能ID>
Response:
{
"id": "skill-id",
"name": "skill-name",
"git_url": "https://github.com/...",
"description": "描述",
"files": ["skill.md"],
...
}
```
## 命令行界面
```bash
# 搜索
getskill search <关键词>
# 安装
getskill install <技能名称>
# 更新
getskill update <技能名称>
# 列出
getskill list
# 路径
getskill path
# 清理
getskill clean
```
## 文件结构
```
getskill/
├── index.js # 主程序578 行)
├── package.json # 项目配置
├── README.md # 使用文档
├── EXAMPLES.md # 使用示例
├── CONTRIBUTING.md # 贡献指南
├── CHANGELOG.md # 变更日志
├── LICENSE # MIT 许可证
├── verify.js # 验证脚本
├── .gitignore # Git 忽略文件
└── .npmignore # NPM 忽略文件
```
## 开发统计
- **总代码行数**: ~580 行index.js
- **函数数量**: 15+ 个
- **支持的命令**: 6 个
- **支持的平台**: 3 个Windows/macOS/Linux
- **外部依赖**: 0 个
## 工作流程
### 安装流程
```
用户执行: getskill install commit-helper
检查 Git 是否安装
调用 API 获取技能详情(含 git_url
执行 git clone 到缓存目录
复制 .md 文件到 skills 目录
完成
```
### 更新流程
```
用户执行: getskill update commit-helper
检查缓存目录是否存在仓库
进入仓库目录
执行 git pull
重新复制 .md 文件
完成
```
## 特殊处理
### Git 自动安装
#### Windows
1. 检测系统架构32/64位
2. 下载对应的 Git 安装程序
3. 显示下载进度
4. 启动安装向导
5. 提示用户完成安装后重新运行
#### macOS
- 提示使用 Homebrew: `brew install git`
- 提供 Homebrew 安装链接
#### Linux
- 根据发行版提供对应命令
- 支持 apt、yum、dnf、pacman
## 错误处理
- 网络错误:捕获并提示
- Git 未安装:自动引导安装
- API 失败:显示错误信息
- 文件不存在:创建目录
- 仓库克隆失败:显示 Git 错误
## 使用场景
1. **开发者**: 快速安装和更新技能
2. **团队**: 统一技能版本管理
3. **CI/CD**: 自动化技能部署
4. **学习者**: 探索可用技能
## 性能特点
- 轻量级:无外部依赖
- 快速:直接使用 Git
- 可靠Git 版本控制
- 缓存:避免重复下载
## 安全考虑
- 仅使用 HTTPS 连接
- 不存储敏感信息
- Git URL 验证
- 沙箱化技能目录
## 未来计划
- [ ] 技能版本管理
- [ ] 依赖解析
- [ ] 离线模式
- [ ] 配置文件支持
- [ ] Shell 自动补全
- [ ] 技能备份/恢复
- [ ] 交互式安装
- [ ] 单元测试
## 发布清单
- [x] 核心功能实现
- [x] Git 自动检测
- [x] 跨平台支持
- [x] 文档完善
- [x] 验证脚本
- [x] 示例文档
- [ ] 单元测试
- [ ] CI/CD 集成
- [ ] NPM 发布
## 贡献者
- workskills.store - 初始开发
## 许可证
MIT License - 详见 LICENSE 文件
---
**项目状态**: ✅ 功能完整,准备发布 v1.0.0
**最后更新**: 2026-03-21