Yazılım Mimarileri ve Tasarım Desenleri Üzerine

Microsoft Agent Framework – Agent Skills İle AI Agent’ın Yeteneklerini Genişletelim

Microsoft Agent Framework - Agent Skills İle AI Agent'ın Yeteneklerini Genişletelim

Merhaba,


Bu içeriğimizde Microsoft Agent Framework‘de, AI Agent’ın yeteneklerini taşınabilir bir şekilde genişletebilmemizi sağlayan Agent Skills özelliğini inceliyor olacağız.

Agent Skills Nedir?

Agent Skills, agent’lara alan uzmanlığı kazandırabilmek için tasarlanmış basit ve açık bir formattır.

Agent Skills, agent’lara özel yetenekler ve alan uzmanlığı kazandırmak için tasarlanmış taşınabilir talimat (instructions) ve kaynak (resources) paketleridir. Bu paketler, açık bir spesifikasyonu takip etmekte ve Progressive Disclosure Pattern‘ı sayesinde agent’ların yalnızca ihtiyaç duydukları bağlamı (context), ihtiyaç duydukları anda yüklemelerini sağlamaktadır.

Agent Skills, AI Agent’ların görevlerinde tutarlı, esnek ve uzmanlaşmış bir şekilde işlevsellik gösterebilmesi için özellikle belirli bir alanın uzman bilgisini paketlemek, agent’ların yeteneklerini çekirdek talimatlarını değiştirmeden genişletmek, çok adımlı görevleri (multi-step tasks) tekrar edilebilir ve denetlenebilir iş akışlarına (workflows) dönüştürmek ve aynı beceriyi farklı Agent Skills uyumlu ürünlerde yeniden kullanabilmek için oldukça ideal bir yapılanmadır.

Markdown Belgesi nedir?
Düz metin kullanılarak yazılan ve basit işaretlerle biçimlendirme yapılan yazı biçimlendirme dosyasıdır. En yaygın kullanım yeri GitHub README dosyalarıdır…

Nasıl Çalışmaktadır?

Her skill’in temelinde bir SKILL.md dosyası mevcuttur. Bu dosya, ilgili skill’in ne yaptığını açıklayan ve nasıl yapılacağını adım adım tarif eden bir markdown belgesidir. Skill’ler isteğe bağlı olarak script’ler, referans dokümanlar ve diğer kaynakları da içerebilmektedir.

Agent Skills, agent’ın ‘ne bileceğini’ ve ‘nasıl davranacağını’ dışarıdan modüler bir paket olarak tanımlanmasını sağlayan ve agent’a core instruction’lara dokunmaksızın yeni yetenekler kazandırmamıza imkan tanıyan bir özelliktir.

Agent Skills, context window’u şişirmemek için yukarıdaki satırlarda da bahsedildiği üzere advertise, load ve read resources aşamalarından oluşan Progressive Disclosure Pattern modelini kullanmaktadır. Tabi burada öncelikle şunu bilmek gerekmektedir; bir agent’ın yapabildiği tüm yeteneklere bizler terminolojik olarak ingilizce karşılığı olan capability demekteyiz. Haliyle temel mantık şöyledir; bir agent tüm capability’leri en baştan bodoslama yüklememekte, önce advertise etmektedir. Yani varlığını duyurmaktadır. Ardından gerekirse yüklemekte (load) ve son olarak da kaynakları kullanmaktadır (read resources)

Bu üç adım Progressive Disclosure’ın teknik implementasyonudur.

  1. Advertise (Capability Duyurma)
    Bu aşamada skill çalışmaz ve yüklenmez! Yalnızca agent’ın bu yeteneğe sahip olduğu duyurulur.

    Yani LLM’e şu mesaj verilir:

    Bu ajan aşağıdaki yeteneklere sahip olabilir:
    – Weather skill
    – Web search skill
    – Email skill

    Ama burada dikkat edilmesi gereken bir durum vardır. O da, başlangıçta sadece capability/skill metadata’sının gösterilmesi yani advertise edilmesidir. Detaylı tool tanımı ve execution bilgisi ancak skill gerçekten kullanılacaksa LLM context’ine eklenecektir.

  2. Load (Skill Yükleme)
    Kullancıdan prompt geldikten sonra bu aşama devreye girer.

    Burada agent akıl yürütme (reasoning) yapar.

    User: Ankara’da hava durumuyla ilgili bilgi ver!

    LLM bu noktada düşünür.

    LLM: WeatherSkill kullanılabilir!

    İşte o anda skill load edilir. Yani runtime’da bir WeatherSkill instance’ı oluşturulur.

    Skill registry → WeatherSkill instance oluştur!
  3. Read resources
    Bu aşamada ise skill yüklendikten sonra agent artık gerçek işi yapabilmektedir. Misal olarak, WeatherSkill.GetWeather("Ankara") şeklinde bir fonksiyon çağrımı gerçekleştirebilir. Bu fonksiyon ardında da herhangi bir API çağrılabilir, database’den veri elde edilebilir, bir dosya okunabilir veya web search gerçekleştirilebilir.

    Bu aşamaya execution layer denmektedir.

Bu model, Microsoft Agent Framework içinde Agent Skills ve resource discovery mantığını açıklamak için oldukça yerindedir. Ayrıca bu modelin advertise aşaması sayesinde token maliyeti oldukça düşürülmekte ve güvenli bir skill çağrım süreci gerçekleştirilmektedir.

┌──────────────────────────┐
│ Agent Start │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ 1. Advertise Capabilities│
│ │
│ Agent hangi yeteneklere │
│ sahip olduğunu duyurur │
│ │
│ – Weather │
│ – Email │
│ – WebSearch │
│ – FileSystem │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ 2. User Prompt │
│ │
│ “Ankara’da hava durumu?” │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ 3. Agent Reasoning │
│ │
│ LLM düşünür: │
│ “Weather capability │
│ gerekli.” │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ 4. Load Skill │
│ │
│ WeatherSkill runtime’da │
│ yüklenir │
│ │
│ Tool schema artık │
│ LLM contextinde │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ 5. Read Resources │
│ (Skill Execution) │
│ │
│ Weather API çağrılır │
│ Veri alınır │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ 6. Agent Response │
│ │
│ “Ankara’da sıcaklık │
│ 25°C ve güneşli.” │
└──────────────────────────┘
Şimdi buradaki akıştan ve yapılan çalışmanın mahiyetinden akla (haklı olarak) Model Context Protocol yahut Semantic Kernel‘daki Plugin yapılanması geliyor olabilir… Ki evet, esasında işlevsel olarak aynı kategoriye sahip ilişkisel teknikler olsalar da aynı şeyler değildirler!

MCP, Agent Skill ve Semantic Kernel’daki Plugin mantığı aynı problemin farklı katmanlardaki çözümleridir…

Malumunuz MCP, adı üzerinde bir protokoldür ve esas amacı AI modellerinin dış sistemlerle standart bir şekilde konuşmasını sağlamaktır.

Semantic Kernel’daki Plugin yapılanması ise AI’a kod fonksiyonlarını tool olarak tanıtma mekanizmasıdır. Yani Plugin’i bir fonksiyonlar koleksiyonu olarak düşünebiliriz.

Agent Skills ise agent için bir capability paketidir. İçinde sadece fonksiyon değil; prompt, workflow logic, resource bağlantıları ve farklı agent çağrıları gibi başka şeyler de olabilir.

Skill, Plugin’den daha kapsamlı bir capability paketidir.

Ve kritik bir gerçek vardır ki, artık modern agent mimarileri şu seyre doğru meyletmektedirler:

LLM
│
▼
Agent Runtime
│
▼
Skills
│
▼
MCP Tools
Ve hatta yakın gelecekte beklenen özelliklerin arasında, programmatic skill oluşturma (API üzerinden runtime’da skill kaydetme) ve skill içindeki script’lerin doğrudan çalıştırılması da söz konusu olacaktır.

Bunlardan kaynaklı, yarın Agent Skill ile MCP tool yapılarının daha baskın olacağını şimdiden söylemekte fayda vardır.

SKILL.md dosyasının formatı nasıldır?

SKILL.md, bir Agent Skill’in tanım dosyasıdır. En basit haliyle içeriği aşağıdaki gibidir:

# Weather Skill

## Description
Provides weather information for a given city.

## When to Use
Use this skill when the user asks about:
– current weather
– temperature
– forecast

## Inputs
– city: Name of the city

## Outputs
– weather summary
– temperature

## Resources
– weather_api.md

Bu dosya agent’a şunu anlatır: “bu skill ne işe yarar, ne zaman kullanılmalıdır ve hangi kaynakları kullanmaktadır…”

Burada Progressive Disclosure için önemli kısım genelde ## Resources bölümüdür. Buradan anlayacağımız şudur ki, Microsoft Agent Framework’te bir skill kendisine ait diğer markdown dosyalarını resources bölümü üzerinden referans gösterebilmektedir. Zaten agent ilk başladığında advertise aşamasında sadece SKILL.md’i görecektir. Ardından kullanıcı prompt’u geldiğinde ve skill yüklenmesi gerektiğinde, resources altında listelenen md dosyaları load edilecek ve okunacaktır.

Daha gerçekçi bir SKILL.md için aşağıdaki yapılanmayı inceleyiniz;

SKILL.md email_api.md
# Email Sender Skill

## Description
Allows the agent to send emails to recipients.

## Capabilities
– send email
– attach files

## When to Use
Use this skill when:
– the user asks to send an email
– the user asks to share information via email

## Inputs
– recipient
– subject
– body

## Outputs
– confirmation message

## Resources
– email_api.md
– email_examples.md

# Email API

POST /send-email

Parameters:
– recipient
– subject
– body

Example:

{
“recipient”: “user@example.com”,
“subject”: “Report”,
“body”: “Here is the report”
}

Güvenlik Açısından Dikkat edilmesi Gerekenler

Agent Skill’leri, projelerimize eklediğimiz üçüncü parti kodlar gibi düşünmeli ve aynı güvenlik disiplini uygulanmalıdır. Çünkü, skill’lerin içeriği agent’ın context’ine enjekte edilmektedir ve bazı skill’ler script çalıştırabilmektedir. Bu yüzden güvenlik açısından dikkatli olmak gerekmektedir. Bunun için aşağıdaki bir kaç maddeyi göz önüne almakta fayda görmekteyim;

Skills vs. Workflows | Hangisi Ne Zaman Kullanılmalı?

Skills yahut workflows… İkisi de agent’ın yapabileceklerini genişletmektedir amma velakin çalışma şekiller tamamen farklılık göstermektedir.

Skill’de, hangi agent’ın hangi yeteneğe sahip olduğu tarafımızca tanımlanırken, nasıl kullanılacağının kararı AI tarafından verilmektedir. Haliyle akışın kontrolü AI’dadır.

Workflow’da ise akış, agent’ın müdahale edemeyeceği şekilde ve tüm kontrol bizde olacak biçimde tarafımızca tasarlanmaktadır. Dolayısıyla öngörülebilir bir davranış durumu söz konusudur ve tüm süreç deterministiktir.

Bundan kaynaklı skill; hava durumunu getirme, metni özetleme, kod analizi gerçekleştirme vs. gibi küçük ve tek odaklı işler için ideal’ken, workflow ise bir sipariş süreci yahut kredi başvuru süreci gibi çok adımlı süreçler için daha kullanışlıdır. Çünkü bir süreç, tek bir skill ile çözülemeyeceği için workflow daha uygun bir yaklaşım olacaktır.

Skill, AI’ın istediği gibi kullanabildiği küçük bir yetenekken, workflow ise bir işlev için adım adım tasarlanmış bir süreçtir.

FileAgentSkillsProvider Nedir?

FileAgentSkillsProvider, dosya sistemindeki skill klasörlerini tarayıp SKILL.md dosyalarını agent’a yükleyen bir provider’dır.

Çalışma mantığı nasıldır?
Agent Framework’te skill’ler genelde aşağıdakine benzer dosya sisteminde tutulmaktadırlar;

skills/
└── user-skills/
├── SKILL.md
└── resources/
├── API_REFERENCE.md
├── ERROR_CODES.md
└── OUTPUT_FORMATS.md
FileAgentSkillsProvider, bu dosya yapısını tarar ve içerisindeki SKILL.md dosyalarını bulur. Ardından bir skill manifest oluşturup, agent’a advertise eder ve böylece agent artık bu yeteneklerden haberdar olmuş olur.
var skillsProvider = new FileAgentSkillsProvider(skillPath: Path.Combine(AppContext.BaseDirectory, "skills"));

Normal şartlarda FileAgentSkillsProvider, skill’leri LLM’e otomatik bir system prompt ile tanıtmaktadır. Bizler istendiği taktirde bu skill’lerin agent’a nasıl tanıtılacağını belirleyen system propt şablonuna da müdahale edebilir ve nasıl kullanılacaklarına dair bir yönlendirmede bulunabiliriz.

var skillsProvider = new FileAgentSkillsProvider(
    skillPath: Path.Combine(AppContext.BaseDirectory, "skills"),
    options: new FileAgentSkillsProviderOptions
    {
        SkillsInstructionPrompt = """
            Aşağıdaki yeteneklere sahip bir yapay zekâ ajanısın:

            {{skills}}

            Bu yetenekleri yalnızca kullanıcının isteği onlarla örtüştüğünde kullan.
            Bir yeteneği kullanmadan önce her zaman ilgili kaynak dokümantasyonunu takip et.
        """
    });

Dikkat ederseniz Agent Skills, esasında tamamen prompt tabanlı çalışan bir özelliktir.

Bir LLM’in Agent Skill özelliğini kullanabilmesi için tool özelliğini destekliyor olması gerekmektedir!

Örnek Uygulama

Evet, şimdi sıra bu özelliği deneyimlemeye geldi diyebiliriz. Burada OpenRouter platformu üzerinden Google: Gemini 2.5 Flash Lite Preview 09-2025 modelini kullanarak JSONPlaceholder‘a özel geliştireceğimiz skill’leri sürece dahil eden bir AI Agent çalışması gerçekleştiriyor olacağız. Bu skill’ler ile AI Agent’a, JSONPlaceholder’ın bizlere sağladığı verilere has sorular yöneltebilecek ve agent’ın yeteneklerini böylece zenginleştirmiş olacağız. Bunun için aşağıdaki adımları sırasıyla takip etmeniz yeterli olacaktır:

Örnek çalışmamız işte bu kadar 😉

Nihai olarak;
Microsoft Agent Framework’ün Agent Skills özelliği sayesinde AI Agent’larımızı çekirdek yapılarına dokunmadan, modüler ve taşınabilir yetenek paketleriyle zenginleştirme imkanına kavuşuyor, Progressive Disclosure Pattern ile de token maliyetlerini optimize ederken, SKILL.md tabanlı açık spesifikasyon sayesinde de hem geliştirici hem de güvenlik odaklı genişletilebilir bir zeminde çalışma imkanı edinmiş oluyoruz.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Örnek çalışmaya aşağıdaki GitHub reposundan erişebilirsiniz.
https://github.com/gncyyldz/Microsoft.Agent.Framework.Agent.Skills.Example
Bu repository, ilgili konuya dair örnek çalışmanın kaynak kodlarını ve mimari yapısını içermektedir. Detaylar için GitHub üzerinden incelemede bulunabilirsiniz.


GitHub’da Görüntüle →

Mobil sürümden çık