‹ 首页

agent-linter

@vibeeval · 收录于 1 周前 · 上游提交 1 个月前

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.

适合你,如果你需要确保 agent 和 skill 文件格式正确、命名规范。

/ 下载安装
agent-linter.skill双击,或拖进 Claude 桌面版 / Cowork,即完成安装↓ .skill↓ .zip
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
Claude Code~/.claude/skills/(项目级 .claude/skills/)
Codex CLI~/.codex/skills/
Cursor自动读取上面两处目录
其他工具见其文档的「skills」目录;两个下载是同一份文件,只是名字不同
/ 通过 npx 安装 校验哈希
npx oh-my-skill add vibeeval/vibecosystem/agent-linter
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- vibeeval/vibecosystem/agent-linter
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify vibeeval/vibecosystem/agent-linter
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
515GitHub stars
~1.1K上下文体积 · 单文件
镜像托管

怎么用

技能原文 SKILL.md作者撰写 · MIT · cea9462

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 | |-------|---------|---------------| | name mevcut | Frontmatter'da name var mi? | ERROR | | name = dosya adi | name: sleuth == sleuth.md | ERROR | | name kebab-case | code-reviewer OK, codeReviewer FAIL | ERROR | | description mevcut | Bos olmamali | ERROR | | description uzunlugu | 20-200 karakter | WARN | | tools array | String array olmali | ERROR | | tools gecerli | Sadece bilinen tool isimleri | WARN | | model 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 | SKILL.md veya skill.md | ERROR | | name mevcut | Frontmatter'da | ERROR | | name = klasor adi | name: tdd-workflow == skills/tdd-workflow/ | WARN | | description 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 | name: codeReviewer dosya: code-reviewer.md | name'i kebab-case yap | | Description cok kisa | description: Reviews code | Ne yaptigini detayla | | Tools yanlis format | tools: Read, Bash | tools: ["Read", "Bash"] | | 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 | name: 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
按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。