wittyhub-cli开发指南:贡献代码,扩展功能,成为开源社区一员
【免费下载链接】wittyhub-cliCommand-line interface for searching, installing, and managing Skills & Agents from the WittyHub repository.项目地址: https://gitcode.com/openeuler/wittyhub-cli
前往项目官网免费下载:https://ar.openeuler.org/ar/
wittyhub-cli是开源智能体技能生态系统的命令行工具,它让开发者能够轻松搜索、安装和管理AI编码助手的技能扩展。作为openEuler社区的重要项目,wittyhub-cli支持超过70种不同的AI编码助手,包括OpenCode、Claude Code、Cursor等,为开发者提供了统一的技能管理体验。
为什么参与wittyhub-cli开发?🚀
参与wittyhub-cli开发不仅能提升你的TypeScript编程技能,还能深入了解现代CLI工具的开发模式和开源协作流程。这个项目具有以下独特优势:
- 实际应用价值:你的贡献将直接影响成千上万开发者的AI助手使用体验
- 学习机会:接触Git操作、技能解析、多平台兼容性处理等核心技术
- 社区认可:成为openEuler社区的一员,获得宝贵的开源贡献经验
- 职业发展:展示你在命令行工具开发和AI集成方面的专业能力
项目架构概览 📁
wittyhub-cli采用模块化设计,主要源代码位于src/目录下:
src/ ├── cli.ts # 主入口点,命令路由,初始化/检查/更新逻辑 ├── add.ts # 核心添加命令实现 ├── agents.ts # 智能体定义和检测 ├── installer.ts # 技能安装逻辑(符号链接/复制) ├── skills.ts # 技能发现和解析 ├── skill-lock.ts # 全局锁文件管理 ├── local-lock.ts # 本地锁文件管理 ├── sync.ts # 同步命令 - 从node_modules爬取技能 ├── source-parser.ts # Git URL、GitHub简写、本地路径解析 ├── git.ts # Git克隆操作 ├── telemetry.ts # 匿名使用情况跟踪 ├── types.ts # TypeScript类型定义 └── providers/ # 远程技能提供商(GitHub、HuggingFace等)测试文件位于tests/目录,涵盖了从路径处理到技能匹配的各个方面。
开发环境搭建 🛠️
1. 克隆仓库并安装依赖
git clone https://gitcode.com/openeuler/wittyhub-cli cd wittyhub-cli pnpm install2. 构建项目
pnpm build3. 本地测试
# 开发模式运行 pnpm dev add vercel-labs/agent-skills --list # 运行所有测试 pnpm test # 运行特定测试文件 pnpm test tests/skill-matching.test.ts pnpm test tests/source-parser.test.ts # 类型检查 pnpm type-check4. 代码格式化
项目使用Prettier进行代码格式化,提交前务必运行:
pnpm format # 或检查格式 pnpm format:check贡献流程详解 📝
第一步:理解项目结构
在开始贡献前,花时间了解项目架构:
- 命令处理流程:从
cli.ts开始,理解命令如何路由到各个模块 - 技能发现机制:查看
src/skills.ts了解如何从不同位置发现SKILL.md文件 - 智能体兼容性:研究
src/agents.ts中超过70种智能体的路径配置 - 锁文件系统:了解
src/skill-lock.ts和src/local-lock.ts如何管理技能版本
第二步:选择贡献方向
根据你的兴趣和技能水平,可以选择以下贡献方向:
初学者友好任务
- 文档改进:完善README.md或添加使用示例
- 测试用例:为现有功能添加测试
- 错误处理:改进错误消息和用户提示
- 代码注释:为复杂逻辑添加解释性注释
中级任务
- 新功能开发:实现新的CLI命令或选项
- 智能体支持:添加对新AI编码助手的支持
- 提供商扩展:集成新的技能源(如GitLab、Bitbucket)
- 性能优化:改进技能发现或安装速度
高级任务
- 架构改进:重构核心模块以提高可维护性
- 安全增强:改进路径遍历防护和输入验证
- 跨平台兼容:解决Windows/macOS/Linux的兼容性问题
- CI/CD优化:改进测试和发布流程
第三步:创建开发分支
git checkout -b feature/your-feature-name # 或 git checkout -b fix/issue-description第四步:实现功能并测试
- 编写代码:遵循项目编码规范
- 添加测试:确保新功能有充分的测试覆盖
- 运行测试:验证所有测试通过
- 格式检查:确保代码符合Prettier规范
第五步:提交更改
git add . git commit -m "feat: 添加对新智能体的支持" # 或 git commit -m "fix: 修复技能路径解析问题"使用语义化提交消息:
feat:新功能fix:错误修复docs:文档更新test:测试相关refactor:代码重构chore:构建过程或辅助工具的变动
核心模块开发指南 🔧
添加新智能体支持
要添加对新AI编码助手的支持,需要修改src/agents.ts文件:
// 在agents数组中添加新智能体定义 { name: 'your-new-agent', displayName: 'Your New Agent', projectPaths: ['.your-agent/skills/'], globalPaths: ['~/.your-agent/skills/'], detection: ['your-agent'], // 用于检测是否安装的二进制名称 }然后运行验证脚本:
pnpm run -C scripts validate-agents.ts pnpm run -C scripts sync-agents.ts实现新CLI命令
- 在
src/cli.ts中注册新命令 - 创建对应的命令实现文件(如
src/your-command.ts) - 添加类型定义到
src/types.ts - 编写测试文件
src/your-command.test.ts
技能发现机制扩展
wittyhub-cli支持多种技能发现方式:
- 标准目录结构(
skills/目录) - 插件清单(
.claude-plugin/marketplace.json) - 递归搜索
要扩展发现机制,可以修改src/skills.ts中的discoverSkills函数。
测试策略 🧪
项目使用Vitest进行测试,测试文件位于tests/目录:
单元测试
// 示例:测试技能名称过滤 describe('filterSkills', () => { it('should match multi-word skill names', () => { const skills = [{ name: 'react-best-practices' }]; const result = filterSkills(skills, 'react best'); expect(result).toHaveLength(1); }); });集成测试
// 示例:测试完整的添加命令流程 describe('add command', () => { it('should install skill from GitHub', async () => { const result = await runCommand(['add', 'vercel-labs/agent-skills']); expect(result.exitCode).toBe(0); }); });跨平台测试
项目包含专门的跨平台路径测试,确保在Windows、macOS和Linux上都能正常工作。
调试技巧 🐛
1. 使用开发模式
pnpm dev <command> [options]2. 启用详细日志
DEBUG=wittyhub:* pnpm dev add vercel-labs/agent-skills3. 检查技能发现
# 查看技能发现过程 pnpm dev add ./local-skills --list --verbose4. 测试特定场景
# 测试符号链接安装 pnpm dev add vercel-labs/agent-skills --copy # 测试全局安装 pnpm dev add vercel-labs/agent-skills -g # 测试特定技能安装 pnpm dev add vercel-labs/agent-skills --skill react-best-practices代码审查要点 👀
提交Pull Request前,请确保:
1. 代码质量
- ✅ 通过TypeScript类型检查
- ✅ 通过所有测试
- ✅ 代码格式符合Prettier规范
- ✅ 没有控制台日志残留(生产代码)
2. 功能完整性
- ✅ 新功能有对应的测试
- ✅ 错误处理完善
- ✅ 用户提示清晰友好
- ✅ 向后兼容性考虑
3. 文档更新
- ✅ README.md相应部分已更新
- ✅ 新增命令有使用示例
- ✅ 配置变更有说明
4. 性能考虑
- ✅ 没有不必要的文件操作
- ✅ 网络请求有适当超时
- ✅ 内存使用合理
常见问题与解决方案 💡
Q: 如何测试新的智能体路径?
A: 创建测试目录结构,使用--copy选项避免符号链接问题:
mkdir -p test-agent/skills echo "测试技能" > test-agent/skills/test-skill/SKILL.md pnpm dev add ./test-agent --copyQ: 技能安装失败怎么办?
A: 检查以下方面:
- 权限问题:确保对目标目录有写入权限
- 路径问题:检查智能体路径配置是否正确
- 网络问题:GitHub API可能有限制,尝试设置
GITHUB_TOKEN
Q: 如何添加新的技能源提供商?
A: 在src/providers/目录下创建新的提供商文件,实现fetchSkills接口,然后在src/providers/index.ts中注册。
Q: 测试覆盖率不够怎么办?
A: 使用--coverage标志运行测试,查看覆盖率报告:
pnpm test --coverage社区协作指南 🤝
1. 问题报告
- 使用清晰的标题描述问题
- 提供复现步骤和环境信息
- 包含相关错误信息和日志
2. 功能建议
- 说明使用场景和预期行为
- 提供具体的实现建议
- 讨论可能的替代方案
3. 代码审查
- 提供建设性反馈
- 解释建议的原因
- 尊重其他贡献者的工作
4. 文档贡献
- 保持文档与代码同步
- 使用清晰简洁的语言
- 提供实际的使用示例
发布流程 🚀
1. 版本管理
# 更新package.json中的版本号 # 然后构建和发布 pnpm build npm publish2. 快照发布
# 发布预发布版本 npm run publish:snapshot3. 变更日志
- 记录所有重大变更
- 注明向后不兼容的更改
- 感谢贡献者
学习资源 📚
项目内文档
- AGENTS.md - 开发者指南和架构说明
- README.md - 用户文档和快速开始
- 源代码注释 - 详细的代码解释
相关技术
- TypeScript官方文档
- Node.js CLI开发最佳实践
- Git操作和GitHub工作流
- 测试驱动开发(TDD)
社区资源
- openEuler社区论坛
- GitHub Discussions
- 技能生态系统文档
开始你的贡献之旅 🎯
wittyhub-cli是一个活跃的开源项目,欢迎各种类型的贡献。无论你是TypeScript新手还是经验丰富的开发者,都能在这里找到适合的任务。
第一步:从简单的文档改进或错误修复开始第二步:熟悉代码库和开发流程第三步:选择感兴趣的功能进行实现第四步:参与代码审查和社区讨论
记住,每一次贡献都是学习的机会,每一个Pull Request都是对开源社区的宝贵支持。加入wittyhub-cli开发团队,让我们一起构建更好的AI技能管理工具!
【免费下载链接】wittyhub-cliCommand-line interface for searching, installing, and managing Skills & Agents from the WittyHub repository.项目地址: https://gitcode.com/openeuler/wittyhub-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考