fix(validate): check flat Claude rule skills
CI / CI configuration security checks (push) Successful in 5s
CI / Capabilities and shell quality (push) Successful in 14s
CI / Python tests and compilation (push) Successful in 18s
CI / Build and inspect generated packages (push) Successful in 16s
CI / PowerShell tests on Ubuntu (push) Successful in 1m2s
CI / Installed client configuration smoke tests (push) Successful in 34s
CI / Bash integration and installation guards (push) Successful in 1m5s
CI / Qwen retrieval integration (push) Successful in 14m22s
CI / CI configuration security checks (push) Successful in 5s
CI / Capabilities and shell quality (push) Successful in 14s
CI / Python tests and compilation (push) Successful in 18s
CI / Build and inspect generated packages (push) Successful in 16s
CI / PowerShell tests on Ubuntu (push) Successful in 1m2s
CI / Installed client configuration smoke tests (push) Successful in 34s
CI / Bash integration and installation guards (push) Successful in 1m5s
CI / Qwen retrieval integration (push) Successful in 14m22s
Look for rule skills under skills/rules-*/ and fail when none exist, so a layout change cannot silently skip their frontmatter validation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6d53597dbf
commit
3285055d80
1 file changed
+4
-1
@@ -65,7 +65,10 @@ def validate_claude(path: Path) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def validate_rule_skills(package: Path) -> None:
|
def validate_rule_skills(package: Path) -> None:
|
||||||
for path in (package / "skills" / "rules").glob("*/SKILL.md"):
|
paths = sorted((package / "skills").glob("rules-*/SKILL.md"))
|
||||||
|
if not paths:
|
||||||
|
fail(f"{package}: no generated rules-* skills found")
|
||||||
|
for path in paths:
|
||||||
lines = path.read_text(encoding="utf-8-sig").splitlines()
|
lines = path.read_text(encoding="utf-8-sig").splitlines()
|
||||||
if len(lines) < 4 or lines[0] != "---" or lines[3] != "---" or not lines[1].startswith("name: ") or not lines[2].startswith("description: "):
|
if len(lines) < 4 or lines[0] != "---" or lines[3] != "---" or not lines[1].startswith("name: ") or not lines[2].startswith("description: "):
|
||||||
fail(f"{path}: invalid generated skill frontmatter")
|
fail(f"{path}: invalid generated skill frontmatter")
|
||||||
|
|||||||
Reference in new issue
Block a user