-
-
Notifications
You must be signed in to change notification settings - Fork 45
92 lines (79 loc) · 3.41 KB
/
Copy pathci.yml
File metadata and controls
92 lines (79 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
name: CI
on:
push:
branches: [main, "release/**"]
pull_request:
branches: [main, "release/**"]
workflow_dispatch:
permissions:
contents: read
jobs:
quality-gates:
name: Quality Gates
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
# 1. Validate SKILL.md frontmatter (name, description, unique names)
- name: Validate SKILL.md frontmatter
run: python scripts/validate_skills.py --root .
# 2. Validate JSON-LD templates shipped in geo-output/schema/
- name: Validate JSON-LD schema templates
run: python scripts/validate_jsonld.py --dir geo-output/schema
# 2b. Validate the example JSON-LD output used in docs/README
- name: Validate example JSON-LD output
run: python scripts/validate_jsonld.py examples/sample-output-schema.json
# 3. Link-check: fail if the deprecated repo slug reappears anywhere
- name: Link check (no deprecated repo slug)
run: |
echo "Scanning markdown for deprecated slug 'egeo-claude-agents' in links/URLs..."
# Only fail on actual link targets or URLs, not prose that *describes*
# the deprecated slug (e.g. changelog/spec notes about removing it).
if grep -rInE --include='*.md' '(https?://[^ )"]*egeo-claude-agents|\]\([^)]*egeo-claude-agents)' .; then
echo "::error::Found link(s) to the deprecated slug 'egeo-claude-agents'. Use 'eGEOagents'."
exit 1
fi
echo "No deprecated slug links found."
# 4. Smoke test the skills.sh parser (non-blocking: external network/tool)
- name: Smoke test skills.sh parser (non-blocking)
continue-on-error: true
run: |
echo "Listing skills via npx skills parser (best-effort, non-blocking)..."
npx --yes skills add https://github.com/mverab/eGEOagents --list || \
echo "::warning::skills parser smoke test failed or was unavailable (non-blocking)."
# 5. Run evaluate with the deterministic MOCK client (no API key needed)
- name: Evaluate harness (MOCK client)
env:
GEO_EVAL_MOCK: "1"
run: |
python geo_eval.py evaluate \
--dataset eval/datasets/geo_smoke.jsonl \
--limit 5 \
--verbose
# 6. Smoke test the standalone `egeo` runtime CLI (MOCK client, offline)
- name: Smoke test egeo CLI (MOCK client)
env:
GEO_EVAL_MOCK: "1"
run: |
# List runtime adapters (python/cli + claude-code descriptor)
python -m egeo runtimes
# evaluate must reuse geo_eval.py and produce identical results
python -m egeo evaluate \
--dataset eval/datasets/geo_smoke.jsonl \
--limit 3
# Full optimize pipeline -> writes report + optimized content + schema
python -m egeo optimize examples/sample-input.md --out-dir /tmp/egeo-smoke
# The emitted JSON-LD must validate with the same checker used above
python scripts/validate_jsonld.py /tmp/egeo-smoke/schema/*.json