commit: ba68302
s05_skill_loading.py
现在的代码:
def _load_all(self):
if not self.skills_dir.exists():
return
for f in sorted(self.skills_dir.glob("*.md")):
name = f.stem
text = f.read_text()
meta, body = self._parse_frontmatter(text)
self.skills[name] = {"meta": meta, "body": body, "path": str(f)}
按照 Anthropic 的事实标准,skills 文件夹中的结构是这样的:
.claude/skills/
└── your-skill-name/ # Skill 的唯一标识目录
├── SKILL.md # 包含元数据和核心指令 (必选)
├── scripts/ # 存放辅助自动化脚本 (可选)
│ └── helper.py
└── resources/ # 存放文档、规范或模板 (可选)
├── templates.json
└── style-guide.md
按照现有代码就会存在两个问题:
- 不会递归搜索子文件夹
- 会重复覆盖名为 SKILL 的技能
感觉修改成下面这种形式可能会更好?
def _load_all(self):
if not self.skills_dir.exists():
return
for f in sorted(self.skills_dir.rglob("*.md")):
name = f.parent.name
text = f.read_text()
meta, body = self._parse_frontmatter(text)
self.skills[name] = {"meta": meta, "body": body, "path": str(f)}
btw,SKILL 目前也不是一个完全规范的标准(我的个人理解)
The name field becomes the /slash-command, and the description helps Claude decide when to load it automatically
或许还是需要区分 SKILL meta 中的 name 和文件夹名称的实际含义。但这些不是这个项目中的核心要素