SkillStore v0.1.0 跨项目技能管理平台
· SkillStore
今日进展
- SkillStore v0.1.0 发布:跨项目技能管理与编排平台
- 实现技能发现:扫描 SKILL.md 自动解析元数据并注册
- 实现 Junction 分发:技能跨项目链接,一处修改多处生效
- 实现 Pipeline 编排:多技能串行/并行工作流定义
- 实现版本管理:SKILL.md 内容快照、diff、回滚
关键代码/伪代码
技能发现 — SKILL.md 解析
# 技能发现流程: 扫描目录 -> 解析 SKILL.md -> 注册到数据库
CLASS SkillService:
ASYNC DEF scan_and_register(self, project_path: Path):
FOR skill_dir IN project_path.glob("skills/*/"):
skill_md = skill_dir / "SKILL.md"
IF NOT skill_md.exists():
CONTINUE
# 解析 SKILL.md 元数据
metadata = self._parse_skill_md(skill_md)
# 注册到数据库
AWAIT self.repo.upsert(Skill(
name=metadata["name"],
domain=metadata["domain"], # content/develop/tool/orchestrate/rules
version=metadata["version"],
description=metadata["description"],
path=str(skill_dir),
))
FUNCTION _parse_skill_md(self, path: Path) -> dict:
content = path.read_text()
# 解析 YAML frontmatter
frontmatter = extract_yaml_frontmatter(content)
RETURN {
"name": frontmatter.get("name"),
"domain": frontmatter.get("domain"),
"version": frontmatter.get("version", "0.1.0"),
"description": frontmatter.get("description"),
}
Junction 分发 — 跨项目链接
# Junction: 技能从源项目分发到目标项目的符号链接
CLASS JunctionService:
ASYNC DEF create_junction(self, skill_id, target_project_id):
skill = AWAIT self.skill_repo.get(skill_id)
target = AWAIT self.project_repo.get(target_project_id)
# 创建符号链接: 目标项目/skills/技能名 -> 源项目/skills/技能名
link_path = target.skills_dir / skill.name
link_path.symlink_to(skill.path)
# 记录 Junction 关系
AWAIT self.junction_repo.create(Junction(
skill_id=skill_id,
source_project=skill.project_id,
target_project=target_project_id,
))
Pipeline 编排
# Pipeline: 多技能串行/并行编排
CLASS OrchestrationService:
ASYNC DEF execute_pipeline(self, pipeline_id, context):
pipeline = AWAIT self.repo.get(pipeline_id)
FOR step IN pipeline.steps:
IF step.parallel:
# 并行执行多个技能
results = AWAIT asyncio.gather(*[
self._execute_skill(step.skill_id, context)
FOR step IN step.parallel_steps
])
ELSE:
# 串行执行
result = AWAIT self._execute_skill(step.skill_id, context)
context = step.transform(context, result)
遇到的问题
- SKILL.md 格式不统一:不同项目写的 SKILL.md 格式差异大,解析器需要兼容多种写法
- Windows 下符号链接需要管理员权限:Junction 分发在 Windows 上改用 junction point(目录联接)
- Pipeline 编排的上下文传递设计:串行步骤间如何传递中间结果,最终选用了 context dict 方案
明日计划
- 实现 Hub 远程同步:本地技能注册表同步到 clawhub.ai
- 实现规则分配:将规范类技能(baseline/security/quality)分配到项目