Skip to content

Commit ac099d4

Browse files
author
aryanpanwar10005
committed
fix: version sync to 1.2.0, add validate.yml workflow, clean up repo structure
1 parent 8496dbc commit ac099d4

4 files changed

Lines changed: 130 additions & 1286 deletions

File tree

.github/workflows/validate.yml

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
name: Validate Skill File
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
validate:
11+
runs-on: ubuntu-latest
12+
name: Validate SEO & GEO Skill File
13+
14+
steps:
15+
- name: Checkout repository
16+
uses: actions/checkout@v4
17+
18+
- name: Check skill file exists
19+
run: |
20+
if [ ! -f "skill/SEO_GEO_SKILL.md" ]; then
21+
echo "❌ ERROR: skill/SEO_GEO_SKILL.md is missing"
22+
exit 1
23+
fi
24+
echo "✅ skill/SEO_GEO_SKILL.md exists"
25+
26+
- name: Check skill file is not empty
27+
run: |
28+
SIZE=$(wc -c < "skill/SEO_GEO_SKILL.md")
29+
echo "File size: $SIZE bytes"
30+
if [ "$SIZE" -lt 10000 ]; then
31+
echo "❌ ERROR: skill file is too small (under 10KB)"
32+
exit 1
33+
fi
34+
echo "✅ Skill file size is healthy: $SIZE bytes"
35+
36+
- name: Check skill file line count
37+
run: |
38+
LINES=$(wc -l < "skill/SEO_GEO_SKILL.md")
39+
echo "Line count: $LINES"
40+
if [ "$LINES" -lt 100 ]; then
41+
echo "❌ ERROR: skill file has fewer than 100 lines"
42+
exit 1
43+
fi
44+
echo "✅ Line count is healthy: $LINES lines"
45+
46+
- name: Check required sections exist
47+
run: |
48+
REQUIRED_SECTIONS=(
49+
"IRON LAWS"
50+
"INTAKE QUESTIONNAIRE"
51+
"COMPETITOR ANALYSIS"
52+
"EXECUTION PLAN"
53+
"OFFICIAL REFERENCES"
54+
"CONTENT SEO"
55+
"HEADING RULES"
56+
"BLOGPOSTING"
57+
"FEATURED SNIPPET"
58+
"CONTENT CLUSTER"
59+
"RSS FEED"
60+
"AUTHOR E-E-A-T"
61+
"INTEGRITY RULES"
62+
)
63+
ALL_PASS=true
64+
for section in "${REQUIRED_SECTIONS[@]}"; do
65+
if grep -qi "$section" skill/SEO_GEO_SKILL.md; then
66+
echo "✅ Found section: $section"
67+
else
68+
echo "❌ MISSING section: $section"
69+
ALL_PASS=false
70+
fi
71+
done
72+
if [ "$ALL_PASS" = false ]; then
73+
exit 1
74+
fi
75+
76+
- name: Check bin/install.js exists
77+
run: |
78+
if [ ! -f "bin/install.js" ]; then
79+
echo "❌ ERROR: bin/install.js is missing"
80+
exit 1
81+
fi
82+
echo "✅ bin/install.js exists"
83+
84+
- name: Check package.json is valid JSON
85+
run: |
86+
node -e "
87+
const fs = require('fs');
88+
try {
89+
const pkg = JSON.parse(
90+
fs.readFileSync('package.json', 'utf8')
91+
);
92+
if (!pkg.name) throw new Error('Missing name field');
93+
if (!pkg.version) throw new Error('Missing version field');
94+
if (!pkg.bin) throw new Error('Missing bin field');
95+
console.log('✅ package.json is valid');
96+
console.log(' name:', pkg.name);
97+
console.log(' version:', pkg.version);
98+
} catch(e) {
99+
console.error('❌ package.json error:', e.message);
100+
process.exit(1);
101+
}
102+
"
103+
104+
- name: Check version consistency
105+
run: |
106+
node -e "
107+
const fs = require('fs');
108+
const pkg = JSON.parse(
109+
fs.readFileSync('package.json','utf8')
110+
);
111+
const src = fs.readFileSync('bin/install.js','utf8');
112+
const vm = src.match(/const VERSION\s*=\s*['\"]([^'\"]+)['\"]/);
113+
const iv = vm ? vm[1] : 'NOT FOUND';
114+
if (pkg.version !== iv) {
115+
console.error('❌ Version mismatch:');
116+
console.error(' package.json:', pkg.version);
117+
console.error(' install.js: ', iv);
118+
process.exit(1);
119+
}
120+
console.log('✅ Versions match:', pkg.version);
121+
"
122+
123+
- name: All checks passed
124+
run: |
125+
echo ""
126+
echo "══════════════════════════════════════"
127+
echo " ✅ All validation checks passed"
128+
echo " Skill file is healthy and complete (PART 1-14)"
129+
echo "══════════════════════════════════════"

0 commit comments

Comments
 (0)