agent-linter

エージェントおよびスキルファイルの構造的検証。フロントマターのチェック、命名規則、必須のセクションチェック、一貫性チェック。

@vibeevalMIT更新 2026-08-22v0.1.0直近30日 2 回
コンテキストを 1,604 トークン使用しますコンテキストを 1.6k トークン 使用します

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

KuralKontrolHata Seviyesi
name mevcutFrontmatter'da name var mi?ERROR
name = dosya adiname: sleuth == sleuth.mdERROR
name kebab-casecode-reviewer OK, codeReviewer FAILERROR
description mevcutBos olmamaliERROR
description uzunlugu20-200 karakterWARN
tools arrayString array olmaliERROR
tools gecerliSadece bilinen tool isimleriWARN
model gecerliopus, sonnet veya bosERROR

Body Kurallari

KuralKontrolHata Seviyesi
System prompt varFrontmatter'dan sonra icerik varERROR
50+ satirCok kisa agent tanimlari yetersizWARN
2000 satir maxCok uzun dosyalar token israf ederWARN
Markdown basliklarEn az 1 ## basligi varWARN

Skill Dosyasi Kurallari

Frontmatter (ZORUNLU)

---
name: skill-adi          # kebab-case
description: Aciklama    # 20-300 karakter
---

Skill Validasyonu

KuralKontrolHata Seviyesi
Dosya adiSKILL.md veya skill.mdERROR
name mevcutFrontmatter'daERROR
name = klasor adiname: tdd-workflow == skills/tdd-workflow/WARN
description mevcutBos olmamaliERROR
Icerik varFrontmatter'dan sonra en az 20 satirWARN
Kod ornegi varEn az 1 code blockINFO

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

HataOrnekCozum
name/dosya uyumsuzluguname: codeReviewer dosya: code-reviewer.mdname'i kebab-case yap
Description cok kisadescription: Reviews codeNe yaptigini detayla
Tools yanlis formattools: Read, Bashtools: ["Read", "Bash"]
Bos agent dosyasiSadece frontmatter, body yokSystem prompt ekle
Duplicate name2 agent ayni name'e sahipBenzersiz isim ver
Skill klasor/name uyumsuzname: tdd klasor: tdd-workflow/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