1. Giriş
Google Antigravity (belgenin geri kalanında Antigravity olarak anılacaktır), Google'ın temsilci tabanlı bir IDE'sidir. Antigravity'yi kullanmaya başlama codelab'inde Antigravity'nin temel bilgilerini öğrenebilirsiniz. Bu codelab'de, yapay zeka aracılarının özelliklerini uzmanlık bilgileri ve iş akışlarıyla genişletmek için hafif ve açık bir biçim olan Antigravity'yi kullanarak Agent Skills'i oluşturacağız. Aracı 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, araç kodu iskeleti ve daha fazlası gibi çeşitli Agent Skills oluşturacaksınız.
Ön koşullar:
- Google Antigravity yüklü ve yapılandırılmış olmalıdır.
- Google Antigravity hakkında temel bilgiler Getting Started with Google Antigravity (Google Antigravity'yi Kullanmaya Başlama) 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 muhakeme araçlarına dönüştü. Ancak bir aracıya 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. Büyük bağlam pencerelerinde 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: Aracı Becerileri
Anthropic bu sorunu çözmek için Agent Skills'i kullanıma sundu ve mimariyi tek bir bağlam yüklemeden Progressive Disclosure'a taşıdı. 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. Temsilci Becerileri ve Antigravity
Antigravity ekosisteminde, Temsilci Yöneticisi beyni, Düzenleyici ise tuvali temsil ederse Beceriler, genel amaçlı Gemini 3 modeli 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. Beceriler, bu yürütme protokollerini dinamik olarak yükleyerek yapay zekayı genel bir programcıdan, bir 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, bağlam penceresini optimize eder ve aracının alakasız talimatlarla dikkatinin dağılmasını önler. 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, aracıyı metin oluşturucudan araç kullanıcısına dönüştürür.
Beceriler ve Ekosistem (Araçlar, Kurallar ve İş Akışları)
Model Context Protocol (MCP), aracının "elleri" gibi çalışarak GitHub veya PostgreSQL gibi harici sistemlere ağır hizmet tipi, kalıcı bağlantılar sağlarken beceriler, onları yönlendiren "beyinler" gibi hareket eder.
MCP, durum bilgisi olan altyapıyı yönetirken beceriler, bu araçları kullanma metodolojisini paketleyen, hafif ve kısa ömürlü görev tanımlarıdır. Bu sunucusuz yaklaşım, aracıların kalıcı süreçleri ç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, bağlamı yalnızca görev etkin olduğunda yüklemesine ve hemen ardından serbest bırakmasına olanak tanır.
İşlevsel olarak beceriler, "Kurallar" (pasif, her zaman açık koruma rayları) ve "İş Akışları" (etkin, kullanıcı tarafından tetiklenen makrolar) arasında benzersiz bir orta nokta oluşturur. Belirli komutlar gerektiren iş akışlarının (ör. /test), 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ü bir bileştirme olanağı sunar. Ö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ı
Beceriler iki kapsamda tanımlanabilir. Bu sayede hem projeye özel hem de kullanıcıya özel özelleştirmeler yapılabilir :
- Workspace Scope: Konumu
<workspace-root>/.agent/skills/. Bu beceriler yalnızca belirli projelerde kullanılabilir. 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 özel komut dosyaları için idealdir. - Küresel Kapsam: Konumu:
~/.gemini/antigravity/skills/. Bu beceriler, kullanıcının makinesindeki tüm projelerde kullanılabilir. Bu,"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.
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. Bu talimat, temsilciye 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 yalnızca temsilcinin üst düzey yönlendiricisi tarafından dizine eklenen kısmıdır. Kullanıcı bir 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:
- name: Bu alan zorunlu değildir. Kapsam dahilinde benzersiz olmalıdır. Küçük harf ve kısa çizgiye izin verilir (ör.
postgres-query,pr-reviewer). Bu bilgi sağlanmazsa varsayılan olarak dizin adı kullanılır. - description: Bu alan zorunlu ve en önemli alandır. Bu ifade, "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
Gövde, talimatları içerir. 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: "Yapmayın" kuralları (ör. "DELETE sorgularını çalıştırmayın").
Example SKILL.md Body: (Ö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ı, bir 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 birini ~/.gemini/antigravity/skills veya /.agent/skills klasörüne yerleştirebiliriz.
1. Düzey : Temel Yönlendirici ( git-commit-formatter )
Bunu becerilerin "Merhaba Dünya"sı olarak düşünebiliriz.
Geliştiriciler genellikle "wip", "fix bug", "updates" gibi tembelce commit mesajları yazar. "Conventional Commits"i manuel olarak zorunlu kılmak sıkıcıdır ve genellikle unutulur. Conventional Commits spesifikasyonunu zorunlu kılan bir beceri uygulayalım. Aracıya kuralları bildirerek, kuralları uygulayıcı olarak hareket etmesine izin veriyoruz.
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 Çalıştırma:
- Çalışma alanınızdaki herhangi bir dosyada küçük bir değişiklik yapın.
- Sohbeti açın ve "Bu değişiklikleri işle" yazın.
- Aracı yalnızca git commit komutunu çalıştırmaz. Öncelikle git-commit-formatter becerisini etkinleştirir.
- Sonuç: Geleneksel bir Git commit mesajı önerilir.
Örneğin, Antigravity'nin örnek bir Python dosyasına bazı yorumlar eklemesini sağladım ve sonuçta docs: add detailed comments to demo_primes.py. gibi bir Git commit mesajı oluştu.
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 boşaltma. Beceri, temsilciye bu dosyayı yalnızca gerektiğinde okumasını söyler.
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.
Büyük dil modelleri, kalıp eşleştirme motorlarıdır.
Onlara altın bir örnek göstermek (Giriş -> Çıkış), ayrıntılı talimatlar vermekten genellikle daha etkilidir.
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 Çalıştırma:
- Yeni bir sahte Python dosyası oluşturun:
touch my_script.py - Tür:
Add the license header to my_script.py - Temsilci
license-header-adder/resources/HEADER_TEMPLATE.txtifadesini okur. - İçerik, dosyanıza tam olarak, kelimesi kelimesine yapıştırılır.
3. Seviye: Örneklerle Öğrenme (json-to-pydantic)
"Few-Shot" (Birkaç Görev) 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.
Büyük dil modelleri, kalıp eşleştirme motorlarıdır. Onlara altın bir örnek göstermek (Giriş -> Çıkış), ayrıntılı talimatlar vermekten genellikle daha etkilidir.
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 çıktı dosyası (ör. Python dosyası) bulunur. İki rozeti 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 Çalıştırma:
- Temsilciye bir JSON snippet'i sağlayın (sohbete yapıştırın veya bir dosyayı gösterin).
{ "product": "Widget", "cost": 10.99, "stock": null }
- Tür:
Convert this JSON to a Pydantic model - Aracı, beceri klasöründeki
examplesçiftine bakar. - Bu araç, boş stokları Optional olarak işleme de dahil olmak üzere
output_model.py'nın kodlama stilini, içe aktarmalarını ve yapısını mükemmel şekilde taklit eden bir Python sınıfı oluşturur.
Örnek bir çıkış (product_model.py) aşağıda gösterilmiştir:
from pydantic import BaseModel
from typing import Optional
class Product(BaseModel):
product: str
cost: float
stock: Optional[int] = None
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. Aracıyı, yazdığımız bir Python komut dosyasını çalıştırmaya yönlendirmek için beceriyi kullanırız. 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 Çalıştırma:
- Hatalı bir SQL dosyası oluşturun
bad_schema.sql:CREATE TABLE users (name TEXT); - Tür:
Validate bad_schema.sql - Temsilci tahmin yapmaz. Bu işlem, komut dosyasını çağırır. Komut dosyası başarısız olur (çıkış kodu 1) ve bize "users" tablosunda birincil anahtar eksik olduğu için doğrulama başarısız oldu" şeklinde bir rapor gönderilir.
5. Düzey: Mimar (adk-tool-scaffold)
Bu kalıp, becerilerde bulunan özelliklerin çoğunu kapsar.
Karmaşık görevler genellikle gördüğümüz her şeyi birleştiren bir işlem sırası gerektirir: dosya oluşturma, şablonları takip etme ve mantık yazma. ADK (Agent Development Kit) için yeni bir araç oluşturmak üzere bunların tümü gereklidir.
Birleştirdiğimiz veriler:
- Komut dosyası (dosya oluşturma/iskele oluşturma işlemini yönetmek için)
- Şablon (kaynaklardaki ortak metinleri işlemek için)
- Bir örnek (mantık oluşturma sürecine rehberlik etmek için).
adk-tool-scaffold/
├── SKILL.md
├── resources/
│ └── ToolTemplate.py.hbs (Jinja2 Template)
├── scripts/
│ └── scaffold_tool.py (Generator Script)
└── examples/
└── WeatherTool.py (Reference Implementation)
SKILL.md dosyası aşağıda gösterilmektedir. Komut dosyaları, kaynaklar ve örnekler klasöründeki dosyaları kontrol etmek için beceri deposuna başvurabilirsiniz. Bu beceri için adk-tool-scaffold becerisine gidin.
---
name: adk-tool-scaffold
description: Scaffolds a new custom Tool class for the Agent Development Kit (ADK).
---
# ADK Tool Scaffold Skill
This skill automates the creation of standard `BaseTool` implementations for the Agent Development Kit.
Instructions
1. **Identify the Tool Name**:
Extract the name of the tool the user wants to build (e.g., "StockPrice", "EmailSender").
2. **Review the Example**:
Check `examples/WeatherTool.py` to understand the expected structure of an ADK tool (imports, inheritance, schema).
3. **Run the Scaffolder**:
Execute the python script to generate the initial file.
`python scripts/scaffold_tool.py <ToolName>`
4. **Refine**:
After generation, you must edit the file to:
- Update the `execute` method with real logic.
- Define the JSON schema in `get_schema`.
Example Usage
User: "Create a tool to search Wikipedia."
Agent:
1. Runs `python scripts/scaffold_tool.py WikipediaSearch`
2. Editing `WikipediaSearchTool.py` to add the `requests` logic and `query` argument schema.
Bu Örneği Çalıştırma:
- Tür:
Create a new ADK tool called StockPrice to fetch data from an API - 1. adım (İskele): Temsilci, Python komut dosyasını çalıştırır. Bu işlem, doğru sınıf yapısı, içe aktarmalar ve sınıf adıyla
StockPriceTool.pyoluştururStockPriceTool. - 2. adım (Uygulama): Aracı, yeni oluşturduğu dosyayı "okur".
# TODO: Implement logic.adlı kullanıcının gördüğü içerik - 3. adım (rehberlik): Araç bağımsız değişkenleri için JSON şemasının nasıl tanımlanacağı belli değil.
examples/WeatherTool.pykontrol edilir. - Tamamlama: Dosyayı düzenleyerek
requests.get(...)ekler ve şemadaki borsa sembolü bağımsız değişkenini ADK stiliyle tam olarak eşleşecek şekilde tanımlar.
6. Tebrikler
Antigravity Skills laboratuvarını başarıyla tamamladınız ve aşağıdaki becerileri oluşturdunuz:
- Git commit biçimlendiricisi.
- Lisans başlığı ekleyici.
- JSON'dan Pydantic'e.
- Veritabanı şeması doğrulayıcısı.
- ADK Tool scaffolding.
Agent Skills, Antigravity'nin istediğiniz şekilde kod yazmasını, kurallara uymasını ve araçlarınızı kullanmasını sağlamak için kesinlikle harika bir yöntemdir.
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 Skills dokümanları: https://antigravity.google/docs/skills