1. Giriş
Google Antigravity, bu ajan döneminde geliştirme yapmanıza yardımcı olmak için tasarlanmış bir ajan tabanlı geliştirme platformudur. Antigravity, yapay zeka ajanlarınızın merkezi komuta merkezi olarak görev yapar ve etkinliklerini başlatmak, izlemek ve düzenlemek için birleşik bir platform sağlar.
Bu codelab'de öncelikle yapay zeka ajanı özelliklerini uzmanlık bilgisi ve iş akışlarıyla genişletmek için kullanılan hafif ve açık bir biçim olan Ajan Becerileri hakkında bilgi edineceğiz. Ajan becerilerinin ne olduğunu, avantajlarını ve nasıl oluşturulduklarını öğreneceksiniz. Ardından, Antigravity'de kullanılabilen Git biçimlendirici, şablon oluşturucu ve araç kodu iskelesi gibi çeşitli Agent Skills oluşturacaksınız.
Ön koşullar:
- Antigravity yüklü ve yapılandırılmış olmalıdır.
- Google Antigravity hakkında temel bilgi sahibi olmanız gerekir. Google Antigravity'ye Giriş adlı codelab'i tamamlamanız önerilir.
2. Neden Beceriler?
Modern yapay zeka aracıları, basit dinleyicilerden yerel dosya sistemleri ve harici araçlarla (MCP sunucuları aracılığıyla) entegre olan karmaşık akıl yürütücülere dönüştü. Ancak bir ajana tüm kod tabanlarını ve yüzlerce aracı ayrım gözetmeksizin yüklemek bağlam doygunluğuna ve "araç şişmesine" yol açar. Bağlam penceresi büyük olsa bile kullanılmayan araçların 40-50 bin jetonunu etkin belleğe boşaltmak yüksek gecikmeye, mali israfa ve "bağlam çürümesine" neden olur. Bu durumda model, alakasız veriler nedeniyle kafası karışır.
Çözüm: Ajan Becerileri
Anthropic, bu sorunu çözmek için mimariyi tek parçalı bağlam yüklemeden Aşamalı Açıklama'ya kaydırarak Agent Skills'i kullanıma sundu. Modeli bir oturumun başında her iş akışını (ör. veritabanı taşıma veya güvenlik denetimleri) "ezberlemeye" zorlamak yerine bu özellikler modüler ve keşfedilebilir birimler halinde paketlenir.
Nasıl Çalışır?
Model, başlangıçta yalnızca hafif bir meta veri "menüsüne" sunulur. Ağır prosedür bilgisi (talimatlar ve komut dosyaları) yalnızca kullanıcının amacı belirli bir beceriyle eşleştiğinde yüklenir. Bu sayede, kimlik doğrulama ara yazılımını yeniden düzenlemeyi isteyen bir geliştirici, alakasız CSS işlem hatlarını yüklemeden güvenlik bağlamını alır. Böylece bağlam yalın, hızlı ve uygun maliyetli kalır.

3. Ajan becerileri ve Antigravity
Antigravity ekosisteminde Beceriler, genel modeller ile özel bağlamınız arasındaki boşluğu dolduran uzmanlaşmış eğitim modülleri olarak işlev görür. Bu araçlar, temsilcinin yalnızca ilgili bir görev istendiğinde tanımlanmış bir dizi talimat ve protokolü (ör. veritabanı taşıma standartları veya güvenlik kontrolleri) "kullanmasına" olanak tanır. Bu yürütme protokollerini dinamik olarak yükleyen beceriler, yapay zekayı genel bir programcıdan kuruluşun kodlanmış en iyi uygulamalarına ve güvenlik standartlarına titizlikle uyan bir uzmana dönüştürür.
Antigravity'de beceri nedir?
Google Antigravity bağlamında Beceri, bir tanım dosyası (SKILL.md) ve isteğe bağlı destekleyici öğeler (komut dosyaları, referanslar, şablonlar) içeren dizine dayalı bir pakettir.
Bu, isteğe bağlı özellik genişletme mekanizmasıdır.
- İsteğe bağlı: Her zaman yüklenen bir sistem isteminin aksine, beceri yalnızca aracı kullanıcının mevcut isteğiyle alakalı olduğunu belirlediğinde aracının bağlamına yüklenir. Bu sayede bağlam penceresi optimize edilir ve aracının alakasız talimatlarla dikkatinin dağılması önlenir. Düzinelerce aracın kullanıldığı büyük projelerde, bu seçici yükleme performans ve akıl yürütme doğruluğu açısından çok önemlidir.
- İşlev genişletme: Beceriler yalnızca talimat vermekle kalmaz, aynı zamanda talimatları uygulayabilir. Python veya Bash komut dosyalarını paketleyerek beceriler, kullanıcının komutları manuel olarak çalıştırmasına gerek kalmadan yerel makinede veya harici ağlarda karmaşık ve çok adımlı işlemler gerçekleştirmesi için aracıya olanak tanır. Bu, ajanı metin üreten modelden araç kullanıcısına dönüştürür.
Beceri ve Ekosistem (Araçlar, Kurallar ve İş Akışları)
Model Context Protocol (MCP), GitHub veya PostgreSQL gibi harici sistemlere ağır hizmet tipi ve kalıcı bağlantılar sağlayan, ajanın "elleri" olarak işlev görürken beceriler, onları yönlendiren "beyinler" olarak işlev görür.
MCP, durum bilgisi olan altyapıyı yönetirken beceriler, bu araçları kullanma metodolojisini içeren hafif ve kısa ömürlü görev tanımlarıdır. Bu sunucusuz yaklaşım, aracıların kalıcı işlemler çalıştırmanın operasyonel yükü olmadan geçici görevleri (ör. değişiklik günlükleri oluşturma veya taşıma) yürütmesine olanak tanır. Bağlam yalnızca görev etkin olduğunda yüklenir ve hemen sonra serbest bırakılır.
Beceriler aracı tarafından tetiklenir: Model, kullanıcının amacını otomatik olarak algılar ve gereken uzmanlığı dinamik olarak sağlar. Bu mimari, güçlü birleştirilebilirlik sağlar. Örneğin, genel bir kural, veritabanı değişiklikleri sırasında "Güvenli Taşıma" becerisinin kullanılmasını zorunlu kılabilir veya tek bir iş akışı, sağlam bir dağıtım ardışık düzeni oluşturmak için birden fazla beceriyi düzenleyebilir.
4. Beceri oluşturma
Antigravity'de beceri oluşturmak için belirli bir dizin yapısı ve dosya biçimi kullanılır. Bu standardizasyon, becerilerin taşınabilir olmasını ve aracının bunları güvenilir bir şekilde ayrıştırıp yürütebilmesini sağlar. Tasarım, Markdown ve YAML gibi yaygın olarak anlaşılan biçimlere dayandığı için kasıtlı olarak basittir. Bu sayede, IDE'lerinin özelliklerini genişletmek isteyen geliştiricilerin giriş engeli azaltılır.
Dizin Yapısı
Tipik bir beceri dizini şu şekilde görünür:
my-skill/
├── SKILL.md # The definition file
├── scripts/ # [Optional] Python, Bash, or Node scripts
├── run.py
└── util.sh
├── references/ # [Optional] Documentation or templates
└── api-docs.md
└── assets/ # [Optional] Static assets (images, logos)
Bu yapı, endişeleri etkili bir şekilde ayırır. Mantık (scripts), talimattan (SKILL.md) ve bilgiden (references) ayrılır. Bu, standart yazılım mühendisliği uygulamalarını yansıtır.
SKILL.md tanım dosyası
SKILL.md dosyası, becerinin beynidir. Ajana becerinin ne olduğunu, ne zaman kullanılacağını ve nasıl uygulanacağını söyler.
İki bölümden oluşur:
- YAML Ön Metni
- Markdown Body.
YAML Frontmatter
Bu, meta veri katmanıdır. Bu, becerinin temsilcinin üst düzey yönlendiricisi tarafından dizine eklenen tek kısmıdır. Bir kullanıcı istem gönderdiğinde, temsilci istemi mevcut tüm becerilerin açıklama alanlarıyla anlamsal olarak eşleştirir.
---
name: database-inspector
description: Use this skill when the user asks to query the database, check table schemas, or inspect user data in the local PostgreSQL instance.
---
Anahtar alanlar:
- ad: Bu alan zorunlu değildir. Kapsam içinde benzersiz olmalıdır. Küçük harfler ve kısa çizgiler kullanılabilir (ör.
postgres-query,pr-reviewer). Belirtilmezse varsayılan olarak dizin adı kullanılır. - description: Bu alan zorunludur ve en önemli alandır. "Tetikleyici ifade" olarak işlev görür. Büyük dil modelinin anlamsal alaka düzeyini tanıması için yeterince açıklayıcı olmalıdır. "Veritabanı araçları" gibi belirsiz bir açıklama yeterli değildir. "Kullanıcı veya işlem verilerini almak için yerel PostgreSQL veritabanında salt okunur SQL sorguları yürütür. "Use this for debugging data states" (Veri durumlarında hata ayıklamak için bunu kullan) ifadesi, becerinin doğru şekilde alınmasını sağlar.
Markdown Gövdesi
Metin bölümünde talimatlar yer alır. Bu, dosyaya kaydedilmiş "istem mühendisliği"dir. Beceri etkinleştirildiğinde bu içerik, aracının bağlam penceresine yerleştirilir.
E-postanın gövde bölümünde şunlar yer almalıdır:
- Hedef: Beceriyle neyin başarıldığını net bir şekilde ifade edin.
- Talimatlar: Adım adım mantık.
- Örnekler: Modelin performansını yönlendirmek için giriş ve çıkışlarla ilgili az örnekli istemler.
- Kısıtlamalar: "Yapılmaması gereken" kurallar (ör. "DELETE sorguları çalıştırmayın").
Örnek SKILL.md Gövdesi:
Database Inspector
Goal
To safely query the local database and provide insights on the current data state.
Instructions
- Analyze the user's natural language request to understand the data need.
- Formulate a valid SQL query.
- CRITICAL: Only SELECT statements are allowed.
- Use the script scripts/query_runner.py to execute the SQL.
- Command: python scripts/query_runner.py "SELECT * FROM..."
- Present the results in a Markdown table.
Constraints
- Never output raw user passwords or API keys.
- If the query returns > 50 rows, summarize the data instead of listing it all.
Komut Dosyası Entegrasyonu
Becerilerin en güçlü özelliklerinden biri, yürütme işlemini komut dosyalarına devretme yeteneğidir. Bu sayede aracı, LLM'nin doğrudan yapmasının zor veya imkansız olduğu işlemleri (ör. ikili yürütme, karmaşık matematiksel hesaplama veya eski sistemlerle etkileşim) gerçekleştirebilir.
Komut dosyaları scripts/ alt dizinine yerleştirilir. SKILL.md, göreli yola göre bunlara referans verir.
5. Yazma Becerileri
Bu bölümün amacı, Antigravity ile entegre olan beceriler oluşturmak ve kaynaklar/komut dosyaları gibi çeşitli özellikleri kademeli olarak göstermektir.
Becerileri GitHub deposundan indirebilirsiniz: https://github.com/rominirani/antigravity-skills.
Bu becerilerin her birinin nasıl oluşturulduğunu anlamadan önce, bunları nasıl yapılandırdığımızı ve Antigravity ürün paketinde nasıl kullanılabilir hale getirdiğimizi görelim. Aşağıdaki klasörler, bu laboratuvarın yayınlandığı sırada geçerlidir.
Antigravity veya Antigravity CLI'ı kullanma
Beceriler iki kapsamda tanımlanabilir. Bu sayede hem projeye özel hem de kullanıcıya özel (yani genel) beceriler tanımlanabilir:
- Global Kapsam (
~/.gemini/config/skills/): Tüm Antigravity ürünlerinde (Antigravity, Antigravity IDE, Antigravity CLI) ve projelerinde kullanılabilir. Bu beceriler, kullanıcının makinesindeki tüm projelerde kullanılabilir. "JSON biçimlendir", "UUID oluştur", "Kod stilini incele" gibi genel yardımcı programlar veya kişisel üretkenlik araçlarıyla entegrasyon için uygundur. - Proje/Çalışma Alanı Kapsamı (
<project-root>/.agents/skills/): Bu seçenek, becerinin yalnızca belirli bir proje içinde kullanılabilmesini sağlar. Bu, belirli bir ortama dağıtım, söz konusu uygulama için veritabanı yönetimi veya tescilli bir çerçeve için standart kod oluşturma gibi projeye özgü komut dosyaları için idealdir.
Antigravity veya Antigravity CLI'da becerileri yükleme
Bu eğitim için yapmamız gereken tek şey aşağıdaki adımları uygulamaktır (kendi yönteminizi de kullanabilirsiniz):
1. adım: git clone https://github.com/rominirani/antigravity-skills adresini kopyalayın.
2. adım: Antigravity veya Antigravity CLI kullanıp kullanmadığınıza bağlı olarak antigravity-skills/skills_tutorial klasörüne gidebilirsiniz.
3. adım: İlgili klasörlerde bir dizi beceri bulacaksınız. Aşağıdaki 4 klasörü kopyalayın:
git-commit-formatterlicense-header-adderdatabase-schema-validatorjson-to-pydantic
ürün için hedeflenen beceriler klasörüne (proje kapsamı veya küresel kapsam).
4. adım: Antigravity veya Antigravity CLI kullanıyorsanız bunu <project-root>/.agents/skills/ (proje kapsamı) içine kopyalayın.
Antigravity'yi başlattıysanız "Hangi beceriler kullanılabilir?" gibi basit bir soru sorabilirsiniz. Bu soruya aynı şekilde yanıt verilir. Burada listelenen 4 beceriyi görebilirsiniz. Ortamınıza yüklediyseniz başka becerileriniz de olabilir.

Benzer şekilde, Antigravity CLI kullanıyorsanız /skills komutunu verebilirsiniz. Bu komut, 4 beceriyi listeler. Aşağıda bir örnek gösterilmektedir:

Becerilerin nasıl ayarlanacağını öğrendiğimize göre şimdi her bir beceriye göz atıp nasıl oluşturulduklarını anlayalım. Bu şablonları kullanarak kendi becerilerinizi de oluşturabilirsiniz.
1. Seviye : Temel Yönlendirici ( git-commit-formatter)
Bunu, becerilerin "Hello World"ü olarak düşünebiliriz.
Geliştiriciler genellikle "wip", "fix bug", "updates" gibi kısa ve öz olmayan commit mesajları yazar. "Conventional Commits"i manuel olarak uygulamak sıkıcıdır ve genellikle unutulur. Conventional Commits spesifikasyonunu zorunlu kılan bir beceri uygulayalım. Ajanı kurallar konusunda yönlendirerek, kuralları uygulayan kişi olarak hareket etmesine izin veririz.
git-commit-formatter/
└── SKILL.md (Instructions only)
SKILL.md dosyası aşağıda gösterilmektedir:
---
name: git-commit-formatter
description: Formats git commit messages according to Conventional Commits specification. Use this when the user asks to commit changes or write a commit message.
---
Git Commit Formatter Skill
When writing a git commit message, you MUST follow the Conventional Commits specification.
Format
`<type>[optional scope]: <description>`
Allowed Types
- **feat**: A new feature
- **fix**: A bug fix
- **docs**: Documentation only changes
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc)
- **refactor**: A code change that neither fixes a bug nor adds a feature
- **perf**: A code change that improves performance
- **test**: Adding missing tests or correcting existing tests
- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation
Instructions
1. Analyze the changes to determine the primary `type`.
2. Identify the `scope` if applicable (e.g., specific component or file).
3. Write a concise `description` in an imperative mood (e.g., "add feature" not "added feature").
4. If there are breaking changes, add a footer starting with `BREAKING CHANGE:`.
Example
`feat(auth): implement login with google`
Bu örneği Antigravity'de çalıştırma
Aşağıdaki adımlarda, yerel makinenizde Git'in kullanılabilir ve doğru şekilde ayarlanmış olduğu varsayılır.
Antigravity veya Antigravity CLI'yi başlattığınızı varsayarak aşağıdaki adımları uygulayın:
1. adım: Test Git deposu oluşturun
Temsilciden Git işlemlerini test etmek için temiz ve izole edilmiş bir dizin oluşturmasını isteyin.
İsteminiz:
Create a folder named git_test in the workspace, initialize a git repository inside it, and create an initial file auth.py with def login(): pass. Stage this file and make an initial commit.
Aracı, dizini oluşturur, depoyu başlatır, dosyayı hazırlar ve "initial commit" gibi bir mesajla gönderir.
2. adım: Kod değişikliği yapın
Aracıya, kodu değiştirerek değişiklik yapmasını söyleyin.
İsteminiz:
In the git_test folder, modify auth.py to add Google Login functionality.
Aracı, dosyayı düzenleyerek yeni bir özellik ekler ve dosyayı commit aşamasına hazırlar.
3. adım: Değişiklikleri hazırlayın ve işleyin
Ajanın değişiklikleri hazırlamasını ve commit oluşturmasını isteyerek git-commit-formatter becerisini tetikleyin.
İsteminiz:
Stage the changes in the git_test folder and commit them. Make sure to format the commit message using the Conventional Commits skill.
Temsilci git add auth.py komutunu çalıştırır, auth modülüne yeni bir özellik eklendiğini belirlemek için farkı analiz eder ve git commit komutunu çalıştırmadan önce feat(auth): implement google login gibi geleneksel bir commit mesajı oluşturur.
4. adım: Git günlüğünü doğrulayın
Biçimlendirilmiş commit'in başarıyla kaydedildiğini onaylayabilmek için temsilciden Git geçmişini almasını isteyin.
İsteminiz:
Show me the git log in the git_test folder.
Aracı git log -n 5 komutunu çalıştırır ve biçimlendirilmiş commit mesajını gösteren çıkışı döndürür.
2. seviye: Öğe kullanımı (license-header-adder)
Bu, "Referans" desenidir.
Bir kurumsal projedeki her kaynak dosya, 20 satırlık belirli bir Apache 2.0 lisans başlığına ihtiyaç duyabilir. Bu statik metni doğrudan isteme (veya SKILL.md) girmek gereksizdir. Beceri her indekslendiğinde jeton tüketir ve model, yasal metinlerde yazım hataları "uydurabilir". Statik metni resources/ klasöründeki düz metin dosyasına yük aktarmak iyi bir uygulamadır. Beceri, ajana bu dosyayı yalnızca gerektiğinde okumasını söyler.
Dosyaları, skills dizinindeki license-header-adder klasöründe bulabilirsiniz.
license-header-adder/
├── SKILL.md
└── resources/
└── HEADER_TEMPLATE.txt (The heavy text)
SKILL.md dosyası aşağıda gösterilmektedir:
---
name: license-header-adder
description: Adds the standard open-source license header to new source files. Use involves creating new code files that require copyright attribution.
---
# License Header Adder Skill
This skill ensures that all new source files have the correct copyright header.
## Instructions
1. **Read the Template**:
First, read the content of the header template file located at `resources/HEADER_TEMPLATE.txt`.
2. **Prepend to File**:
When creating a new file (e.g., `.py`, `.java`, `.js`, `.ts`, `.go`), prepend the `target_file` content with the template content.
3. **Modify Comment Syntax**:
- For C-style languages (Java, JS, TS, C++), keep the `/* ... */` block as is.
- For Python, Shell, or YAML, convert the block to use `#` comments.
- For HTML/XML, use `<!-- ... -->`.
Bu örneği Antigravity'de çalıştırma
Antigravity veya Antigravity CLI'yi başlattığınızı varsayarak aşağıdaki adımları uygulayın:
1. adım: Örnek kod içeren Python dosyası oluşturun
İsteminiz:
Create a new file my_script.py with the following python code:
def hello():
print("Hello, World!")
Ne Oldu (Açıklama): Aracı, etkin çalışma alanı dizininizde doğrudan my_script.py adlı yeni bir dosya oluşturmak için dosya yazma aracını (write_to_file) çağırdı ve temel Python işlevini bu dosyaya yazdı. Ayrıca istem, license-header-adder becerisini tetikledi. Aracı, lisans şablonu dosyasını (HEADER_TEMPLATE.txt) bulup okudu, yorum stilini C stili blok yorumlardan (/* ... */) Python stili yorumlara (#) değiştirdi ve replace_file_content aracını kullanarak dosyanın en üstüne ekledi.
2. adım: Dosya içeriklerini doğrulayın
my_script.py dosyasına göz atın. En üstte lisans başlığı bulunur.
3. Seviye: Örneklerden Öğrenme (json-to-pydantic)
"Few-Shot" (Birkaç Görevli) deseni.
Gevşek verileri (ör. JSON API yanıtı) katı koda (ör. Pydantic modelleri) dönüştürmek için düzinelerce karar vermek gerekir. Sınıfları nasıl adlandırmalıyız? Optional kullanmalı mıyız? snake_case veya camelCase? Bu 50 kuralı İngilizce olarak yazmak sıkıcı ve hataya açık bir iştir.
LLM'ler, kalıp eşleştirme motorlarıdır.
Beceri geliştirme sürecinde altın örnek (Input -> Output) kullanmak genellikle ayrıntılı talimatlar vermekten daha etkilidir.
Aşağıda gösterildiği gibi, beceri dosyalarını içeren json-to-pydantic/ klasörüne gidin:
json-to-pydantic/
├── SKILL.md
└── examples/
├── input_data.json (The Before State)
└── output_model.py (The After State)
SKILL.md dosyası aşağıda gösterilmektedir:
---
name: json-to-pydantic
description: Converts JSON data snippets into Python Pydantic data models.
---
# JSON to Pydantic Skill
This skill helps convert raw JSON data or API responses into structured, strongly-typed Python classes using Pydantic.
Instructions
1. **Analyze the Input**: Look at the JSON object provided by the user.
2. **Infer Types**:
- `string` -> `str`
- `number` -> `int` or `float`
- `boolean` -> `bool`
- `array` -> `List[Type]`
- `null` -> `Optional[Type]`
- Nested Objects -> Create a separate sub-class.
3. **Follow the Example**:
Review `examples/` to see how to structure the output code. notice how nested dictionaries like `preferences` are extracted into their own class.
- Input: `examples/input_data.json`
- Output: `examples/output_model.py`
Style Guidelines
- Use `PascalCase` for class names.
- Use type hints (`List`, `Optional`) from `typing` module.
- If a field can be missing or null, default it to `None`.
/examples klasöründe JSON dosyası ve çıkış dosyası (ör. Python dosyası) bulunur. İkisini de aşağıda görebilirsiniz:
input_data.json
{
"user_id": 12345,
"username": "jdoe_88",
"is_active": true,
"preferences": {
"theme": "dark",
"notifications": [
"email",
"push"
]
},
"last_login": "2024-03-15T10:30:00Z",
"meta_tags": null
}
output_model.py
from pydantic import BaseModel, Field
from typing import List, Optional
class Preferences(BaseModel):
theme: str
notifications: List[str]
class User(BaseModel):
user_id: int
username: str
is_active: bool
preferences: Preferences
last_login: Optional[str] = None
meta_tags: Optional[List[str]] = None
Bu örneği Antigravity'de çalıştırma
Antigravity veya Antigravity CLI'yi başlattığınızı varsayarak aşağıdaki adımları uygulayın:
1. adım: Örnek verilerle JSON dosyasını oluşturun
Aracıdan, ham JSON yükünü içeren yeni bir dosya product.json oluşturmasını isteyin.
İsteminiz:
Create a new file product.json with the following JSON:
{
"product": "Widget",
"cost": 10.99,
"stock": null
}
2. adım: JSON'u Pydantic modeline dönüştürün
JSON verilerini yapılandırılmış bir Pydantic sınıfına dönüştürmek için json-to-pydantic becerisini tetikleyin.
İsteminiz:
Convert the JSON in product.json to a Pydantic model and save it to product_model.py.
3. adım: Çıktıyı doğrulayın
product_model.py dosyasına göz atın. Tamamlanmış Pydantic modelini içerir.
4. Düzey: Prosedürel Mantık (database-schema-validator)
Bu, "Araç Kullanımı" Kalıbı'dır.
Bir LLM'ye "Bu şema güvenli mi?" diye sorarsanız SQL doğru göründüğü için kritik bir birincil anahtar eksik olsa bile her şeyin yolunda olduğunu söyleyebilir.
Bu kontrolü belirgin bir komut dosyasına devredelim. database-schema-validator becerimiz, temsilciyi yazdığımız bir Python komut dosyasını çalıştırmaya yönlendirir. Senaryo, ikili (Doğru/Yanlış) doğruluk sağlar.
database-schema-validator/
├── SKILL.md
└── scripts/
└── validate_schema.py (The Validator)
SKILL.md dosyası aşağıda gösterilmektedir:
---
name: database-schema-validator
description: Validates SQL schema files for compliance with internal safety and naming policies.
---
# Database Schema Validator Skill
This skill ensures that all SQL files provided by the user comply with our strict database standards.
Policies Enforced
1. **Safety**: No `DROP TABLE` statements.
2. **Naming**: All tables must use `snake_case`.
3. **Structure**: Every table must have an `id` column as PRIMARY KEY.
Instructions
1. **Do not read the file manually** to check for errors. The rules are complex and easily missed by eye.
2. **Run the Validation Script**:
Use the `run_command` tool to execute the python script provided in the `scripts/` folder against the user's file.
`python scripts/validate_schema.py <path_to_user_file>`
3. **Interpret Output**:
- If the script returns **exit code 0**: Tell the user the schema looks good.
- If the script returns **exit code 1**: Report the specific error messages printed by the script to the user and suggest fixes.
validate_schema.py dosyası aşağıda gösterilmektedir:
import sys
import re
def validate_schema(filename):
"""
Validates a SQL schema file against internal policy:
1. Table names must be snake_case.
2. Every table must have a primary key named 'id'.
3. No 'DROP TABLE' statements allowed (safety).
"""
try:
with open(filename, 'r') as f:
content = f.read()
lines = content.split('\n')
errors = []
# Check 1: No DROP TABLE
if re.search(r'DROP TABLE', content, re.IGNORECASE):
errors.append("ERROR: 'DROP TABLE' statements are forbidden.")
# Check 2 & 3: CREATE TABLE checks
table_defs = re.finditer(r'CREATE TABLE\s+(?P<name>\w+)\s*\((?P<body>.*?)\);', content, re.DOTALL | re.IGNORECASE)
for match in table_defs:
table_name = match.group('name')
body = match.group('body')
# Snake case check
if not re.match(r'^[a-z][a-z0-9_]*$', table_name):
errors.append(f"ERROR: Table '{table_name}' must be snake_case.")
# Primary key check
if not re.search(r'\bid\b.*PRIMARY KEY', body, re.IGNORECASE):
errors.append(f"ERROR: Table '{table_name}' is missing a primary key named 'id'.")
if errors:
for err in errors:
print(err)
sys.exit(1)
else:
print("Schema validation passed.")
sys.exit(0)
except FileNotFoundError:
print(f"Error: File '{filename}' not found.")
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python validate_schema.py <schema_file>")
sys.exit(1)
validate_schema(sys.argv[1])
Bu örneği Antigravity'de çalıştırma
Antigravity veya Antigravity CLI'yi başlattığınızı varsayarak aşağıdaki adımları uygulayın:
1. adım: Örnek verilerle JSON dosyasını oluşturun
Temsilciden birden fazla politika ihlali içeren yeni bir dosya bad_schema.sql oluşturmasını isteyin.
İsteminiz:
Create a new file bad_schema.sql with the following SQL:
DROP TABLE IF EXISTS legacy_users;
CREATE TABLE userProfile (
id INT PRIMARY KEY,
bio TEXT
);
CREATE TABLE posts (
title TEXT,
content TEXT,
created_at TIMESTAMP
);
CREATE TABLE comments (
id INT PRIMARY KEY,
post_id INT,
body TEXT
);
Yukarıdaki şema dosyası üç politikayı da ihlal ediyor: Yasaklanmış bir DROP TABLE ifadesi kullanıyor, userProfile tablo adı için camelCase kullanıyor ve posts tablosunda id birincil anahtarını unutuyor.
2. adım: SQL şemasını doğrulayın
Dosyanızda Python doğrulama komut dosyasını çalıştırmak için database-schema-validator becerisini tetikleyin.
İsteminiz:
Validate bad_schema.sql using the database-schema-validator skill.
3. adım: Çıktıyı doğrulayın
Aracı, hatayı bildirir ve komut dosyası tarafından bulunan hataları doğrudan sohbette gösterir. Örnek çıkış aşağıda gösterilmiştir:
Suggested Fixes:
Remove the line DROP TABLE IF EXISTS legacy_users; as dropping tables is forbidden by safety policy.
Rename the table userProfile to use snake_case (e.g., user_profile).
Add a primary key column named id to the posts table definition.
6. Geliştirici Araç Seti (Agents CLI Becerileri)
"İşlem ve Yaşam Döngüsü" deseni.
Yapay zeka aracı geliştirme, tekrarlanan yaşam döngüsü görevlerini içerir: standart dosyaları oluşturma, yerel çalışma zamanı ortamlarını yapılandırma, test istemlerini çalıştırma ve etkileşimli oyun alanlarını başlatma.
Kodlama asistanınızı dizin yapılarını tahmin etmeye veya standart ajan yapılandırmasını sıfırdan yazmaya zorlamak yerine, Agents CLI Skills bu yaşam döngüsü uzmanlığını belirli ajan becerileri halinde paketler.
Agent CLI (Command Line Interface) becerileri, geliştirici odaklı ve kolaylaştırılmış otomasyonu doğrudan terminalinize getirerek ham kod ile bağımsız yürütme arasındaki boşluğu kapatır. Agent Development Kit (ADK), programatik çerçeveye odaklanarak yapay zeka aracı oluşturmak ve düzenlemek için SDK'ları, API'leri ve yapısal planları sunarken Agent CLI becerileri operasyonel gücü sağlar. Bu araç, geliştiricilerin aracıları yerel olarak iskele etmesine, test etmesine ve dağıtmasına olanak tanır. Böylece, ağır kullanıcı arayüzü yükü tamamen atlanarak hızlı geri bildirim döngüleri sağlanır.
İsteğe bağlı olarak, Google Cloud ile eşlendiğinde Agent KSA becerileri, kurumsal sınıf altyapıya doğrudan bir ardışık düzen görevi görür. Konsollarda tıklama işlemi yapmak yerine, aracı iş akışlarını anında paketlemek, erişim izinlerini yönetmek ve bunları Google Cloud ekosistemlerine (ör. Vertex AI veya Cloud Run) dağıtmak için KSA komutlarını kullanabilirsiniz. Bu sayede, eskiden karmaşık olan bulut mimarisi görevleri basit ve tekrarlanabilir terminal komutlarına dönüştürülerek bağımsız aracıların mevcut CI/CD dağıtım ardışık düzenlerine entegre edilmesi çok daha kolay hale gelir.
Nasıl yüklenir?
Python 3.11+, Node.js ve uv paket yöneticisinin yüklü olduğundan emin olun. Ardından, terminalinizde kurulum komutunu çalıştırın:
uvx google-agents-cli setup
Bu komut, agents-cli ikili programını yükler ve kodlama asistanınızın ortamında iskele oluşturma ve değerlendirme için özel becerilerini kaydeder.
Not: Beceriler, Antigravity'nin görebileceği ~/.agents/skills klasörüne yüklenir. Bu becerileri Antigravity CLI'de görmek istiyorsanız ~/.gemini/antigravity-cli/skills klasörüne (global kapsam) taşımanız gerekir.
Hangi becerilerin kullanılabildiğini sorarak becerilerin Antigravity'ye yüklenip yüklenmediğini kontrol edebilirsiniz. Yeni yüklediğimiz Agent CLI Skills için örnek bir yanıt aşağıda gösterilmektedir.

Adım Adım Açıklamalı Kılavuz
uvx google-agents-cli setup tamamlandıktan sonra tamamen yerel makinenizde bir yapay zeka aracısı oluşturabilir, bu aracının etkileşim kurabilir ve test edebilirsiniz.
1. adım: Yeni bir aracı projesi oluşturun ve başlatın
Standartlaştırılmış bir düzen oluşturmak için oluşturma komutunu çalıştırın. Oluşturulduktan sonra, yürütme görevlerini çalıştırmadan önce proje bağımlılıklarını yüklemeniz gerekir.
# 1. Create a lightweight prototype project structure
agents-cli create weather-assistant --prototype --yes
# 2. Move into the directory and install required ADK dependencies
cd weather-assistant
agents-cli install
Arka planda olanlar: Bu işlem, app/agent.py (çekirdek kodunuz), pyproject.toml (paket meta verileri) ve agents-cli-manifest.yaml (proje izleyici) içeren temiz bir çalışma alanı oluşturur.
2. adım: Yerel test sorgusu çalıştırın
Ajanınıza karşı hızlı ve doğrudan bir komut satırı testi yürütün. Google Cloud'un Uygulama Varsayılan Kimlik Bilgileri'ni (ADC) kullanmıyorsanız terminalinizde GEMINI_API_KEY dosyasının dışa aktarıldığından emin olun. Gemini API anahtarını buradan alabilirsiniz. Anahtarı aldıktan sonra aşağıdaki komutu kullanarak terminalinizde dışa aktarın:
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
Terminalinizde aşağıdaki komutu verin:
agents-cli run "How are you?"
Arka planda neler olur? CLI, Agent Development Kit (ADK) yaşam döngüsünü tamamen terminalinizdeki bellekte başlatır. İstem, yerel kimlik bilgileriniz üzerinden güvenli bir şekilde yönlendirilir ve canlı yayın yanıtı doğrudan komut satırınıza kaydedilir.
3. adım: Etkileşimli Web Playground'u başlatın
Temsilcinizle görsel olarak etkileşim kurmak için yerel web tabanlı yerleşik oyun alanını başlatın.
agents-cli playground
Arka planda neler olur? CLI, genellikle http://localhost:8080 veya yedek http://127.0.0.1:8000 adresinden erişilebilen bir ADK web kullanıcı arayüzü sunucusunu başlatır. Bu sunucu, anında yeniden yükleme özelliğiyle birlikte gelir. Web arayüzünde, üstteki Bir uygulama seçin açılır listesinde app'i seçin ve web uygulamasının sağ tarafındaki sohbet arayüzünde temsilciyle etkileşim kurun.
7. npx skills kullanarak Ajan Becerileri yükleme
npx skills, Vercel Labs tarafından geliştirilen ve yapay zeka aracı paket yöneticisi (Antigravity, Claude Code, GitHub Copilot, Cursor ve Cline gibi) olarak işlev gören bir komut satırı aracıdır. Bu, açık aracı becerileri ekosisteminin CLI'sidir.
Agent Skills'i npx skills paketini kullanarak indirip yüklemek istiyorsanız Skills'in ~/.agents/skills klasörüne yerleştirildiğini unutmayın. Antigravity gibi araçların becerileri bu klasörden alacağı belirtilse de bu makalenin yazıldığı sırada Antigravity'nin bu klasörden becerileri aldığını ancak Antigravity CLI'nın almadığını lütfen unutmayın. Daha önce de belirtildiği gibi, ~/.agents/skills klasörüne yüklenen bu becerileri Antigravity CLI'daki beceri klasörleri için proje veya genel kapsama kopyalamanız gerekir. Örneğin:
- Proje Kapsamı:
<project-root>/.agent/skills/konumunda. - Küresel Kapsam: Konumu:
~/.gemini/antigravity-cli/skills/.
8. Tebrikler
Tebrikler! İlk Agent becerinizi oluşturmak, yapılandırmak ve özel yetenekler eklemek için Google Antigravity'yi başarıyla kullandınız.
Ayrıca, hem proje hem de genel kapsamda bir dizi aracı becerisi yapılandırmayı başardınız ve özelleştirilmiş araçları hayata geçirdiniz.
Artık Antigravity'nin kendi projelerinizdeki zorlu görevleri üstlenmesine ve kodları istediğiniz şekilde yazmasına izin vermeye hazırsınız.
Kaggle 5-Day AI Agents rozetinizi kazanın
Bu laboratuvarı Kaggle'ın 5-Day AI Agents: Intensive Vibe Coding Course with Google (5 Günde Yapay Zeka Ajanları: Google ile Yoğun Vibe Kodlama Kursu) kapsamında mı tamamladınız? Tamamlama rozetinizi talep edin: 5 Günlük Yapay Zeka Ajanları Rozeti'ni alın.
9. Referans belgeleri
- Codelab : Google Antigravity'yi Kullanmaya Başlama
- Resmi site : https://antigravity.google/
- Belgeler: https://antigravity.google/docs
- İndirme : https://antigravity.google/download
- Antigravity Becerileri dokümanları: https://antigravity.google/docs/skills