Vibecosystem agent-linter
Agent ve skill dosyalarinin yapisal dogrulamasi. Frontmatter kontrol, naming convention, zorunlu bolum kontrolu, tutarlilik denetimi. Yeni agent/skill eklendiginde veya mevcut dosyalar duzenlediginde otomatik calistirilir.
install
source · Clone the upstream repo
git clone https://github.com/vibeeval/vibecosystem
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/vibeeval/vibecosystem "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/agent-linter" ~/.claude/skills/vibeeval-vibecosystem-agent-linter && rm -rf "$T"
manifest:
skills/agent-linter/SKILL.mdsource content
Agent & Skill Linter
Agent ve skill dosyalarinin kalite kontrolu. Yanlis yapilandirilmis dosyalar runtime'da sessizce basarisiz olur -- linter bunu onler.
Agent Dosyasi Kurallari
Frontmatter (ZORUNLU)
--- name: agent-adi # kebab-case, dosya adiyla AYNI olmali description: Tek satir # 20-200 karakter arasi tools: ["Read", "Bash"] # Gecerli tool listesi model: opus # Opsiyonel: opus | sonnet ---
Frontmatter Validasyonu
| Kural | Kontrol | Hata Seviyesi |
|---|---|---|
mevcut | Frontmatter'da name var mi? | ERROR |
= dosya adi | == | ERROR |
kebab-case | OK, FAIL | ERROR |
mevcut | Bos olmamali | ERROR |
uzunlugu | 20-200 karakter | WARN |
array | String array olmali | ERROR |
gecerli | Sadece bilinen tool isimleri | WARN |
gecerli | opus, sonnet veya bos | ERROR |
Body Kurallari
| Kural | Kontrol | Hata Seviyesi |
|---|---|---|
| System prompt var | Frontmatter'dan sonra icerik var | ERROR |
| 50+ satir | Cok kisa agent tanimlari yetersiz | WARN |
| 2000 satir max | Cok uzun dosyalar token israf eder | WARN |
| Markdown basliklar | En az 1 basligi var | WARN |
Skill Dosyasi Kurallari
Frontmatter (ZORUNLU)
--- name: skill-adi # kebab-case description: Aciklama # 20-300 karakter ---
Skill Validasyonu
| Kural | Kontrol | Hata Seviyesi |
|---|---|---|
| Dosya adi | veya | ERROR |
mevcut | Frontmatter'da | ERROR |
= klasor adi | == | WARN |
mevcut | Bos olmamali | ERROR |
| Icerik var | Frontmatter'dan sonra en az 20 satir | WARN |
| Kod ornegi var | En az 1 code block | INFO |
Lint Calistirma
Bash Script
#!/bin/bash # scripts/lint-agents.sh ERRORS=0 WARNS=0 lint_agent() { local file="$1" local name=$(basename "$file" .md) # Frontmatter kontrolu if ! head -1 "$file" | grep -q "^---"; then echo "ERROR: $file - frontmatter yok" ERRORS=$((ERRORS + 1)) return fi # name field kontrolu local fm_name=$(sed -n '/^---$/,/^---$/p' "$file" | grep "^name:" | sed 's/name: *//') if [ -z "$fm_name" ]; then echo "ERROR: $file - name field yok" ERRORS=$((ERRORS + 1)) elif [ "$fm_name" != "$name" ]; then echo "ERROR: $file - name '$fm_name' != dosya adi '$name'" ERRORS=$((ERRORS + 1)) fi # description kontrolu local desc=$(sed -n '/^---$/,/^---$/p' "$file" | grep "^description:") if [ -z "$desc" ]; then echo "ERROR: $file - description yok" ERRORS=$((ERRORS + 1)) fi # Uzunluk kontrolu local lines=$(wc -l < "$file") if [ "$lines" -lt 10 ]; then echo "WARN: $file - cok kisa ($lines satir)" WARNS=$((WARNS + 1)) elif [ "$lines" -gt 2000 ]; then echo "WARN: $file - cok uzun ($lines satir)" WARNS=$((WARNS + 1)) fi } echo "=== Agent Linter ===" for f in agents/*.md; do lint_agent "$f" done echo "" echo "=== Skill Linter ===" for f in skills/*/SKILL.md skills/*/skill.md; do [ -f "$f" ] && lint_agent "$f" done echo "" echo "Sonuc: $ERRORS error, $WARNS warning" [ "$ERRORS" -gt 0 ] && exit 1 || exit 0
CI Entegrasyonu
# .github/workflows/lint-agents.yml name: Agent & Skill Lint on: pull_request: paths: ['agents/**', 'skills/**'] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: bash scripts/lint-agents.sh
Yaygin Hatalar
| Hata | Ornek | Cozum |
|---|---|---|
| name/dosya uyumsuzlugu | dosya: | name'i kebab-case yap |
| Description cok kisa | | Ne yaptigini detayla |
| Tools yanlis format | | |
| Bos agent dosyasi | Sadece frontmatter, body yok | System prompt ekle |
| Duplicate name | 2 agent ayni name'e sahip | Benzersiz isim ver |
| Skill klasor/name uyumsuz | klasor: | Eslestir |
Toplu Lint Raporu
# Tum agent'lari tara, rapor uret cd ~/vibecosystem bash scripts/lint-agents.sh 2>&1 | tee lint-report.txt # Sadece ERROR'lari goster grep "^ERROR" lint-report.txt # Istatistik echo "Agents: $(ls agents/*.md | wc -l)" echo "Skills: $(ls skills/*/SKILL.md skills/*/skill.md 2>/dev/null | wc -l)" echo "Errors: $(grep -c ERROR lint-report.txt)" echo "Warnings: $(grep -c WARN lint-report.txt)"
vibecosystem Entegrasyonu
- verifier agent: Lint'i final quality gate'e ekle
- qa-engineer agent: Yeni agent/skill PR'larinda lint calistir
- self-learner agent: Lint hatalari pattern olarak ogren
- catalyst agent: Scaffold sırasinda lint-uyumlu dosya uret
- /commit skill: Commit oncesi agent/skill dosyalarini lint'le