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

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:
Julian lechnerandClaude Opus 5.5 committed 2026-10-01 11:13:01 +02:00
1 parent 6d53597dbf
commit 3285055d80
1 file changed
+4 -1
+4 -1
View File
@@ -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")