Özetle (TL;DR)
Bir yapay zeka ajan dosyasını 3 adımda 10 IDE'ye dönüştürün: (1) YAML ön kısmını `get_field()`, `get_body()` ve `to_kebab()` bash fonksiyonlarıyla ayrıştırın, (2) `convert.sh` kullanarak araca özel formatlara dönüştürün (Claude Code `.md`, Cursor `.mdc`, Aider `CONVENTIONS.md`, Windsurf `.windsurfrules`), (3) `install.sh` ile doğru yollara kurun. Bir kez yazın, otomatik dönüştürün, her yere dağıtın.
Tek bir ajan dosyası. On IDE. The Agency projesinin tek bir Markdown dosyasını Claude Code, Cursor, Aider, Windsurf, GitHub Copilot ve 6'dan fazla diğer araçta çalışacak şekilde nasıl dönüştürdüğünü öğrenin.
Bir yapay zeka ajanı yazıyorsunuz. Şimdi onu şunlarda kullanılabilir hale getirmek istiyorsunuz:
- Claude Code (`~/.claude/agents/` içindeki `.md` dosyaları)
- Cursor (`.cursor/rules/` içindeki `.mdc` dosyaları)
- Aider (proje kök dizinindeki tek `CONVENTIONS.md` dosyası)
- Windsurf (tek `.windsurfrules` dosyası)
- GitHub Copilot (`~/.github/agents/` içindeki `.md` dosyaları)
- Ve 5'ten fazla araç
10 farklı sürüm mü yazarsınız? Hayır. Bir kez yazarsınız, otomatik olarak dönüştürürsünüz.
The Agency projesi bunu iki bash betiğiyle çözüyor:
- `convert.sh` — Ajan dosyalarını araca özel formatlara dönüştürür
- `install.sh` — Dönüştürülmüş dosyaları doğru yollara kopyalar
Bu eğitimde, her iki betiği de tersine mühendislikle inceleyeceksiniz. YAML ön kısmını nasıl ayrıştıracağınızı, gövde içeriğini nasıl çıkaracağınızı ve herhangi bir araç için dönüştürme ardışık düzenleri (pipeline) nasıl oluşturacağınızı öğreneceksiniz.
Ajan Formatı
The Agency'deki her ajan aynı yapıyı kullanır:
---
name: API Tester
description: Specialized in API testing with Apidog, Postman, and automated validation
color: purple
emoji: 🧪
vibe: Breaks APIs before users do.
---
# API Tester Agent Personality
You are **API Tester**, an expert in API validation...
## Identity & Memory
- Role: API testing specialist
- Personality: Thorough, skeptical, evidence-focused
...
Dosyanın iki bölümü vardır:
- Ön Kısım (Frontmatter) — `---` ayırıcıları arasındaki YAML meta verileri
- Gövde — İkinci `---`'den sonraki Markdown içeriği
Dönüştürme şunları ifade eder: ön kısım alanlarını çıkar, gövdeyi hedef formata dönüştür, doğru yola yaz.
Adım 1: YAML Ön Kısmını Ayrıştırın
`parse-frontmatter.sh` dosyasını oluşturun:
#!/usr/bin/env bash
#
# parse-frontmatter.sh — Ajan dosyalarından YAML ön kısım alanlarını çıkarır
#
set -euo pipefail
# YAML ön kısmından tek bir alan değerini çıkarır
# Kullanım: get_field <alan> <dosya>
get_field() {
local field="$1" file="$2"
awk -v f="$field" '
/^---$/ { fm++; next }
fm == 1 && $0 ~ "^" f ": " {
sub("^" f ": ", "");
print;
exit
}
' "$file"
}
# Ön kısmı çıkarır, sadece gövdeyi döndürür
# Kullanım: get_body <dosya>
get_body() {
awk 'BEGIN{fm=0} /^---$/{fm++; next} fm>=2{print}' "$1"
}
# İsmi kebab-case slug'a dönüştürür
# Kullanım: to_kebab "API Tester" → api-tester
to_kebab() {
echo "$1" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g'
}
# Demo
if [[ "${1:-}" == "--demo" ]]; then
AGENT_FILE="${2:-test-agent.md}"
echo "Dosya: $AGENT_FILE"
echo "İsim: $(get_field 'name' "$AGENT_FILE")"
echo "Açıklama: $(get_field 'description' "$AGENT_FILE")"
echo "Slug: $(to_kebab "$(get_field 'name' "$AGENT_FILE")")"
echo "---"
echo "Gövde önizlemesi:"
get_body "$AGENT_FILE" | head -10
fi
Test edin:
chmod +x parse-frontmatter.sh
./parse-frontmatter.sh --demo engineering-backend-architect.md
Çıktı:
Dosya: engineering-backend-architect.md
İsim: Backend Architect
Açıklama: Senior backend architect specializing in scalable system design...
Slug: backend-architect
---
Gövde önizlemesi:
# Backend Architect Agent Personality
You are **Backend Architect**, a senior backend architect...
Adım 2: Claude Code Formatına Dönüştürün
Claude Code ham `.md` dosyalarını kullanır. Dönüştürmeye gerek yok — sadece kopyalayın:
convert_claude_code() {
local agent_file="$1"
local dest="$HOME/.claude/agents/"
mkdir -p "$dest"
cp "$agent_file" "$dest/"
echo " Claude Code: $(basename "$agent_file")"
}
Adım 3: Cursor Formatına Dönüştürün
Cursor, ön kısmında bir `description` alanı bulunan `.mdc` dosyalarını kullanır:
convert_cursor() {
local agent_file="$1"
local name=$(get_field 'name' "$agent_file")
local description=$(get_field 'description' "$agent_file")
local slug=$(to_kebab "$name")
local body=$(get_body "$agent_file")
local output=".cursor/rules/agency-${slug}.mdc"
mkdir -p "$(dirname "$output")"
cat > "$output" << EOF
---
description: Agency agent: $description
---
$body
EOF
echo " Cursor: agency-${slug}.mdc"
}
Giriş:
---
name: API Tester
description: Specialized in API testing...
---
# API Tester Agent...
Çıktı (`.mdc`):
---
description: Agency agent: Specialized in API testing...
---
# API Tester Agent...
Adım 4: Aider Formatına Dönüştürün
Aider, tüm ajanları içeren tek bir `CONVENTIONS.md` dosyası kullanır:
convert_aider() {
local agent_file="$1"
local output="CONVENTIONS.md"
# Ayırıcı ile ekle
echo "" >> "$output"
echo "---" >> "$output"
echo "" >> "$output"
cat "$agent_file" >> "$output"
echo " Aider: $output dosyasına eklendi"
}
Tüm dosyayı oluşturun:
build_aider() {
local output="CONVENTIONS.md"
echo "# Aider için Agency Ajanları" > "$output"
echo "" >> "$output"
echo "Bu dosya, Aider entegrasyonu için tüm Agency ajanlarını içerir." >> "$output"
echo "" >> "$output"
for agent_file in engineering/*.md design/*.md testing/*.md; do
convert_aider "$agent_file"
done
}
Adım 5: Windsurf Formatına Dönüştürün
Windsurf (Aider'a benzer şekilde) tek bir `.windsurfrules` dosyası kullanır:
convert_windsurf() {
local agent_file="$1"
local output=".windsurfrules"
echo "" >> "$output"
echo "---" >> "$output"
echo "" >> "$output"
cat "$agent_file" >> "$output"
echo " Windsurf: $output dosyasına eklendi"
}
Adım 6: Antigravity Formatına Dönüştürün
Antigravity (Gemini), alt dizinlerde `SKILL.md` dosyalarını kullanır:
convert_antigravity() {
local agent_file="$1"
local name=$(get_field 'name' "$agent_file")
local slug=$(to_kebab "$name")
local output="integrations/antigravity/skills/agency-${slug}/SKILL.md"
mkdir -p "$(dirname "$output")"
cat > "$output" << EOF
# Agency Ajanı: $name
$(get_body "$agent_file")
EOF
echo " Antigravity: agency-${slug}/SKILL.md"
}
Adım 7: OpenClaw Formatına Dönüştürün
OpenClaw, ajan başına üç dosya kullanır (`SOUL.md`, `AGENTS.md`, `IDENTITY.md`):
convert_openclaw() {
local agent_file="$1"
local name=$(get_field 'name' "$agent_file")
local description=$(get_field 'description' "$agent_file")
local slug=$(to_kebab "$name")
local body=$(get_body "$agent_file")
local output_dir="integrations/openclaw/agency-${slug}"
mkdir -p "$output_dir"
# SOUL.md - Ana ajan tanımı
cat > "$output_dir/SOUL.md" << EOF
# $name
$description
---
$body
EOF
# AGENTS.md - Ajan yetenekleri
cat > "$output_dir/AGENTS.md" << EOF
# Ajan Yetenekleri: $name
- Alanda uzmanlaşmış uzmanlık
- Teslimat odaklı çıktı
- Tanımlanmış başarı metrikleri
Tam tanım için SOUL.md'ye bakın.
EOF
# IDENTITY.md - Ajan kimliği
cat > "$output_dir/IDENTITY.md" << EOF
# Kimlik: $name
- İsim: $name
- Açıklama: $description
- Kaynak: The Agency (agency-agents deposu)
EOF
echo " OpenClaw: agency-${slug}/"
}
Adım 8: Tam convert.sh Betiği
İşte tam dönüştürme betiği (basitleştirilmiş):
#!/usr/bin/env bash
#
# convert.sh — Tüm Agency ajanlarını araca özel formatlara dönüştürür
#
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
OUT_DIR="$REPO_ROOT/integrations"
# Ön kısım yardımcıları
get_field() {
local field="$1" file="$2"
awk -v f="$field" '
/^---$/ { fm++; next }
fm == 1 && $0 ~ "^" f ": " { sub("^" f ": ", ""); print; exit }
' "$file"
}
get_body() {
awk 'BEGIN{fm=0} /^---$/{fm++; next} fm>=2{print}' "$1"
}
to_kebab() {
echo "$1" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g'
}
# Dönüştürme fonksiyonları
convert_claude_code() {
local agent_file="$1"
local dest="$OUT_DIR/claude-code/"
mkdir -p "$dest"
cp "$agent_file" "$dest/"
}
convert_cursor() {
local agent_file="$1"
local name=$(get_field 'name' "$agent_file")
local slug=$(to_kebab "$name")
local body=$(get_body "$agent_file")
mkdir -p "$OUT_DIR/cursor/.cursor/rules/"
cat > "$OUT_DIR/cursor/.cursor/rules/agency-${slug}.mdc" << EOF
---
description: Agency agent: $(get_field 'description' "$agent_file")
---
$body
EOF
}
convert_aider() {
local output="$OUT_DIR/aider/CONVENTIONS.md"
echo "" >> "$output"
echo "---" >> "$output"
cat "$agent_file" >> "$output"
}
convert_windsurf() {
local output="$OUT_DIR/windsurf/.windsurfrules"
echo "" >> "$output"
echo "---" >> "$output"
cat "$agent_file" >> "$output"
}
# Ana dönüştürme döngüsü
echo "Agency ajanları dönüştürülüyor..."
AGENT_DIRS=(engineering design testing marketing sales)
for dir in "${AGENT_DIRS[@]}"; do
for agent_file in "$REPO_ROOT/$dir"/*.md; do
[[ -f "$agent_file" ]] || continue
name=$(get_field 'name' "$agent_file")
echo "İşleniyor: $name"
convert_claude_code "$agent_file"
convert_cursor "$agent_file"
done
done
# Birleştirilmiş dosyaları oluştur
echo "# Aider için Agency Ajanları" > "$OUT_DIR/aider/CONVENTIONS.md"
for dir in "${AGENT_DIRS[@]}"; do
for agent_file in "$REPO_ROOT/$dir"/*.md; do
[[ -f "$agent_file" ]] || continue
convert_aider "$agent_file"
done
done
echo "# Windsurf için Agency Ajanları" > "$OUT_DIR/windsurf/.windsurfrules"
for dir in "${AGENT_DIRS[@]}"; do
for agent_file in "$REPO_ROOT/$dir"/*.md; do
[[ -f "$agent_file" ]] || continue
convert_windsurf "$agent_file"
done
done
echo "Dönüştürme tamamlandı!"
echo " Claude Code: $OUT_DIR/claude-code/"
echo " Cursor: $OUT_DIR/cursor/.cursor/rules/"
echo " Aider: $OUT_DIR/aider/CONVENTIONS.md"
echo " Windsurf: $OUT_DIR/windsurf/.windsurfrules"
Çalıştırın:
chmod +x convert.sh
./convert.sh
Adım 9: Her Araca Kurun
Dönüştürmeden sonra, dosyaları araca özel yollara kopyalayın:
#!/usr/bin/env bash
#
# install.sh — Dönüştürülmüş ajanları yerel araçlarınıza kurar
#
set -euo pipefail
# Claude Code
install_claude_code() {
local src="$REPO_ROOT/integrations/claude-code/"
local dest="$HOME/.claude/agents/"
mkdir -p "$dest"
cp "$src"/*.md "$dest/"
echo "Claude Code: $(find "$dest" -name '*.md' | wc -l) ajan kuruldu"
}
# Cursor
install_cursor() {
local src="$REPO_ROOT/integrations/cursor/.cursor/rules/"
local dest="./.cursor/rules/"
mkdir -p "$dest"
cp "$src"/*.mdc "$dest/"
echo "Cursor: $(find "$dest" -name '*.mdc' | wc -l) kural kuruldu"
}
# Aider
install_aider() {
local src="$REPO_ROOT/integrations/aider/CONVENTIONS.md"
local dest="./CONVENTIONS.md"
cp "$src" "$dest"
echo "Aider: CONVENTIONS.md kuruldu"
}
# Windsurf
install_windsurf() {
local src="$REPO_ROOT/integrations/windsurf/.windsurfrules"
local dest="./.windsurfrules"
cp "$src" "$dest"
echo "Windsurf: .windsurfrules kuruldu"
}
# Algılanan tüm araçları kur
install_all() {
if [[ -d "$HOME/.claude/agents/" ]]; then
install_claude_code
fi
if command -v cursor &>/dev/null || [[ -d "./.cursor/" ]]; then
install_cursor
fi
if command -v aider &>/dev/null; then
install_aider
fi
}
install_all
Format Karşılaştırması
| Araç | Format | Kapsam | Dönüştürme |
|---|---|---|---|
| Claude Code | .md |
Kullanıcı genelinde (~/.claude/agents/) |
Olduğu gibi kopyala |
| Cursor | .mdc |
Proje (.cursor/rules/) |
Açıklama ön kısmı ekle |
| Aider | CONVENTIONS.md |
Proje kökü | Tüm ajanları birleştir |
| Windsurf | .windsurfrules |
Proje kökü | Tüm ajanları birleştir |
| GitHub Copilot | .md |
Kullanıcı genelinde (~/.github/agents/) |
Olduğu gibi kopyala |
| Antigravity | SKILL.md |
Kullanıcı genelinde (~/.gemini/antigravity/) |
Beceri dizinine sar |
| OpenClaw | SOUL.md + diğerleri |
Kullanıcı genelinde (~/.openclaw/) |
3 dosyaya ayır |
| Gemini CLI | Uzantı | Kullanıcı genelinde (~/.gemini/extensions/) |
Manifest + beceriler oluştur |
| OpenCode | .md |
Proje (.opencode/agents/) |
Olduğu gibi kopyala |
| Qwen Code | .md |
Proje (.qwen/agents/) |
Alt Ajan olarak kopyala |
Kendi Dönüştürme Betiğinizi Oluşturun
Yeni bir araç eklemek için şablon:
#!/usr/bin/env bash
# 1. Dönüştürme fonksiyonunu tanımla
convert_your_tool() {
local agent_file="$1"
local name=$(get_field 'name' "$agent_file")
local description=$(get_field 'description' "$agent_file")
local slug=$(to_kebab "$name")
local body=$(get_body "$agent_file")
# 2. Çıktı yolunu oluştur
local output="path/to/your/tool/agency-${slug}.ext"
mkdir -p "$(dirname "$output")"
# 3. Dönüştürülen içeriği yaz
cat > "$output" << EOF
# Aracınıza özel format
# Kullanın: $name, $description, $body
EOF
echo " YourTool: agency-${slug}.ext"
}
# 4. Ana döngüye ekle
for agent_file in engineering/*.md; do
convert_your_tool "$agent_file"
done
Neler Yaptınız
| Bileşen | Amaç |
|---|---|
get_field() |
YAML ön kısım değerlerini çıkarır |
get_body() |
Ön kısmı çıkarır, markdown gövdesini döndürür |
to_kebab() |
İsimleri URL dostu slug'lara dönüştürür |
convert_cursor() |
.mdc formatına dönüştürür |
convert_aider() |
Tek bir dosyada birleştirir |
convert_windsurf() |
Tek bir dosyada birleştirir |
convert_antigravity() |
Beceri dizinleri oluşturur |
convert_openclaw() |
Ajan başına 3 dosyaya böler |
install.sh |
Araca özel yollara kopyalar |
Sonraki Adımlar
Betiikleri genişletin:
- `xargs -P` veya GNU parallel ile paralel dönüştürme ekleyin
- Doğrulama ekleyin (gerekli ön kısım alanlarını kontrol edin)
- Deneme çalıştırma modu ekleyin (`--dry-run` bayrağı)
Daha fazla araç ekleyin:
- VS Code uzantıları
- JetBrains IDE'leri
- Özel dahili araçlar
Büyük depolar için optimize edin:
- Ayrıştırılmış ön kısmı önbelleğe alın
- Güvenli dosya işleme için `find` komutunu `-print0` ile kullanın
- 100'den fazla ajan için ilerleme çubukları ekleyin
Sık Karşılaşılan Sorun Giderme
Dönüştürme betiği "hatalı ikame" ile başarısız oluyor:
- Bash çalıştırdığınızdan emin olun, sh değil: `#!/usr/bin/env bash`
- Bash sürümünü kontrol edin: `bash --version` (4.0+ olmalı)
- Açıkça bash ile çalıştırın: `bash convert.sh`
- Windows satır sonlarını arayın: `sed -i 's/\r$//' convert.sh`
Ön kısım alanları çıkarılamıyor:
- YAML formatının sadece `:` değil, `: ` (iki nokta üst üste boşluk) kullandığını doğrulayın
- Alan adlarından önce fazladan boşluk olup olmadığını kontrol edin
- Ön kısım ayırıcılarının tam olarak `---` (3 tire) olduğundan emin olun
- Ayrıştırmayı manuel olarak test edin: `./parse-frontmatter.sh --demo agent.md`
Slug oluşturma bozuk isimler yaratıyor:
- `to_kebab()` fonksiyonunu uç durumlarla test edin
- Özel karakterleri işleyin: `to_kebab() { echo "$1" | iconv -f utf8 -t ascii//translit | ... }`
- Boş slug'lar için yedek ekleyin: `[[ -z "$slug" ]] && slug="unknown-agent"`
- Hata ayıklama için orijinal isimleri günlüğe kaydedin
Cursor kuralları yüklenmiyor:
- `.mdc` dosyalarının `description` ile geçerli bir ön kısım içerdiğini doğrulayın
- Cursor'ın MCP yapılandırmasını kontrol edin: `.cursor/mcp.json`
- Dosyaların `.cursor/agents/` değil, `.cursor/rules/` içinde olduğundan emin olun
- Yeni kuralları ekledikten sonra Cursor'ı yeniden başlatın
Aider CONVENTIONS.md çok büyük hale geliyor:
- Kategoriye göre ayırın: `CONVENTIONS-engineering.md`, `CONVENTIONS-design.md`
- Kullanımdan kaldırılmış ajanlar için otomatik budama uygulayın
- En üste içindekiler tablosu ekleyin
- Include direktifleri ile ajan başına dosyaları düşünün
Büyük Dönüştürmeler İçin Performans Optimizasyonu
Paralel İşleme:
100'den fazla ajanı olan depolar için GNU parallel kullanın:
#!/usr/bin/env bash
# convert-parallel.sh
export OUT_DIR="$REPO_ROOT/integrations"
# Paralel kullanım için fonksiyonları dışa aktar
export -f get_field get_body to_kebab convert_cursor convert_claude_code
# Tüm ajan dosyalarını bul ve paralel olarak işle
find "$REPO_ROOT" -name "*.md" -type f | \
parallel -j 8 --progress '
name=$(get_field "name" {})
slug=$(to_kebab "$name")
echo "Dönüştürülüyor: $name"
convert_cursor "{}"
convert_claude_code "{}"
'
echo "Paralel dönüştürme tamamlandı!"
Artımlı Dönüştürme:
Sadece değişen dosyaları dönüştürün:
#!/usr/bin/env bash
# convert-incremental.sh
CACHE_FILE="$REPO_ROOT/.conversion-cache"
# Önceki durumu yükle
declare -A PREV_HASHES
if [[ -f "$CACHE_FILE" ]]; then
while IFS='=' read -r file hash; do
PREV_HASHES["$file"]="$hash"
done < "$CACHE_FILE"
fi
# Her ajanı işle
for agent_file in engineering/*.md; do
CURRENT_HASH=$(md5sum "$agent_file" | cut -d' ' -f1)
PREV_HASH="${PREV_HASHES[$agent_file]:-}"
if [[ "$CURRENT_HASH" != "$PREV_HASH" ]]; then
echo "Değişti: $agent_file"
convert_cursor "$agent_file"
convert_claude_code "$agent_file"
NEW_HASHES["$agent_file"]="$CURRENT_HASH"
else
echo "Değişmedi: $agent_file"
fi
done
# Önbelleği kaydet
for file in "${!NEW_HASHES[@]}"; do
echo "$file=${NEW_HASHES[$file]}"
done > "$CACHE_FILE"
İlerleme Takibi:
Uzun dönüştürmeler için görsel ilerleme ekleyin:
#!/usr/bin/env bash
total_files=$(find "$REPO_ROOT" -name "*.md" -type f | wc -l)
current=0
for agent_file in "$REPO_ROOT"/**/*.md; do
((current++))
percent=$((current * 100 / total_files))
# İlerleme çubuğu
filled=$((percent / 5))
empty=$((20 - filled))
bar=$(printf '%*s' "$filled" | tr ' ' '#')
spaces=$(printf '%*s' "$empty" | tr ' ' ' ')
name=$(get_field 'name' "$agent_file")
echo -ne "\r[${bar}${spaces}] ${percent}% - $name"
convert_cursor "$agent_file"
done
echo -ne "\n"
Paylaşılan Ajanlar İçin Güvenlik Hususları
Ajan Kaynaklarını Doğrulama:
Dış kaynaklardan ajan indirirken:
#!/usr/bin/env bash
# validate-agent.sh
validate_agent() {
local file="$1"
# Gerekli ön kısım alanlarını kontrol et
local name=$(get_field 'name' "$file")
local description=$(get_field 'description' "$file")
if [[ -z "$name" ]]; then
echo "HATA: '$file' dosyasında 'name' alanı eksik"
return 1
fi
if [[ -z "$description" ]]; then
echo "UYARI: '$file' dosyasında 'description' alanı eksik"
fi
# Gövdede kötü niyetli desenleri kontrol et
local body=$(get_body "$file")
if echo "$body" | grep -q 'rm -rf\|curl.*\|wget.*\|eval\|exec'; then
echo "UYARI: '$file' dosyasında potansiyel olarak tehlikeli desenler var"
return 1
fi
echo "GEÇERLİ: $name"
return 0
}
Ajan Yürütme Korumalı Alanı (Sandboxing):
Güvenilmeyen ajanlar için, izole ortamlarda çalıştırın:
- Ajan yürütme için Docker kapsayıcıları kullanın
- Salt okunur bağlamalarla dosya sistemi erişimini sınırlayın
- Ağ erişimini belirli alan adlarıyla kısıtlayın
- Denetim izleri için tüm ajan eylemlerini günlüğe kaydedin
Tek bir ajan dosyası. On IDE. İki bash betiği.
İşte dönüştürme otomasyonunun gücü bu. Bir kez yazın, otomatik dönüştürün, her yere kurun.
Sıra sizde: favori yapay zeka aracınız için dönüştürme desteği ekleyin. Betiği paylaşın. Ajanları taşınabilir hale getirin.
Ana Çıkarımlar
- Bir kez yazın, 10'dan fazla formata dönüştürün — YAML ön kısmına sahip tek bir Markdown dosyası Claude Code, Cursor, Aider, Windsurf ve 6'dan fazla başka araca dönüşür
- Bash ayrıştırması ön kısım çıkarılmasını yönetir — `get_field()` YAML değerlerini çıkarır, `get_body()` ön kısmı kaldırır, `to_kebab()` URL dostu slug'lar oluşturur
- Araca özel formatlar farklı dönüşümler gerektirir — Claude Code olduğu gibi kopyalar, Cursor açıklama ön kısmı ekler, Aider/Windsurf tüm ajanları birleştirir
- Kurulum betikleri doğru yollara kopyalar — Kullanıcı genelindeki araçlar `~/.claude/agents/` kullanır, proje araçları `.cursor/rules/` veya proje kök dosyalarını kullanır
- Yeni araçlar için şablonlarla genişletin — `convert_your_tool()` fonksiyonunu tanımlayın, ana döngüye ekleyin, format gereksinimlerini belgeleyin
Sıkça Sorulan Sorular
convert.sh nedir ve nasıl çalışır? convert.sh, ajan Markdown dosyalarından YAML ön kısmını ayrıştıran, gövde içeriğini çıkaran ve her ajanı araca özel formatlara dönüştüren bir bash betiğidir. Ayrıştırma için awk, slug dönüştürme için sed ve çıktı üretimi için heredoc'ları kullanır.
Bash'te ön kısım ayrıştırması nasıl çalışır? `get_field()` fonksiyonu, ön kısım ayırıcılarını (`---`) takip etmek için awk kullanır, alan adıyla eşleşen satırı bulur ve değeri çıkarır. `get_body()` ise ikinci `---` ayırıcısından sonraki tüm satırları yazdırır.
Hangi IDE'ler ve araçlar destekleniyor? Claude Code (`.md`), Cursor (`.mdc`), Aider (`CONVENTIONS.md`), Windsurf (`.windsurfrules`), GitHub Copilot (`.md`), Antigravity (`SKILL.md`), OpenClaw (`SOUL.md` + 2 dosya), Gemini CLI uzantıları, OpenCode ve Qwen Code.
Yeni bir araç için dönüştürme desteğini nasıl eklerim? Ön kısım alanlarını çıkaran, gövdeyi aracınızın formatına dönüştüren ve doğru yola yazan bir `convert_yourtool()` fonksiyonu oluşturun. Fonksiyon çağrısını ana dönüştürme döngüsüne ekleyin.
Daha hızlı işleme için dönüştürmeleri paralel olarak çalıştırabilir miyim? Evet. Birden fazla ajan dosyasını aynı anda işlemek için `xargs -P` veya GNU parallel kullanın. 100'den fazla ajan için, paralel dönüştürme çalışma süresini dakikalardan saniyelere düşürebilir.
Ön kısım alanlarının var olduğunu nasıl doğrularım? Dönüştürme fonksiyonunuza doğrulama kontrolleri ekleyin: `[[ -z "$name" ]] && echo "İsim alanı eksik" && exit 1`. Çıktı dosyalarını yazmadan önce doğrulamayı çalıştırın.
Bazı ajanlar için dönüştürme başarısız olursa ne olur? Hatalarda hızlı bir şekilde başarısız olmak için `set -euo pipefail` kullanın. Bozuk dosyaları atlamak için `|| continue` ile hata işleme ekleyin. Hata ayıklama için başarısızlıkları ayrı bir dosyaya kaydedin.
