1. 项目定位:为什么我要做"技能领域的GitHub"
1.1 AI技能碎片化:这个项目要解决的痛点
这两年在做AI Agent相关的东西,我最大的感受是:写一个能干活的大模型提示词、技能模板、工具调用配置不难,难的是把这些东西系统化地管理起来、分发出去、让团队里的人都能用上。市面上各种Agent框架百花齐放,每个框架都有自己的技能加载方式,有的是一个prompt目录,有的是把工具函数注册进去,还有的是直接约定一套YAML格式让模型自己读。结果就是,一个能用的"技能"往往散落在博客的代码片段里、GitHub仓库的某个角落、群聊的聊天记录里,甚至只有原作者自己电脑上有。
真正让我下定决心做SkillHub的,是一次团队内部的事故。同事在某个Agent框架里手写了一套数据清洗技能,效果很好,但因为没有统一的存放位置,另一个项目组根本不知道有这个东西,结果花了两个星期重新造了一个几乎一样的轮子。反过来,需要跨框架复用技能的时候就更痛苦了,从格式转换到依赖配置,全部要手动来。当时我就想,代码有GitHub托管,但AI技能没有一个对应的集中地。技能本身就应该是可发现、可安装、可更新的"包",就像npm包、pip包一样。
1.2 SkillHub的核心价值与设计目标
SkillHub不是一个简单的静态网页索引,它要做的是整个技能分发的闭环。我把它的核心价值拆成四点。
第一,统一技能包格式。SkillHub定义了一套基于SKILL.md描述的技能规范,不管底层的Agent框架是Claude Code、自研框架还是别的什么,技能作者只需要按规范打包,平台统一解析。这个格式借鉴了社区里实际上已经在用的目录约定,但补齐了版本、依赖、许可证、作者信息这些工程化必备的字段。
第二,集中发现与检索。在SkillHub上,技能可以用标签、分类、评分、下载量来筛选,也可以直接搜关键词。这个对社区很重要,因为技能的价值只有在被复用的时候才真正体现出来。平台上目前已经有了代码审查、SQL生成、日志分析、日报自动撰写等一批高热度技能。
第三,一键安装与自动更新。这是SkillHub和普通文档站最大的区别。用户不需要手动下载压缩包再解压到某个目录,通过SkillHub提供的CLI工具,一条命令就能把技能安装到本地的Agent框架中,后续作者发布新版本,客户端可以检测到并提示升级。
第四,许可证合规检查。这个功能是我踩过坑之后坚持要做的。很多人从网上抄技能的时候根本不管许可证,但一旦用于商业项目就是隐患。SkillHub在技能发布时强制校验LICENSE字段,并自动解析和展示许可证类型,这样"开源"这件事才有底线。
1.3 为什么不直接丢在GitHub上
这个项目开源之后,我被问得最多的一个问题就是:不就是一个放技能的仓库吗,直接建一个GitHub组织不就行了?我确实考虑过,而且一开始就是这么做的。但实际用下来发现,GitHub在代码协作层面无可替代,但它不是为"技能消费"设计的。
GitHub解决的"代码怎么协作"的问题,SkillHub解决的是"技能怎么被发现、安装、更新"的问题。GitHub上一个仓库可以放很多东西,但你要找一个合适的技能时,没有统一的格式校验,没有依赖声明,没有评分体系,没有安装统计。更麻烦的是,不同的技能作者会用完全不同的目录结构组织文件,这就导致"能用"和"好用"之间差得很远。
所以SkillHub的定位不是替代GitHub,而是跑在GitHub协作模式之上的一个分发层。如果拿npm来类比,GitHub相当于源码托管平台,SkillHub则相当于npm registry加上一套配套管理工具。底层源码用GitHub托管,SkillHub做的是索引、校验、分发、统计这些脏活累活。两者互补,而不是互斥。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构与核心设计:一个开源平台是怎么长出来的
2.1 技术栈选型与理由
技术选型的时候我设了几个硬性约束:单机部署要能跑起来,代码改动要快,AI生态的第三方库要好接。最终定下的方案是:后端Node.js + Fastify,前端Vue3 + Vite + Naive UI,数据库用PostgreSQL,缓存交给Redis,对象存储直接上MinIO,整体用Docker Compose编排。
选Node.js而不是Go,最直接的原因是AI生态社区里JavaScript/TypeScript的渗透率太高了,各种SDK、官方示例、社区封装基本都是TS优先,后端用Node生态对接起来省心。Fastify比Express性能好、原生支持Schema校验,比NestJS轻很多,适合这种有点规模但不过度复杂的项目。
前端为什么用Vue3而不是React?团队的实际情况是我对Vue3更熟,Naive UI的组件质量和TypeScript支持都不错,写后台管理系统效率很高。这个不是技术上的胜负手,项目本身是前后端分离的,后续就算有人想用React重写前端也不影响整体架构。
数据存储这块,PostgreSQL负责技能元数
