Skip to content

Commit 04cc09b

Browse files
committed
fix: use uv run --with pyyaml instead of uv pip install for checkpoint validation
uv pip install --system was failing with exit code 2 on GitHub runners. Switch to uv run --with pyyaml which handles dependency resolution inline without needing system-level pip install. Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
1 parent 8ee0c4d commit 04cc09b

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "skill-repo",
3-
"version": "1.6.5",
3+
"version": "1.6.6",
44
"description": "Guide for structuring Netresearch skill repositories",
55
"repository": "https://github.com/netresearch/skill-repo-skill",
66
"license": "MIT",

.github/workflows/validate.yml

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -124,41 +124,40 @@ jobs:
124124
fi
125125
COUNT=$(echo "$CHECKPOINT_FILES" | wc -l)
126126
echo "Found $COUNT checkpoint file(s)"
127-
uv pip install --system pyyaml -q
128127
FAILED=0
129128
while IFS= read -r f; do
130129
[[ -z "$f" ]] && continue
131130
echo "=== Validating $f ==="
132-
python3 -c "
131+
uv run --with pyyaml python3 - "$f" <<'PYEOF' || FAILED=1
133132
import sys, yaml
134-
with open('$f') as fh:
133+
with open(sys.argv[1]) as fh:
135134
data = yaml.safe_load(fh)
136135
if not isinstance(data, dict):
137-
print('ERROR: not a YAML mapping')
136+
print("ERROR: not a YAML mapping")
138137
sys.exit(1)
139-
has_mechanical = 'mechanical' in data
140-
has_llm = 'llm_reviews' in data
138+
has_mechanical = "mechanical" in data
139+
has_llm = "llm_reviews" in data
141140
if not has_mechanical and not has_llm:
142-
print('ERROR: must have mechanical and/or llm_reviews section')
141+
print("ERROR: must have mechanical and/or llm_reviews section")
143142
sys.exit(1)
144143
all_ids = []
145-
for section in ('mechanical', 'llm_reviews'):
144+
for section in ("mechanical", "llm_reviews"):
146145
items = data.get(section, [])
147146
if items is None:
148147
continue
149148
for item in items:
150-
if 'id' not in item:
151-
print(f'ERROR: entry in {section} missing id field')
149+
if "id" not in item:
150+
print(f"ERROR: entry in {section} missing id field")
152151
sys.exit(1)
153-
all_ids.append(item['id'])
152+
all_ids.append(item["id"])
154153
dupes = [x for x in all_ids if all_ids.count(x) > 1]
155154
if dupes:
156-
print(f'ERROR: duplicate checkpoint IDs: {set(dupes)}')
155+
print(f"ERROR: duplicate checkpoint IDs: {set(dupes)}")
157156
sys.exit(1)
158-
m = len(data.get('mechanical', []) or [])
159-
l = len(data.get('llm_reviews', []) or [])
160-
print(f'Valid: {m} mechanical + {l} LLM review checkpoints')
161-
" || FAILED=1
157+
m = len(data.get("mechanical", []) or [])
158+
l = len(data.get("llm_reviews", []) or [])
159+
print(f"Valid: {m} mechanical + {l} LLM review checkpoints")
160+
PYEOF
162161
done <<< "$CHECKPOINT_FILES"
163162
if [[ $FAILED -eq 1 ]]; then
164163
echo "::error::Checkpoint validation failed"

0 commit comments

Comments
 (0)