FmgLib.MauiMarkup

AI Skills

Yapay zekâ ajanlarına doğru FmgLib.MauiMarkup kodu yazmayı öğreten, kurulabilir on skill paketi.

On this page 9

Herhangi bir yapay zekâ ajanından "C# markup ile bir MAUI sayfası yaz" isteyin; kulağa doğru gelen ama derlenmeyen kod alırsınız: uydurulmuş metot adları, birebir taşınmış XAML alışkanlıkları, Build() içinde oluşturulan view model'ler, ContentTemplate(() => page) yerine ContentTemplate(page).

Sorun modelde değil: kütüphanenin kuralları basit ama tahmin edilebilir değil. Foo özelliği .Foo(...) olur. Bar olayı .OnBar(...) olur. Grid.Row önekini düşürür ama Shell.TitleColor düşürmez. Build() her hot reload'da yeniden çalışır, dolayısıyla durum (state) alanlarda yaşamalıdır. Bunların hiçbiri yalnızca tip sisteminden çıkarılamaz.

AI Skills, bu kuralları doğrudan anlatan on Markdown paketidir. Bir kez kurun; ajanınız tahmin etmeyi bıraksın.

C#
// skill'ler olmadan bir ajanın yazdığı
new Label().SetText("Merhaba").SetFontSize(30).HorizontalAlign("Center")   // hiçbiri yok

// skill'lerle yazdığı
new Label().Text("Merhaba").FontSize(30).CenterHorizontal()

Agent Skills biçimini kullanırlar — YAML başlıklı düz Markdown — bu yüzden Claude Code, Claude uygulamaları, Agent SDK ve SKILL.md okuyabilen her ajanla çalışırlar. Tamamı MIT lisanslıdır ve kütüphaneyle birlikte sürümlenir; böylece bir API değişikliği ile skill güncellemesi aynı commit'te gider.

Kurulum#

Otomatik#

Ajanınıza şunu söyleyin:

https://fmglibmauimarkup.vodisoft.com/llms.txt adresini getir ve FmgLib.MauiMarkup AI skill'lerini kur.

Bu sayfayı bulacak, aşağıdaki katalogdan okuyacak ve her skill'i yerine indirecektir.

Elle#

Her skill, içinde SKILL.md bulunan bir klasördür. İki yerden birine koyun:

Kapsam Konum
Kişisel — her projede geçerli ~/.claude/skills/<skill-adı>/SKILL.md
Proje — depoyla birlikte commit'lenir, ekiple paylaşılır <repo>/.claude/skills/<skill-adı>/SKILL.md

Çekirdek skill ayrıca bir references/ klasörü içerir; iç bağlantılarının çözülebilmesi için göreli yolları koruyun.

Bash
# çekirdek skill, doğrudan GitHub'dan
mkdir -p ~/.claude/skills/mauimarkup/references
BASE=https://raw.githubusercontent.com/VodiSoft/FmgLib.MauiMarkup/master/skills/mauimarkup
curl -fsSL $BASE/SKILL.md -o ~/.claude/skills/mauimarkup/SKILL.md
for f in cheatsheet bindings layout styling-theming pitfalls; do
  curl -fsSL $BASE/references/$f.md -o ~/.claude/skills/mauimarkup/references/$f.md
done

Diğer tüm skill'ler tek dosyadır:

Bash
NAME=mauimarkup-mvvm     # katalogdaki herhangi bir ad
mkdir -p ~/.claude/skills/$NAME
curl -fsSL https://raw.githubusercontent.com/VodiSoft/FmgLib.MauiMarkup/master/skills/$NAME/SKILL.md \
     -o ~/.claude/skills/$NAME/SKILL.md

Ekipler için önerilen yol klasörü <repo>/.claude/skills/ altına commit'lemektir: böylece her geliştirici ve her CI ajanı aynı talimatlarla çalışır.

On skill#

Tümünün kaynağı: skills/ · ham (raw) taban adresi https://raw.githubusercontent.com/VodiSoft/FmgLib.MauiMarkup/master/skills/<ad>/SKILL.md

Skill Öğrettiği
mauimarkup (zorunlu) Fluent model, sayfa iskeleti, dört özellik overload'ı, yerleşim, olaylar, Assign/InvokeOnElement, metot adı türetme, Build() disiplini. Beş dosyalık references/ paketi ile gelir: API özeti, binding'ler, yerleşim tabloları, stil ve tema, tuzaklar
mauimarkup-xaml-migration Sayfa bazlı taşıma prosedürü, 30 satırlık XAML→C# eşleme tablosu ve çeviri değil muhakeme gerektiren yapılar — x:Reference sırası, StaticResource, converter'lar, RelativeSource
mauimarkup-mvvm FmgLibContentPage<TViewModel>, tipli BindingContext, derlenmiş Getter/Setter binding'leri, komutlar, bağımlılık enjeksiyonu, CommunityToolkit.Mvvm
mauimarkup-shell Shell, FlyoutItem, Tab, TabBar, ContentTemplate lambda'ları, flyout şablonları, sayfa bazlı Shell attached property'leri, rotalar, pencereler, menü çubukları
mauimarkup-collections ItemsSource/ItemTemplate, şablon seçiciler, item layout'ları, EmptyView, sonsuz kaydırma, aşağı çekip yenileme, BindableLayout ve ne zaman kullanılmayacağı
mauimarkup-styling Style<T>, kaynak organizasyonu, AppThemeBinding ile koyu tema, visual state'ler, trigger'lar, gradyanlar, gölgeler, Animate…To
mauimarkup-localization JSON ve RESX kurulumu, Translate/TranslateFormat, canlı dil değişimi, fallback zincirleri, eksik anahtar politikaları, RTL
mauimarkup-thirdparty [MauiMarkup], [MauiMarkupAttachedProp], otomatik generator modu, taban sınıf üretimi, New son eki kuralı, bilinçli olarak atlanan üyeler
mauimarkup-hotreload IFmgLibHotReload, handler seçenekleri, dotnet watch ve IDE kanalları, reload'a dayanıklı Build(), tam sorun giderme matrisi
mauimarkup-review Hazır ripgrep sorgularıyla dokuz denetim geçişi, önem derecesi modeli ve raporlama biçimi

Onunu birden kurmak sorun değil — ajan, bir skill'in gövdesini yalnızca görev tanımına uyduğunda okur; kullanılmayan skill'lerin maliyeti yoktur.

Önerilen setler#

Durumunuz Kurun
Yeni uygulamaya başlıyorum mauimarkup + mauimarkup-shell + mauimarkup-mvvm + mauimarkup-hotreload
Mevcut XAML uygulamasını taşıyorum mauimarkup + mauimarkup-xaml-migration + mauimarkup-styling
Veri yoğun uygulama geliştiriyorum mauimarkup + mauimarkup-mvvm + mauimarkup-collections
Birden çok pazara çıkıyorum mauimarkup-localization ekleyin
Syncfusion / UraniumUI / SkiaSharp / ZXing kullanıyorum mauimarkup-thirdparty ekleyin
Devraldığım kod tabanını temizliyorum mauimarkup + mauimarkup-review

Pratikte ne değişiyor#

Skill'lerin kayıt altına aldığı düzeltmelerden birkaçı — her biri ajanların skill'siz olarak düzenli şekilde yaptığı hatalar:

Skill'siz Skill'li
.SetText(), .HorizontalAlign() uydurur Özellik adından .Text(), .CenterHorizontal() türetir
.xaml + .xaml.cs çifti üretir Tek .cs dosyası, InitializeComponent() yok
Build() içinde new MyViewModel() View model constructor alanında — durum hot reload'ı atlatır
.ContentTemplate(new HomePage()) .ContentTemplate(() => new HomePage())
.TextColor(isDark ? white : black) .TextColor(e => e.OnLight(black).OnDark(white)) — canlı tema binding'i
Her yerde e.Path("UserName") e.Getter(static (VM vm) => vm.UserName) — derleme zamanında denetlenir
5000 öğelik liste için BindableLayout CollectionView, çünkü yalnızca o sanallaştırma yapar
builder.UseFmgLibMauiMarkup() ekler Böyle bir kayıt çağrısı olmadığını bilir
Syncfusion kontrolü için elle extension yazar [MauiMarkup(typeof(SfButton))] yazıp işi generator'a bırakır

Kurulumu doğrulama#

Skill'lerin netleştirdiği bir şey isteyin:

MauiMarkup ile bir giriş sayfası yaz: e-posta alanı, parola alanı ve ikisi de doldurulana kadar pasif kalan bir gönder butonu.

Doğru yanıt; IFmgLibHotReload uygulayan, ağacı Build() içinde kuran, alanları .Assign(out var …) ile yakalayan ve hiç XAML içermeyen tek bir .cs dosyasıdır.

Güncel tutmak#

Skill'ler kütüphane deposunda yaşar; yani anlattıkları kodla birlikte gözden geçirilirler. Bir skill, kütüphanenin artık yapmadığı bir şeyi öğretiyorsa lütfen konu açın — eski bilgiyi kendinden emin şekilde tekrarlayan bir ajan, hiç skill'i olmayandan daha kötüdür.

İlgili Konular#