init: company-haness 설계
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env python3
|
||||
"""skill_refs — .claude/skills 참조 무결성 공유 헬퍼 (P3). doctor·lint_refs 소비."""
|
||||
import glob
|
||||
import os
|
||||
|
||||
import yaml
|
||||
|
||||
|
||||
def known_skill_names(root):
|
||||
""".claude/skills/**/SKILL.md 스캔 → 알려진 skill 이름 집합(frontmatter name + 디렉터리명)."""
|
||||
names = set()
|
||||
base = os.path.join(root, ".claude", "skills")
|
||||
for p in glob.glob(os.path.join(base, "**", "SKILL.md"), recursive=True):
|
||||
names.add(os.path.basename(os.path.dirname(p)))
|
||||
try:
|
||||
fm = yaml.safe_load(open(p).read().split("---\n")[1]) or {}
|
||||
if isinstance(fm, dict) and fm.get("name"):
|
||||
names.add(str(fm["name"]))
|
||||
except Exception: # noqa: BLE001 — 깨진 frontmatter는 디렉터리명으로만 등록
|
||||
pass
|
||||
return names
|
||||
|
||||
|
||||
def parse_skills(val):
|
||||
"""agent frontmatter의 skills: 값 → 이름 리스트. list/문자열('[a, b]') 모두 허용."""
|
||||
if not val:
|
||||
return []
|
||||
if isinstance(val, list):
|
||||
return [str(x).strip() for x in val if str(x).strip()]
|
||||
return [s.strip() for s in str(val).strip("[]").split(",") if s.strip()]
|
||||
Reference in New Issue
Block a user