Membuat Skill Google Antigravity

1. Pengantar

Google Antigravity adalah platform pengembangan agentic yang dirancang untuk membantu Anda mengembangkan aplikasi di era agen ini. Antigravity berfungsi sebagai pusat perintah utama agen AI Anda, yang menyediakan platform terpadu untuk meluncurkan, memantau, dan mengorkestrasi aktivitasnya.

Dalam codelab ini, kita akan mempelajari terlebih dahulu Keahlian Agen, format terbuka yang ringan untuk memperluas kemampuan agen AI dengan pengetahuan dan alur kerja khusus. Anda akan dapat mempelajari apa itu Keahlian Agen, manfaatnya, dan cara membuatnya. Kemudian, Anda akan membangun beberapa Keterampilan Agen mulai dari pemformat Git, generator template, scaffolding kode alat, dan lainnya, yang semuanya dapat digunakan dalam Antigravity.

Prasyarat:

2. Mengapa Keahlian

Agen AI modern telah berkembang dari pendengar sederhana menjadi penganalisis kompleks yang terintegrasi dengan sistem file lokal dan alat eksternal (melalui server MCP). Namun, memuat agen dengan seluruh codebase dan ratusan alat secara sembarangan akan menyebabkan Saturasi Konteks dan "Pembengkakan Alat". Meskipun dengan jendela konteks yang besar, membuang 40–50 ribu token alat yang tidak digunakan ke dalam memori aktif menyebabkan latensi tinggi, pemborosan finansial, dan "pembusukan konteks", yang membuat model menjadi bingung dengan data yang tidak relevan.

Solusi: Keahlian Agen

Untuk mengatasi hal ini, Anthropic memperkenalkan Keterampilan Agen, yang mengubah arsitektur dari pemuatan konteks monolitik menjadi Pengungkapan Progresif. Daripada memaksa model untuk "mengingat" setiap alur kerja tertentu (seperti migrasi database atau audit keamanan) di awal sesi, kemampuan ini dikemas ke dalam unit modular yang dapat ditemukan.

Cara Kerjanya

Awalnya, model hanya diekspos ke "menu" metadata ringan. Model ini memuat pengetahuan prosedural yang berat (petunjuk dan skrip) hanya jika maksud pengguna secara khusus cocok dengan skill. Hal ini memastikan bahwa developer yang meminta untuk memfaktorkan ulang middleware autentikasi mendapatkan konteks keamanan tanpa memuat pipeline CSS yang tidak terkait, sehingga konteks tetap ramping, cepat, dan hemat biaya.

d3f4bcb065a19fea.png

3. Keahlian Agen dan Antigravity

Dalam ekosistem Antigravity, Keterampilan berfungsi sebagai modul pelatihan khusus yang menjembatani kesenjangan antara model generalis dan konteks spesifik Anda. Agen dapat "melengkapi" serangkaian petunjuk dan protokol yang telah ditentukan—seperti standar migrasi database atau pemeriksaan keamanan—hanya saat tugas yang relevan diminta. Dengan memuat protokol eksekusi ini secara dinamis, Keterampilan secara efektif mengubah AI dari programmer umum menjadi spesialis yang secara ketat mematuhi praktik terbaik dan standar keamanan yang dikodifikasi organisasi.

Apa itu Keahlian di Antigravity?

Dalam konteks Google Antigravity, Keterampilan adalah paket berbasis direktori yang berisi file definisi (SKILL.md) dan aset pendukung opsional (skrip, referensi, template).

Ini adalah mekanisme untuk memperluas kemampuan sesuai permintaan.

  • Sesuai Permintaan: Tidak seperti Perintah Sistem (yang selalu dimuat), Keterampilan hanya dimuat ke dalam konteks agen saat agen menentukan bahwa Keterampilan tersebut relevan dengan permintaan pengguna saat ini. Hal ini mengoptimalkan jendela konteks dan mencegah agen terganggu oleh petunjuk yang tidak relevan. Dalam project besar dengan puluhan alat, pemuatan selektif ini sangat penting untuk performa dan akurasi penalaran.
  • Ekstensi Kemampuan: Keterampilan dapat melakukan lebih dari sekadar memberikan petunjuk; keterampilan dapat menjalankan perintah. Dengan menggabungkan skrip Python atau Bash, Skill dapat memberi kemampuan kepada agen untuk melakukan tindakan multi-langkah yang kompleks di komputer lokal atau jaringan eksternal tanpa pengguna perlu menjalankan perintah secara manual. Hal ini mengubah agen dari pembuat teks menjadi pengguna alat.

Keahlian vs. Ekosistem (Alat, Aturan, dan Alur Kerja)

Meskipun Model Context Protocol (MCP) berfungsi sebagai "tangan" agen—yang menyediakan koneksi persisten yang berat ke sistem eksternal seperti GitHub atau PostgreSQL—Keterampilan bertindak sebagai "otak" yang mengarahkannya.

MCP menangani infrastruktur stateful, sedangkan Keterampilan adalah definisi tugas ringan dan sementara yang memaketkan metodologi untuk menggunakan alat tersebut. Pendekatan serverless ini memungkinkan agen menjalankan tugas ad-hoc (seperti membuat log perubahan atau migrasi) tanpa overhead operasional untuk menjalankan proses persisten, memuat konteks hanya saat tugas aktif dan melepaskannya segera setelahnya.

Keahlian dipicu agen: model secara otomatis mendeteksi maksud pengguna dan secara dinamis melengkapi keahlian spesifik yang diperlukan. Arsitektur ini memungkinkan kompositabilitas yang efektif; misalnya, Aturan global dapat menerapkan penggunaan Keterampilan "Migrasi Aman" selama perubahan database, atau Alur Kerja tunggal dapat mengatur beberapa Keterampilan untuk membangun pipeline deployment yang andal.

4. Membuat Keahlian

Membuat Skill di Antigravity mengikuti struktur direktori dan format file tertentu. Standardisasi ini memastikan bahwa keterampilan dapat dipindahkan dan agen dapat menguraikan serta mengeksekusinya dengan andal. Desainnya sengaja dibuat sederhana, mengandalkan format yang dipahami secara luas seperti Markdown dan YAML, sehingga menurunkan hambatan bagi developer yang ingin memperluas kemampuan IDE mereka.

Struktur Direktori

Direktori Skill standar terlihat seperti ini:

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)

Struktur ini memisahkan masalah secara efektif. Logika (scripts) dipisahkan dari petunjuk (SKILL.md) dan pengetahuan (references), yang mencerminkan praktik rekayasa software standar.

File Definisi SKILL.md

File SKILL.md adalah inti dari Keahlian. Petunjuk ini memberi tahu agen tentang fungsi keahlian, kapan harus menggunakannya, dan cara menjalankannya.

Terdiri dari dua bagian:

  • Frontmatter YAML
  • Isi Markdown.

Frontmatter YAML

Ini adalah lapisan metadata. Ini adalah satu-satunya bagian skill yang diindeks oleh perouter tingkat tinggi agen. Saat pengguna mengirimkan perintah, agen akan mencocokkan semantik perintah dengan kolom deskripsi semua keterampilan yang tersedia.

---
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.
---

Kolom Utama:

  • name: Ini tidak wajib. Harus unik dalam cakupan. Huruf kecil, tanda hubung diizinkan (misalnya, postgres-query, pr-reviewer). Jika tidak diberikan, nilai defaultnya adalah nama direktori.
  • description: Kolom ini wajib diisi dan merupakan kolom terpenting. Frasa ini berfungsi sebagai "frasa pemicu". Harus cukup deskriptif agar LLM dapat mengenali relevansi semantik. Deskripsi yang tidak jelas seperti "Alat database" tidak cukup. Deskripsi yang tepat seperti "Mengeksekusi kueri SQL hanya baca terhadap database PostgreSQL lokal untuk mengambil data pengguna atau transaksi. Gunakan ini untuk men-debug status data" memastikan skill diambil dengan benar.

Isi Markdown

Isi berisi petunjuk. Ini adalah "rekayasa perintah" yang dipertahankan ke file. Saat keahlian diaktifkan, konten ini akan dimasukkan ke jendela konteks agen.

Isi harus mencakup:

  1. Sasaran: Pernyataan yang jelas tentang apa yang dicapai oleh skill.
  2. Petunjuk: Logika langkah demi langkah.
  3. Contoh: Contoh input dan output few-shot untuk memandu performa model.
  4. Batasan: Aturan "Jangan" (misalnya, "Jangan jalankan kueri DELETE").

Contoh Isi SKILL.md:

Database Inspector

Goal
To safely query the local database and provide insights on the current data state.

Instructions
- Analyze the users 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.

Integrasi Skrip

Salah satu fitur Skills yang paling canggih adalah kemampuan untuk mendelegasikan eksekusi ke skrip. Hal ini memungkinkan agen melakukan tindakan yang sulit atau tidak mungkin dilakukan LLM secara langsung (seperti eksekusi biner, penghitungan matematika yang kompleks, atau berinteraksi dengan sistem lama).

Skrip ditempatkan di subdirektori scripts/. SKILL.md mereferensikannya berdasarkan jalur relatif.

5. Keahlian Pembuatan

Tujuan bagian ini adalah untuk membuat Keterampilan yang terintegrasi ke dalam Antigravity dan secara progresif menampilkan berbagai fitur seperti resource / skrip / dll.

Anda dapat mendownload Keterampilan dari repositori GitHub di sini: https://github.com/rominirani/antigravity-skills.

Sebelum memahami cara membangun setiap keterampilan ini, mari kita lihat cara mengonfigurasi dan menyediakannya dalam rangkaian produk Antigravity. Folder di bawah ini berlaku pada saat publikasi lab ini.

Menggunakan Antigravity atau Antigravity CLI

Keterampilan dapat ditentukan dalam dua cakupan, sehingga memungkinkan keterampilan khusus project dan keterampilan khusus pengguna, yaitu keterampilan global.:

  • Cakupan Global (~/.gemini/config/skills/): Tersedia di semua produk Antigravity (Antigravity, Antigravity IDE, Antigravity CLI) dan project. Keterampilan ini tersedia di semua project di komputer pengguna. Hal ini cocok untuk utilitas umum seperti "Format JSON", "Buat UUID", "Tinjau Gaya Kode", atau integrasi dengan alat produktivitas pribadi.
  • Cakupan Project/Workspace (<project-root>/.agents/skills/): Opsi ini akan membuat skill hanya tersedia dalam project tertentu. Cara ini ideal untuk skrip khusus project, seperti deployment ke lingkungan tertentu, pengelolaan database untuk aplikasi tersebut, atau pembuatan kode boilerplate untuk framework eksklusif.

Menginstal Keahlian di Antigravity atau Antigravity CLI

Untuk tutorial ini, kita hanya perlu melakukan langkah-langkah berikut (Anda juga dapat melakukannya dengan cara Anda sendiri):

Langkah 1: Lakukan git clone dari https://github.com/rominirani/antigravity-skills

Langkah 2: Sekarang, bergantung pada apakah Anda menggunakan Antigravity atau Antigravity CLI, Anda dapat membuka folder antigravity-skills/skills_tutorial.

Langkah 3: Anda akan menemukan serangkaian keterampilan, yang dikelompokkan ke dalam folder masing-masing. Salin 4 folder berikut:

  • git-commit-formatter
  • license-header-adder
  • database-schema-validator
  • json-to-pydantic

ke dalam folder keterampilan yang ditargetkan untuk produk (cakupan project atau cakupan global).

Langkah 4: Jika Anda menggunakan Antigravity atau Antigravity CLI , salin ke <project-root>/.agents/skills/ (cakupan project).

Jika Anda telah meluncurkan Antigravity, Anda dapat mengajukan pertanyaan sederhana "Apa saja keterampilan yang tersedia?" dan Antigravity akan merespons dengan pertanyaan yang sama. Anda dapat melihat 4 keterampilan yang tercantum di sana. Anda mungkin juga memiliki keterampilan tambahan, jika Anda telah menginstalnya di lingkungan Anda.

191842a2a0d69597.png

Demikian pula, jika Anda menggunakan Antigravity CLI, Anda dapat memberikan perintah /skills berikut dan perintah tersebut akan mencantumkan 4 keterampilan. Contohnya ditampilkan di bawah ini:

46be7782d027aa41.png

Setelah mengetahui cara menyiapkan skill, mari kita pelajari setiap Skill dan pahami cara pembuatannya. Anda juga dapat menggunakan template ini untuk membuat keahlian Anda sendiri.

Level 1 : Router Dasar ( git-commit-formatter)

Anggap saja ini sebagai "Halo Dunia" Keterampilan.

Developer sering menulis pesan commit yang tidak jelas, misalnya "wip", "fix bug", "updates". Menerapkan "Conventional Commits" secara manual sangat membosankan dan sering kali terlupakan. Mari kita terapkan Skill yang menerapkan spesifikasi Conventional Commits. Dengan cukup menginstruksikan agen tentang aturan, kita mengizinkannya bertindak sebagai penegak.

git-commit-formatter/
└── SKILL.md  (Instructions only)

File SKILL.md ditampilkan di bawah:

---
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`

Cara Menjalankan Contoh Ini di Antigravity

Langkah-langkah di bawah mengasumsikan bahwa Anda telah menginstal Git di komputer lokal dan menyiapkannya dengan benar.

Dengan asumsi Anda telah meluncurkan Antigravity atau Antigravity CLI, ikuti langkah-langkah berikut:

Langkah 1: Siapkan Repositori Git Pengujian

Minta agen untuk menyiapkan direktori yang bersih dan terisolasi untuk menguji operasi Git.

Perintah Anda:

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.

Saat commit terjadi, skill akan dipicu dan pesan commit akan diformat sesuai rekomendasi kami, yang telah dicatat dalam skill.

Saya telah membuat folder, melakukan inisialisasi repositori git, membuat file awal, melakukan penahapan, dan melakukan commit menggunakan spesifikasi Conventional Commits:

 1. Created folder and initialized git repository:
     • Directory: git_test
     • Initialized empty Git repository in git_test/.git/
 2. Created initial file:
     • File: auth.py
     • Defined: auth.py:1-2
 3. Staged and committed changes:
     • Commit message: feat(auth): add initial login function

Langkah 2: Lakukan Perubahan Kode

Minta agen untuk mengubah kode sehingga ada perubahan yang perlu di-commit.

Perintah Anda:

In the git_test folder, modify auth.py to add Google Login functionality.

Agen akan mengedit file untuk menambahkan fitur baru, dan menyiapkannya untuk fase commit.

Langkah 3: Siapkan dan Lakukan Perubahan

Aktifkan keterampilan git-commit-formatter dengan meminta agen untuk mengatur perubahan dan membuat commit.

Perintah Anda:

Stage the changes in the git_test folder and commit them. Make sure to format the commit message using the Conventional Commits skill.

Agen akan menjalankan git add auth.py, menganalisis perbedaan untuk menentukan bahwa fitur baru telah ditambahkan ke modul auth, dan merumuskan pesan commit konvensional seperti feat(auth): implement google login sebelum menjalankan git commit.

Langkah 4: Verifikasi Log Git

Minta agen untuk mengambil histori git agar Anda dapat mengonfirmasi bahwa commit yang diformat telah berhasil dicatat.

Perintah Anda:

Show me the git log in the git_test folder.

Agen akan menjalankan git log -n 5 dan menampilkan output yang menunjukkan pesan commit yang diformat.

Level 2: Pemanfaatan Aset (license-header-adder)

Ini adalah pola "Referensi".

Setiap file sumber dalam project perusahaan mungkin memerlukan header lisensi Apache 2.0 20 baris tertentu. Menempatkan teks statis ini langsung ke perintah (atau SKILL.md) akan sia-sia. Model ini menggunakan token setiap kali skill diindeks, dan model mungkin "berhalusinasi" dengan salah mengeja dalam teks hukum. Sebaiknya pindahkan teks statis ke file teks biasa di folder resources/. Keterampilan menginstruksikan agen untuk membaca file ini hanya jika diperlukan.

Anda akan menemukan file di folder license-header-adder di direktori skills.

license-header-adder/
├── SKILL.md
└── resources/
   └── HEADER_TEMPLATE.txt  (The heavy text)

File SKILL.md ditampilkan di bawah:

---
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 `<!-- ... -->`.

Cara Menjalankan Contoh Ini di Antigravity

Jika Anda telah menjalankan contoh sebelumnya, header lisensi akan ditambahkan. Anda dapat memeriksanya atau mencoba dengan perintah baru di sini.

Dengan asumsi Anda telah meluncurkan Antigravity atau Antigravity CLI, ikuti langkah-langkah berikut:

Langkah 1: Buat File Python dengan Kode Contoh

Perintah Anda:

Create a new file my_script.py with the following python code:

def hello():
   print("Hello, World!")

Yang Terjadi (Penjelasan): Agen memanggil alat penulisan file (write_to_file) untuk membuat file baru bernama my_script.py langsung di direktori ruang kerja aktif Anda dan menulis fungsi Python dasar ke dalamnya. Selain itu, perintah memicu keterampilan license-header-adder. Agen menemukan dan membaca file template lisensi (HEADER_TEMPLATE.txt), mengubah gaya komentar dari komentar blok gaya C (/* ... */) menjadi komentar gaya Python (#), dan menambahkan komentar tersebut ke bagian atas file menggunakan alat replace_file_content.

Langkah 2: Verifikasi Isi File

Lihat file my_script.py. File ini akan berisi header lisensi di bagian atas.

Level 3: Belajar dengan Contoh (json-to-pydantic)

Pola "Few-Shot".

Mengonversi data yang tidak terstruktur (seperti respons JSON API) menjadi kode yang ketat (seperti model Pydantic) melibatkan puluhan keputusan. Bagaimana cara memberi nama class? Haruskah kita menggunakan Optional? snake_case atau camelCase? Menulis 50 aturan ini dalam bahasa Inggris akan melelahkan dan rentan terhadap kesalahan.

LLM adalah mesin pencocokan pola.

Membuat skill dengan contoh terbaik (Input -> Output) sering kali lebih efektif daripada petunjuk yang panjang.

Buka folder json-to-pydantic/ yang berisi file skill, seperti yang ditunjukkan di bawah:

json-to-pydantic/
├── SKILL.md
└── examples/
   ├── input_data.json   (The Before State)
   └── output_model.py   (The After State)

File SKILL.md ditampilkan di bawah:

---
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`.

Di folder /examples, ada file JSON dan file output, yaitu file Python. Keduanya ditampilkan di bawah:

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

Cara Menjalankan Contoh Ini di Antigravity

Dengan asumsi Anda telah meluncurkan Antigravity atau Antigravity CLI, ikuti langkah-langkah berikut:

Langkah 1: Buat File JSON dengan Data Contoh

Minta agen untuk membuat file baru product.json yang berisi payload JSON mentah.

Perintah Anda:

Create a new file product.json with the following JSON:

{
 "product": "Widget",
 "cost": 10.99,
 "stock": null
}

Langkah 2: Mengonversi JSON ke Model Pydantic

Picu kemampuan json-to-pydantic untuk mengonversi data JSON menjadi class Pydantic terstruktur.

Perintah Anda:

Convert the JSON in product.json to a Pydantic model and save it to product_model.py.

Langkah 3: Verifikasi Output

Lihat file product_model.py. Objek ini akan berisi model Pydantic yang telah selesai.

Level 4: Logika Prosedural (database-schema-validator)

Ini adalah Pola "Penggunaan Alat".

Jika Anda bertanya kepada LLM "Apakah skema ini aman?", LLM mungkin mengatakan semuanya baik-baik saja, meskipun kunci utama penting tidak ada, hanya karena SQL terlihat benar.

Mari kita delegasikan pemeriksaan ini ke Skrip deterministik. Keterampilan database-schema-validator akan mengarahkan agen untuk menjalankan skrip Python yang kita tulis. Skrip memberikan kebenaran biner (Benar/Salah).

database-schema-validator/
├── SKILL.md
└── scripts/
   └── validate_schema.py  (The Validator)

File SKILL.md ditampilkan di bawah:

---
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.

File validate_schema.py ditampilkan di bawah:

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])

Cara Menjalankan Contoh Ini di Antigravity

Dengan asumsi Anda telah meluncurkan Antigravity atau Antigravity CLI, ikuti langkah-langkah berikut:

Langkah 1: Buat File SQL dengan Data Contoh

Minta agen untuk membuat file bad_schema.sql baru yang berisi beberapa pelanggaran kebijakan.

Perintah Anda:

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
);

File skema di atas melanggar ketiga kebijakan: menggunakan pernyataan DROP TABLE yang dilarang, menggunakan camelCase untuk nama tabel userProfile, dan lupa kunci utama id dalam tabel posts.

Langkah 2: Validasi Skema SQL

Aktifkan skill database-schema-validator untuk menjalankan skrip validator Python terhadap file Anda.

Perhatikan bahwa dalam beberapa kasus, Antigravity cukup pintar untuk memicu

database-schema-validator

sendirinya, setelah file SQL dibuat.

Perintah Anda:

Validate bad_schema.sql using the database-schema-validator skill.

Langkah 3: Verifikasi Output

Agen akan melaporkan kegagalan dan menampilkan error spesifik yang ditemukan oleh skrip langsung dalam chat. Contoh output ditampilkan di bawah:

Validation of bad_schema.sql failed with the following policy errors:

 ### Validation Errors

   ERROR: 'DROP TABLE' statements are forbidden.
   ERROR: Table 'userProfile' must be snake_case.
   ERROR: Table 'posts' is missing a primary key named 'id'.
 ──────
 ### Suggested Fixes

 1. Remove Destructive Statements:
     • Delete DROP TABLE IF EXISTS legacy_users; to comply with the safety policy prohibiting DROP TABLE operations.
 2. Fix Naming Conventions:
     • Rename table userProfile to user_profile to satisfy the snake_case naming policy.
 3. Add Primary Key:
     • Add an id INT PRIMARY KEY column to the posts table to comply with table structure requirements.

 ──────
 ### Compliant Schema Example

   CREATE TABLE user_profile (
       id INT PRIMARY KEY,
       bio TEXT
   );

   CREATE TABLE posts (
       id INT PRIMARY KEY,
       title TEXT,
       content TEXT,
       created_at TIMESTAMP
   );

   CREATE TABLE comments (
       id INT PRIMARY KEY,
       post_id INT,
       body TEXT
   );

6. Toolkit Developer (Keterampilan CLI Agen)

Pola "Tindakan & Siklus Proses".

Pengembangan agen AI melibatkan tugas siklus proses yang berulang: membuat file boilerplate, mengonfigurasi lingkungan runtime lokal, menjalankan perintah pengujian, dan memulai playground interaktif.

Daripada memaksa asisten coding Anda menebak struktur direktori atau menulis konfigurasi agen boilerplate dari awal, Keahlian CLI Agen mengemas keahlian siklus proses ini ke dalam keahlian agen tertentu.

Keahlian Agent CLI (Command Line Interface) menghadirkan otomatisasi yang disederhanakan dan berfokus pada developer langsung ke terminal Anda, sehingga menjembatani kesenjangan antara kode mentah dan eksekusi otonom. Meskipun Agent Development Kit (ADK) berfokus pada framework terprogram, yang memberi Anda SDK, API, dan cetak biru struktural untuk membangun dan mengatur agen AI, keterampilan Agent CLI memberikan kemampuan operasional. Dengan begitu, developer dapat membuat struktur, menguji, dan men-deploy agen secara lokal dengan loop umpan balik yang cepat, sehingga sepenuhnya melewati overhead UI yang berat.

Secara opsional, saat dipetakan ke Google Cloud, kemampuan Agent CLI bertindak sebagai pipeline langsung ke infrastruktur tingkat perusahaan. Daripada mengklik konsol, Anda dapat menggunakan perintah CLI untuk langsung mengemas alur kerja agen, mengelola izin akses, dan men-deploy-nya ke ekosistem Google Cloud (seperti Vertex AI atau Cloud Run). Hal ini mengubah tugas arsitektur cloud yang dulunya rumit menjadi perintah terminal yang sederhana dan dapat direproduksi, sehingga mempermudah integrasi agen otonom ke dalam pipeline deployment CI/CD yang ada.

Cara Menginstal

Pastikan Anda telah menginstal Python 3.11+, Node.js, dan pengelola paket uv. Kemudian, jalankan perintah penyiapan di terminal Anda:

uvx google-agents-cli setup

Perintah ini menginstal biner agents-cli dan mendaftarkan keterampilan khususnya untuk penyiapan dan evaluasi dalam lingkungan asisten coding Anda.

Catatan: Keterampilan akan diinstal di folder ~/.agents/skills, yang dapat dilihat oleh Antigravity. Jika ingin melihat keterampilan ini di Antigravity CLI, Anda harus memindahkannya ke folder ~/.gemini/antigravity-cli/skills (cakupan global).

Anda dapat memeriksa apakah Keterampilan telah dimuat di Antigravity dengan cukup menanyakan keterampilan mana yang tersedia. Contoh respons parsial ditampilkan di bawah, untuk Keterampilan CLI Agen yang baru saja kita instal.

aade8c84acacf956.png

Panduan Langkah demi Langkah

Setelah uvx google-agents-cli setup selesai, Anda dapat mengaktifkan, berinteraksi dengan, dan menguji agen AI sepenuhnya di komputer lokal Anda.

Langkah 1: Buat Struktur dan Lakukan Inisialisasi Project Agen Baru

Jalankan perintah pembuatan untuk membuat tata letak standar. Setelah dibuat, Anda harus menginstal dependensi project-nya sebelum menjalankan tugas eksekusi apa pun.

# 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

Yang terjadi di balik layar: Tindakan ini akan membuat ruang kerja bersih yang menampilkan app/agent.py (kode inti Anda), pyproject.toml (metadata paket), dan agents-cli-manifest.yaml (pelacak project).

Langkah 2: Jalankan Kueri Pengujian Lokal

Jalankan pengujian command line langsung yang cepat terhadap agen Anda. Pastikan Anda telah mengekspor GEMINI_API_KEY di terminal jika Anda tidak menggunakan ADC (Kredensial Default Aplikasi) Google Cloud. Anda bisa mendapatkan Kunci Gemini API dari sini. Setelah Anda memiliki kunci, ekspor di terminal Anda melalui perintah berikut. Kita juga menyetel GOOGLE_GENAI_USE_VERTEXAI ke FALSE di sini.

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
export GOOGLE_GENAI_USE_VERTEXAI=FALSE

Berikan perintah berikut di terminal Anda:

agents-cli run "How are you?"

Yang terjadi di balik layar: CLI menginisialisasi siklus proses Agent Development Kit (ADK) sepenuhnya di memori pada terminal Anda. Alat ini merutekan perintah dengan aman melalui kredensial lokal Anda dan mencatat respons live streaming langsung kembali ke command line Anda.

Langkah 3: Mulai Interactive Web Playground

Luncurkan playground berbasis web lokal bawaan untuk berinteraksi dengan agen Anda secara visual.

agents-cli playground

Yang terjadi di balik layar: CLI meluncurkan server UI web ADK, yang biasanya dapat diakses di http://localhost:8080 atau http://127.0.0.1:8000 fallback, lengkap dengan hot-reloading. Dari antarmuka web, pilih app di dropdown Select an app di bagian atas dan berinteraksi dengan agen di antarmuka percakapan di sisi kanan aplikasi web.

7. Menginstal Keahlian Agen menggunakan npx skills

npx skills adalah alat command line yang dikembangkan oleh Vercel Labs yang berfungsi sebagai pengelola paket untuk agen AI (seperti Antigravity, Claude Code, GitHub Copilot, Cursor, dan Cline). CLI ini adalah CLI untuk ekosistem keterampilan agen terbuka.

Jika Anda ingin mendownload dan menginstal Keterampilan Agen menggunakan paket npx skills, perhatikan bahwa paket ini menempatkan Keterampilan di folder ~/.agents/skills. Meskipun disebutkan bahwa alat seperti Antigravity akan mengambil keterampilan dari folder ini, perlu diperhatikan bahwa pada saat penulisan, Antigravity mengambilnya dari folder ini, tetapi Antigravity CLI tidak. Seperti yang disebutkan sebelumnya, Anda harus menyalin keterampilan yang diinstal di folder ~/.agents/skills ini ke project atau cakupan global untuk folder keterampilan di Antigravity CLI, yaitu

  1. Cakupan Proyek: Berada di <project-root>/.agents/skills/.
  2. Cakupan Global: Berlokasi di ~/.gemini/antigravity-cli/skills/.

8. Selamat

Selamat! Anda telah berhasil menggunakan Google Antigravity untuk membuat keterampilan Agen pertama, mengonfigurasinya, dan menambahkan kemampuan kustom ke dalamnya.

Anda juga berhasil mengonfigurasi serangkaian Keterampilan Agen, dalam cakupan project dan global, sehingga menghadirkan alat yang disesuaikan.

Sekarang Anda siap membiarkan Antigravity menangani tugas berat di project Anda sendiri dan menulis kode dengan cara Anda.

9. Dokumen referensi