1. مقدمة
Google Antigravity هي بيئة تطوير متكاملة (IDE) مستندة إلى الوكلاء من Google. في هذا الدرس التطبيقي حول الترميز، سنستخدم Antigravity لإنشاء مهارات الوكيل، وهو تنسيق خفيف الوزن ومفتوح المصدر لتوسيع إمكانات وكلاء الذكاء الاصطناعي من خلال المعرفة المتخصّصة وسير العمل. ستتعرّف على مهارات الوكيل وفوائدها وكيفية إنشائها. بعد ذلك، ستنشئ عدة "مهارات وكيل" تتراوح بين أداة تنسيق Git، وأداة إنشاء النماذج، وأداة إنشاء الرموز البرمجية للأدوات، وغير ذلك، وكلها قابلة للاستخدام في Antigravity.
المتطلبات الأساسية:
- تم تثبيت Google Antigravity وإعداده.
- فهم أساسي لـ Google Antigravity يُنصح بإكمال الدرس التطبيقي حول الترميز: بدء استخدام Google Antigravity.
2. أهمية المهارات
تطوّرت وكلاء الذكاء الاصطناعي الحديثة من مستمعين بسيطين إلى محلّلين معقّدين يتكاملون مع أنظمة الملفات المحلية والأدوات الخارجية (من خلال خوادم MCP). ومع ذلك، يؤدي تحميل الوكيل بشكل عشوائي بقواعد بيانات كاملة ومئات الأدوات إلى تشبّع السياق و "تضخّم الأدوات". حتى مع قدرة استيعاب السياق الكبيرة، يؤدي إدخال 40,000 إلى 50,000 رمز مميز من الأدوات غير المستخدَمة إلى الذاكرة النشطة إلى حدوث وقت استجابة كبير، وإهدار مالي، و "تدهور السياق"، حيث يصبح النموذج مشوّشًا بسبب البيانات غير ذات الصلة.
الحل: مهارات العملاء
لحلّ هذه المشكلة، قدّمت Agent Skills، ما أدّى إلى تغيير البنية من تحميل السياق المتكامل إلى الإفصاح التدريجي. بدلاً من إجبار النموذج على "تذكُّر" كل سير عمل محدّد (مثل عمليات نقل البيانات أو عمليات تدقيق الأمان) في بداية الجلسة، يتم تجميع هذه الإمكانات في وحدات نمطية يمكن اكتشافها.
كيفية العمل
في البداية، لا يتم عرض النموذج إلا على "قائمة" بسيطة من البيانات الوصفية. لا يتم تحميل المعرفة الإجرائية الكبيرة (التعليمات والنصوص البرمجية) إلا عندما تتطابق نية المستخدم تحديدًا مع إحدى المهارات. يضمن ذلك حصول المطوّر الذي يطلب إعادة تصميم برنامج وسيط لمصادقة الهوية على سياق الأمان بدون تحميل مسارات CSS غير ذات صلة، ما يحافظ على السياق بسيطًا وسريعًا وفعّالاً من حيث التكلفة.

3- مهارات الوكيل وAntigravity
في منظومة Antigravity المتكاملة، إذا كان "مدير الوكيل" هو العقل و"المحرّر" هو لوحة الرسم، تعمل المهارات كوحدات تدريب متخصّصة تسدّ الفجوة بين نموذج Gemini 3 العام وسياقك المحدّد. تسمح هذه الأدوات للوكيل "بتجهيز" مجموعة محدّدة من التعليمات والبروتوكولات، مثل معايير نقل البيانات أو عمليات التحقّق من الأمان، فقط عند طلب مهمة ذات صلة. من خلال التحميل الديناميكي لبروتوكولات التنفيذ هذه، تحوّل "المهارات" الذكاء الاصطناعي بشكل فعّال من مبرمج عام إلى متخصص يلتزم بدقة بأفضل الممارسات ومعايير الأمان المحدّدة في المؤسسة.
ما هي المهارة في Antigravity؟
في سياق Google Antigravity، المهارة هي حزمة مستندة إلى دليل تحتوي على ملف تعريف (SKILL.md) ومواد عرض اختيارية داعمة (نصوص برمجية ومراجع وقوالب).
وهي آلية لتوسيع إمكانات التطبيق عند الطلب.
- عند الطلب: على عكس طلب النظام (الذي يتم تحميله دائمًا)، لا يتم تحميل المهارة في سياق الوكيل إلا عندما يحدّد الوكيل أنّها ذات صلة بطلب المستخدم الحالي. يؤدي ذلك إلى تحسين قدرة استيعاب ومنع الوكيل من التشتّت بسبب التعليمات غير ذات الصلة. في المشاريع الكبيرة التي تتضمّن عشرات الأدوات، يكون التحميل الانتقائي ضروريًا لتحسين الأداء ودقة الاستنتاج.
- توسيع الإمكانات: يمكن للمهارات تنفيذ إجراءات بالإضافة إلى تقديم التعليمات. من خلال تجميع نصوص Python أو Bash البرمجية، يمكن أن تمنح "المهارة" الوكيل القدرة على تنفيذ إجراءات معقّدة ومتعددة الخطوات على الجهاز المحلي أو الشبكات الخارجية بدون أن يحتاج المستخدم إلى تنفيذ الأوامر يدويًا. ويحوّل هذا الإجراء الوكيل من نظام إنشاء النص إلى مستخدم أدوات.
المهارات مقابل المنظومة المتكاملة (الأدوات والقواعد وسير العمل)
في حين أنّ بروتوكول سياق النموذج (MCP) يعمل كـ "أيدي" الوكيل، أي أنّه يوفّر اتصالات قوية ودائمة بأنظمة خارجية مثل GitHub أو PostgreSQL، تعمل "المهارات" كـ "عقول" توجّه هذه الاتصالات.
تتعامل منصة MCP مع البنية الأساسية التي تحتفظ بالحالة، في حين أنّ "المهارات" هي تعريفات مهام خفيفة الوزن ومؤقتة تحزم المنهجية لاستخدام هذه الأدوات. يتيح هذا الأسلوب الذي لا يتطلّب خادمًا للوكلاء تنفيذ مهام مخصّصة (مثل إنشاء سجلات التغيير أو عمليات نقل البيانات) بدون تكاليف تشغيلية إضافية لتشغيل العمليات المستمرة، ولا يتم تحميل السياق إلا عندما تكون المهمة نشطة ويتم إيقافه فورًا بعد ذلك.
من الناحية الوظيفية، تحتلّ "المهارات" موقعًا وسيطًا فريدًا بين "القواعد" (الضوابط السلبية التي تكون نشطة دائمًا) و"سير العمل" (وحدات الماكرو النشطة التي يتم تشغيلها من قِبل المستخدم). على عكس سير العمل الذي يتطلّب أوامر محدّدة (مثل /test)، يتم تشغيل "المهارات" من خلال الوكيل: يرصد النموذج تلقائيًا نية المستخدم ويوفّر بشكلٍ ديناميكي الخبرة المحدّدة المطلوبة. تتيح هذه البنية إمكانية تركيب قوية؛ على سبيل المثال، يمكن لقاعدة عامة فرض استخدام مهارة "Safe-Migration" أثناء إجراء تغييرات في قاعدة البيانات، أو يمكن لسير عمل واحد تنسيق مهارات متعددة لإنشاء مسار نشر قوي.
4. إنشاء مهارات
يتّبع إنشاء مهارة في Antigravity بنية دليل وتنسيق ملفات محدّدين. يضمن هذا التوحيد إمكانية نقل المهارات وأنّ بإمكان الوكيل تحليلها وتنفيذها بشكل موثوق. التصميم بسيط عمدًا، ويعتمد على تنسيقات مفهومة على نطاق واسع مثل Markdown وYAML، ما يقلّل من عوائق الاستخدام أمام المطوّرين الذين يريدون توسيع إمكانات بيئة التطوير المتكاملة.
بنية الدليل
يمكن تحديد المهارات على مستويين، ما يتيح إجراء تخصيصات خاصة بالمشاريع والمستخدمين على حد سواء :
- نطاق Workspace: يقع في
<workspace-root>/.agent/skills/. تتوفّر هذه المهارات فقط ضمن المشروع المحدّد. وهذا مثالي للبرامج النصية الخاصة بالمشاريع، مثل النشر في بيئة معيّنة أو إدارة قاعدة البيانات لهذا التطبيق أو إنشاء رمز النص النموذجي لإطار عمل خاص. - النطاق العالمي: يقع في
~/.gemini/antigravity/skills/. تتوفّر هذه المهارات في جميع المشاريع على جهاز المستخدم. هذا الخيار مناسب للأدوات العامة، مثل "تنسيق JSON" أو "إنشاء معرّفات UUID" أو "مراجعة نمط الرمز" أو الدمج مع أدوات الإنتاجية الشخصية.
يبدو دليل المهارات النموذجي على النحو التالي:
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)
يفصل هذا الهيكل بين الاهتمامات بفعالية. يتم فصل المنطق (scripts) عن التعليمات (SKILL.md) والمعرفة (references)، ما يعكس ممارسات هندسة البرامج العادية.
ملف التعريف SKILL.md
ملف SKILL.md هو أساس المهارة. ويخبر الوكيل بنوع المهارة ومتى يجب استخدامها وكيفية تنفيذها.
يتألف من جزأين:
- YAML Frontmatter
- نص Markdown
YAML Frontmatter
هذه هي طبقة البيانات الوصفية. وهي الجزء الوحيد من المهارة الذي يفهرسه الموجّه عالي المستوى للوكيل. عندما يرسل المستخدم طلبًا، يطابق الوكيل الطلب دلاليًا مع حقول الوصف الخاصة بجميع المهارات المتاحة.
---
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.
---
الحقول الرئيسية:
- الاسم: هذا الحقل غير إلزامي. يجب أن يكون المعرّف فريدًا ضمن النطاق. يُسمح باستخدام الأحرف الصغيرة والواصلات (مثل
postgres-queryوpr-reviewer). إذا لم يتم توفيرها، سيتم ضبطها تلقائيًا على اسم الدليل. - الوصف: هذا الحقل إلزامي وهو الأهم. وهي تعمل كـ "عبارة التفعيل". يجب أن يكون وصفيًا بما يكفي لكي يتعرّف النموذج اللغوي الكبير على الصلة الدلالية. لا يكفي تقديم وصف غامض مثل "أدوات قاعدة البيانات". وصف دقيق مثل "تنفيذ طلبات بحث SQL للقراءة فقط في قاعدة بيانات PostgreSQL المحلية لاسترداد بيانات المستخدم أو المعاملات. يضمن استخدام هذا الخيار لتصحيح أخطاء حالات البيانات اختيار المهارة بشكلٍ صحيح.
The Markdown Body
يحتوي النص على التعليمات. هذه هي "هندسة الطلبات" التي يتم حفظها في ملف. عند تفعيل المهارة، يتم إدخال هذا المحتوى في قدرة استيعاب الوكيل.
يجب أن يتضمّن نص الرسالة ما يلي:
- الهدف: بيان واضح لما تحقّقه المهارة.
- التعليمات: منطق مفصّل.
- أمثلة: أمثلة على الطلبات والنتائج لتوجيه أداء النموذج
- القيود: قواعد "عدم التنفيذ" (مثل "عدم تنفيذ طلبات بحث DELETE").
مثال على نص ملف SKILL.md:
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.
دمج النصوص البرمجية
من أبرز ميزات Skills إمكانية تفويض تنفيذ المهام إلى البرامج النصية. يتيح ذلك للوكيل تنفيذ إجراءات يصعب أو يستحيل على النموذج اللغوي الكبير تنفيذها مباشرةً (مثل التنفيذ الثنائي أو العمليات الحسابية المعقّدة أو التفاعل مع الأنظمة القديمة).
يتم وضع النصوص في الدليل الفرعي scripts/. تشير SKILL.md إليها باستخدام مسار نسبي.
5- مهارات التأليف
الهدف من هذا القسم هو إنشاء مهارات تتكامل مع Antigravity وعرض ميزات مختلفة بشكل تدريجي، مثل الموارد والنصوص البرمجية وما إلى ذلك.
يمكنك تنزيل المهارات من مستودع Github هنا: https://github.com/rominirani/antigravity-skills.
يمكننا التفكير في وضع كل من هذه المهارات داخل المجلد ~/.gemini/antigravity/skills أو المجلد /.agent/skills.
المستوى 1 : جهاز التوجيه الأساسي ( git-commit-formatter )
لنعتبر هذا المثال بمثابة "مرحبًا بالعالم" في مجال المهارات.
غالبًا ما يكتب المطوّرون رسائل إكمال كسولة، مثل "قيد التنفيذ" و"إصلاح خطأ" و"تحديثات". إنّ فرض استخدام "عمليات الإيداع التقليدية" يدويًا أمر ممل وغالبًا ما يتم نسيانه. لننفّذ مهارة تفرض مواصفات Conventional Commits. من خلال توجيه الوكيل بشأن القواعد، نسمح له بالتصرف كجهة تنفيذ.
git-commit-formatter/
└── SKILL.md (Instructions only)
يظهر الملف SKILL.md أدناه:
---
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`
كيفية تشغيل هذا المثال:
- أجرِ تغييرًا بسيطًا على أي ملف في مساحة عملك.
- افتح المحادثة واكتب: Commit these changes.
- لن ينفّذ الوكيل الأمر git commit فقط. سيتم أولاً تفعيل مهارة git-commit-formatter.
- النتيجة: سيتم اقتراح رسالة التزام بتنسيق Git التقليدي.
على سبيل المثال، طلبتُ من Antigravity إضافة بعض التعليقات إلى نموذج ملف Python، وانتهى الأمر برسالة Git commit على النحو التالي: docs: add detailed comments to demo_primes.py.
المستوى 2: استخدام مواد العرض (license-header-adder)
هذا هو نمط "المراجع".
قد يحتاج كل ملف مصدر في مشروع تابع لشركة إلى عنوان ترخيص Apache 2.0 محدّد يتألف من 20 سطرًا. إنّ وضع هذا النص الثابت مباشرةً في الطلب (أو SKILL.md) هو أمر غير فعّال. يستهلك الرموز المميزة في كل مرة يتم فيها فهرسة المهارة، وقد "يهلوس" النموذج أخطاء إملائية في النص القانوني.
نقل النص الثابت إلى ملف نص عادي في مجلد resources/ تطلب المهارة من الوكيل قراءة هذا الملف عند الحاجة فقط.
license-header-adder/
├── SKILL.md
└── resources/
└── HEADER_TEMPLATE.txt (The heavy text)
يظهر الملف SKILL.md أدناه:
---
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 `<!-- ... -->`.
كيفية تشغيل هذا المثال:
- أنشئ ملف Python وهميًا جديدًا:
touch my_script.py - النوع:
Add the license header to my_script.py - سيقرأ الوكيل
license-header-adder/resources/HEADER_TEMPLATE.txt. - سيتم لصق المحتوى تمامًا، حرفيًا، في ملفك.
المستوى 3: التعلّم من خلال الأمثلة (json-to-pydantic)
نمط "التلقين ببضع أمثلة"
يتضمّن تحويل البيانات غير المنظَّمة (مثل استجابة JSON API) إلى رموز برمجية منظَّمة (مثل نماذج Pydantic) عشرات القرارات. كيف يجب تسمية الفئات؟ هل يجب استخدام Optional؟ snake_case أو camelCase؟ إنّ كتابة هذه القواعد الخمسين باللغة الإنجليزية أمر ممل وعُرضة للأخطاء.
النماذج اللغوية الكبيرة هي محركات مطابقة أنماط.
غالبًا ما يكون عرض مثال ذهبي (Input -> Output) أكثر فعالية من التعليمات المطوّلة.
json-to-pydantic/
├── SKILL.md
└── examples/
├── input_data.json (The Before State)
└── output_model.py (The After State)
يظهر الملف SKILL.md أدناه:
---
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، هناك ملف JSON وملف الإخراج، أي ملف Python. يمكنك الاطّلاع على كليهما أدناه:
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
كيفية تشغيل هذا المثال:
- قدِّم للوكيل مقتطفًا من JSON (ألصِقه في المحادثة أو أشر إلى ملف).
{ "product": "Widget", "cost": 10.99, "stock": null }
- النوع:
Convert this JSON to a Pydantic model - ينظر الوكيل إلى زوج
examplesفي مجلد المهارة. - ينشئ هذا النموذج فئة Python تحاكي تمامًا أسلوب الترميز وعمليات الاستيراد وبنية
output_model.py، بما في ذلك التعامل مع المخزون الفارغ كقيمة اختيارية.
في ما يلي مثال على الناتج (product_model.py):
from pydantic import BaseModel
from typing import Optional
class Product(BaseModel):
product: str
cost: float
stock: Optional[int] = None
المستوى 4: المنطق الإجرائي (database-schema-validator)
هذا هو نمط "استخدام الأدوات".
إذا سألت نموذج لغة كبيرًا "هل هذا المخطط آمن؟"، قد يجيبك بأنّ كل شيء على ما يرام، حتى إذا كان هناك مفتاح أساسي مهم مفقود، وذلك ببساطة لأنّ SQL يبدو صحيحًا.
لنفوّض هذه العملية إلى نص برمجي مستند إلى بيانات محدّدة. نستخدم المهارة لتوجيه الموظف إلى تنفيذ نص برمجي بلغة Python كتبناه. يوفّر النص البرمجي قيمة ثنائية (صحيح/خطأ).
database-schema-validator/
├── SKILL.md
└── scripts/
└── validate_schema.py (The Validator)
يظهر الملف SKILL.md أدناه:
---
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 أدناه:
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])
كيفية تشغيل هذا المثال:
- إنشاء ملف SQL غير صالح
bad_schema.sql:CREATE TABLE users (name TEXT); - النوع:
Validate bad_schema.sql - لا يخمن الوكيل الإجابة. سيتم استدعاء النص البرمجي الذي سيتعذّر تنفيذه (رمز الخروج 1)، وسيتم إبلاغنا بأنّ "عملية التحقّق تعذّرت لأنّ الجدول "users" لا يتضمّن مفتاحًا أساسيًا".
المستوى 5: المصمّم (adk-tool-scaffold)
يغطي هذا النمط معظم الميزات المتوفّرة في Skills.
غالبًا ما تتطلّب المهام المعقّدة سلسلة من العمليات التي تجمع كل ما رأيناه: إنشاء الملفات واتّباع النماذج وكتابة التعليمات البرمجية. يتطلّب إنشاء أداة جديدة لمجموعة أدوات تطوير الوكلاء (ADK) كل ما سبق.
نجمع بين:
- نص برمجي (للتعامل مع إنشاء الملفات أو إنشاء البنية الأساسية)
- النموذج (للتعامل مع النص الأساسي في الموارد)
- مثال (للمساعدة في إنشاء المنطق)
adk-tool-scaffold/
├── SKILL.md
├── resources/
│ └── ToolTemplate.py.hbs (Jinja2 Template)
├── scripts/
│ └── scaffold_tool.py (Generator Script)
└── examples/
└── WeatherTool.py (Reference Implementation)
يظهر ملف SKILL.md أدناه. يمكنك الرجوع إلى مستودع المهارات للاطّلاع على الملفات في مجلدات النصوص البرمجية والمراجع والأمثلة. بالنسبة إلى هذه المهارة تحديدًا، انتقِل إلى مهارة adk-tool-scaffold.
---
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.
كيفية تشغيل هذا المثال:
- النوع:
Create a new ADK tool called StockPrice to fetch data from an API - الخطوة 1 (إنشاء البنية الأساسية): ينفّذ الوكيل نص Python البرمجي. يؤدي ذلك إلى إنشاء
StockPriceTool.pyعلى الفور مع بنية الصف الصحيحة وعمليات الاستيراد واسم الصفStockPriceTool. - الخطوة 2 (التنفيذ): "يقرأ" الوكيل الملف الذي أنشأه للتو. يمكنه الاطّلاع على
# TODO: Implement logic. - الخطوة 3 (إرشادات): لستُ متأكدًا من كيفية تحديد مخطّط JSON لوسيطات الأداة. يتحقّق من
examples/WeatherTool.py. - الإكمال: يعدّل الملف لإضافة
requests.get(...)ويحدّد الوسيطة شريط الأخبار في المخطط، مع مطابقة أسلوب ADK تمامًا.
6. تهانينا
لقد أكملت بنجاح الدرس التطبيقي حول مهارات Antigravity وأنشأت المهارات التالية:
- أداة تنسيق عمليات الإيداع في Git
- أداة إضافة عناوين التراخيص
- JSON إلى Pydantic
- مدقّق مخطط قاعدة البيانات
- إنشاء بنية أساسية لأدوات ADK
تُعدّ "مهارات الوكيل" طريقة رائعة لتوجيه Antigravity لكتابة الرموز البرمجية بالطريقة التي تريدها، واتّباع القواعد، واستخدام أدواتك.
المستندات المرجعية
- درس تطبيقي حول الترميز : بدء استخدام Google Antigravity
- الموقع الإلكتروني الرسمي : https://antigravity.google/
- المستندات: https://antigravity.google/docs
- تنزيل : https://antigravity.google/download
- مستندات مهارات Antigravity: https://antigravity.google/docs/skills