diff --git a/pipeline_core/skill_loader.py b/pipeline_core/skill_loader.py index b39e771..2105df2 100644 --- a/pipeline_core/skill_loader.py +++ b/pipeline_core/skill_loader.py @@ -64,6 +64,8 @@ class Skill: scope_id: str = "" # org_id / pipeline_id / pipeline_id:role / project_id / user_id trigger_keywords: List[str] = field(default_factory=list) version: str = "1.0.0" + capability: str = "" # 配套能力名(如 task_capability / communication) + tools: List[str] = field(default_factory=list) # 配套工具名列表 @classmethod def from_file(cls, filepath: str, scope: str = "global", @@ -73,6 +75,8 @@ class Skill: description = "" trigger_keywords = [] version = "1.0.0" + capability = "" + tools = [] try: with open(filepath, "r", encoding="utf-8") as f: @@ -87,6 +91,8 @@ class Skill: trigger_keywords = fm.get("trigger_keywords", trigger_keywords) version = fm.get("version", version) scope = fm.get("scope", scope) + capability = fm.get("capability", "") or "" + tools = fm.get("tools", []) or [] if not description: for line in content.split("\n"): @@ -99,6 +105,7 @@ class Skill: name=name, path=filepath, description=description, content=content, scope=scope, scope_id=scope_id, trigger_keywords=trigger_keywords, version=version, + capability=capability, tools=tools, ) def to_prompt_block(self) -> str: @@ -109,10 +116,19 @@ class Skill: end = body.find("---", 3) if end != -1: body = body[end + 3:].strip() + # 配套能力/工具声明(frontmatter 里 capability/tools,剥离后这里显式注入,让 LLM 知道工具在哪) + cap_line = "" + if self.capability or self.tools: + parts = [] + if self.capability: + parts.append(f"配套能力: {self.capability}") + if self.tools: + parts.append(f"配套工具: {', '.join(self.tools)}") + cap_line = " | ".join(parts) + "\n" return f"""## [{scope_tag}] {self.name} {self.description} -{body} +{cap_line}{body} """ diff --git a/skills_library/all/task/SKILL.md b/skills_library/pipelines/sdlc_general/common/task/SKILL.md similarity index 80% rename from skills_library/all/task/SKILL.md rename to skills_library/pipelines/sdlc_general/common/task/SKILL.md index 16e8e98..65582b7 100644 --- a/skills_library/all/task/SKILL.md +++ b/skills_library/pipelines/sdlc_general/common/task/SKILL.md @@ -1,9 +1,11 @@ --- name: task -description: 任务状态机规范——定义任务状态、合法流转、角色→操作权限、门禁、人拍板点。agent 处理任务时据此操作,LLM 读本 skill 判断流转合法性。产线默认 SDLC 状态机,项目可同名覆盖。触发:认领/提交/审核/退回/完成/重试任务。 +description: SDLC 产线默认任务状态机规范——定义任务状态、合法流转、角色→操作权限、门禁、人拍板点。agent 处理任务时据此操作,LLM 读本 skill 判断流转合法性。项目可同名 skill 覆盖。触发:认领/提交/审核/退回/完成/重试任务。 +capability: task_capability +tools: [claim_task, submit_task, approve_task, reject_task, complete_task, mark_failed, retry_task, suspend_task, revive_task, set_task_state] --- -# 任务状态机规范 +# 任务状态机规范(SDLC 产线默认) 本 skill 是**规范**(任务状态 + 流转规则 + 角色权限)。任务操作由系统固化的 **task 能力**(工具)执行, 本 skill 描述这些工具该怎么用、什么时候能用。 @@ -75,5 +77,5 @@ problem_type 用 approval/confirm)。人答复后由 agent 再执行状态迁 ## 八、分层覆盖 -本 skill 是产线默认(SDLC 状态机);项目可放**同名 task skill** 覆盖:简化/扩展状态机、改角色权限。 -加载顺序:项目级 → 产线级 → 全局兜底。 +本 skill 是 **SDLC 产线默认**状态机;项目可用**同名 task skill** 覆盖:简化/扩展状态机、改角色权限。 +加载优先级(低→高):global → org → pipeline(common) → role → project → user。 diff --git a/skills_library/all/team-communication/SKILL.md b/skills_library/pipelines/sdlc_general/common/team-communication/SKILL.md similarity index 79% rename from skills_library/all/team-communication/SKILL.md rename to skills_library/pipelines/sdlc_general/common/team-communication/SKILL.md index 6f6b032..9f9c63f 100644 --- a/skills_library/all/team-communication/SKILL.md +++ b/skills_library/pipelines/sdlc_general/common/team-communication/SKILL.md @@ -1,9 +1,11 @@ --- name: team-communication -description: 团队沟通规范(问题冒泡)——定义团队角色、问题类型、冒泡路径,agent 有问题时据此处理(提问题/找自己要处理的/回答/转交)。角色用规范名:agent 角色 agent.{role},人角色 {orgtype}.{role}。产线默认规范,项目可同名覆盖。触发:agent 发现问题、角色缺信息、PM 退回、故障上报、客户提问、待处理问题>0。 +description: SDLC 产线默认团队沟通规范(问题冒泡)——定义团队角色、问题类型、冒泡路径,agent 有问题时据此处理(提问题/找自己要处理的/回答/转交)。角色用规范名:agent 角色 agent.{role},人角色 {orgtype}.{role}。项目可同名覆盖。触发:agent 发现问题、角色缺信息、PM 退回、故障上报、客户提问、待处理问题>0。 +capability: communication +tools: [raise_problem, resolve_problem, escalate_problem, list_problems_for] --- -# 团队沟通(问题冒泡)规范 +# 团队沟通(问题冒泡)规范(SDLC 产线默认) 本 skill 是**规范**(团队结构 + 问题类型 + 冒泡路径)。问题操作的工具由系统固化, agent 读本 skill 理解规范后,用工具执行。 @@ -58,8 +60,8 @@ cockpit 侧包装:`list_questions`(查待我处理)、`answer_question`( ## 六、分层与覆盖 -- 本 skill 是**产线级默认规范**;项目可用**同名 team-communication skill** 覆盖。 -- 加载顺序:项目级 → 产线级 → 全局兜底。 +本 skill 是 **SDLC 产线默认**规范;项目可用**同名 team-communication skill** 覆盖。 +加载优先级(低→高):global → org → pipeline(common) → role → project → user。 ## 七、状态与归属