Modül 4 · Domain 4 — Prompt Crafting & Engineering (%20-25) · ⏱ 15 dakika

System prompt ve custom instructions

System prompt and custom instructions

Bu derste neler öğreneceksin

  • System prompt ile custom instructions arasındaki ilişkiyi tanımlamak
  • Repo seviyesi ve kullanıcı seviyesi custom instructions'ı yapılandırmak
  • Etkili custom instructions örüntülerini öğrenmek
  • Custom instructions'ın context window'daki önceliğini anlamak

System prompt nedir?

LLM dünyasında system prompt, modele “sen bu şekilde davran” diyen kalıcı talimat kümesidir. Kullanıcı mesajlarından önce gelir ve her yanıtta geçerlidir.

Copilot’ta system prompt şu kaynaklardan oluşur:

  1. GitHub’ın temel model talimatları (değiştirilemez)
  2. Custom instructions (geliştirici/admin tarafından eklenir)

Custom instructions nerede tanımlanır?

SeviyeDosya / KonumKapsam
Repo.github/copilot-instructions.mdBu repo’nun tüm kullanıcıları
KullanıcıIDE → Copilot Settings → Custom instructionsTek kullanıcı, tüm repolar
OrganizasyonGitHub Admin → Copilot → Custom instructions (Enterprise)Tüm org üyeleri

Etkili custom instructions örüntüleri

# .github/copilot-instructions.md

## Dil ve stil
- TypeScript strict mode kullan — `any` tipi yasak
- Async işlemlerde async/await, Promise.then değil
- Fonksiyon ve değişken adları camelCase, interface'ler PascalCase

## Test
- Jest kullan, her fonksiyon için en az bir test yaz
- Test dosyası: `src/**/__tests__/*.test.ts`

## Hata yönetimi
- Tüm async fonksiyonlarda try/catch zorunlu
- Hataları `AppError` sınıfıyla wrap et (`src/errors/AppError.ts`)

## Yasaklar
- `console.log` yerine logger kullan (`src/utils/logger.ts`)
- process.env değerlerine doğrudan erişme — config modülünden oku

Bu talimatlar her Copilot önerisini şekillendirir.

Anti-pattern: fazla uzun instructions

Custom instructions 8.000 karakter sınırına sahiptir. Çok uzun talimatlar:

  • Context window’dan pay yer
  • Çelişkili kurallar oluşturabilir
  • Bakımı zorlaşır

İyi pratik: Kuralları kategori bazlı grupla, tekrarlardan kaçın, “zorunlu” ile “tercihli” kuralları ayır.

Sınavda beklenen bilgi

Sınav şu soruları sorar:

  • “Tüm geliştiricilere aynı naming convention zorlamak istiyorsun. Nereye tanımlarsın?” → Repo-level copilot-instructions.md
  • “Bir geliştirici kendi stilini korumak istiyor ve repo kurallarını geçersiz kılmak istiyor. Mümkün mü?” → Hayır, repo öncelik alır
  • “Organization-wide custom instructions hangi planda kullanılabilir?” → Enterprise

Sırada ne var?

Bir sonraki derste zero-shot vs few-shot — örneksiz vs örnekli prompt stratejileri ve Copilot’ta hangisinin ne zaman daha iyi çalıştığı.