切换语言
切换主题

赋予智能体"专业大脑":如何为 Antigravity 编写自定义 Agent Skills 插件

上周,我的团队成员第N次问我:“这个API的认证流程到底是怎么样的?”

我打开那个尘封已久的Confluence页面,发现上次更新还是六个月前。文档和代码又不同步了。叹了口气,我开始手敲那段已经解释过无数遍的说明。

那天晚上,我在折腾Antigravity的时候,无意中发现了Skills系统。简单说,它允许你给AI Agent植入”专业大脑”——让它记住特定的知识、执行特定的流程、调用特定的工具。

我花了两个小时,写了一个我们内部API的Skill。第二天,团队里的新人问同样的问题时,我直接在Antigravity里敲了一句:“查一下我们用户服务的认证流程。”

Agent调用了我的Skill,三十秒后给出了一份准确的、带代码示例的说明。新人点点头,自己去折腾了。

那一刻我意识到:Skill系统不只是扩展,它是在重塑团队协作的方式

这篇东西,就是关于怎么为Antigravity写自定义Skills的。从基础概念到实战案例,包括怎么集成外部API、怎么连私有知识库。

什么是Antigravity Skills

先搞清楚概念。

Antigravity的Skill系统是一种轻量级、开放式的扩展格式。你可以把它理解为给AI Agent安装的”应用”——每个Skill定义了一组特定能力,让Agent在某些场景下表现得更专业。

根据Google Codelabs的说明,Skills是目录结构的包,通过标准化格式让Agent能可靠解析和执行。一个典型的Skill包含:

  • skill.yaml:定义Skill的元数据、能力描述、使用场景
  • README.md:详细说明Skill的功能和使用方法
  • scripts/:实际执行的脚本(Python、Bash等)
  • templates/:Prompt模板或输出模板

Skills可以定义在两个作用域:

  • 全局作用域~/.gemini/antigravity/skills/):跨项目可用,比如”格式化JSON”、“通用代码审查”
  • 项目作用域.agent/skills/):仅当前项目可用,比如”我们团队的API规范”、“特定业务的代码模板”

这种分层设计很贴心——通用的放全局,业务相关的放项目。

编写你的第一个Skill

好,动手时间。

咱们从一个简单的例子开始:一个自动格式化Git commit message的Skill。

第一步:创建目录结构

mkdir -p ~/.gemini/antigravity/skills/git-commit-formatter

第二步:编写skill.yaml

name: git-commit-formatter
description: Format Git commit messages following Conventional Commits spec
version: 1.0.0
author: your-name
triggers:
  - commit
  - git message
  - format commit
actions:
  - name: format_commit
    description: Format a raw commit message to Conventional Commits format
    input:
      raw_message: string
      type: enum[feat, fix, docs, style, refactor, test, chore]
    output:
      formatted_message: string

这个YAML定义了Skill的基本信息、触发关键词、输入输出格式。

第三步:编写执行脚本

在目录下创建scripts/format_commit.py

#!/usr/bin/env python3
import sys
import re

def format_commit(raw_message, commit_type):
    # 解析原始消息
    scope_match = re.search(r'\(([^)]+)\)', raw_message)
    scope = f"({scope_match.group(1)})" if scope_match else ""

    # 提取描述
    desc = re.sub(r'\([^)]+\):?\s*', '', raw_message).strip()

    # 格式化
    formatted = f"{commit_type}{scope}: {desc}"
    return formatted

if __name__ == "__main__":
    raw = sys.argv[1]
    ctype = sys.argv[2]
    print(format_commit(raw, ctype))

第四步:测试

重启Antigravity,试试输入:

“用git-commit-formatter格式化这条提交:修复了用户登录的bug”

如果一切正常,Agent会调用你的Skill,输出类似:fix(auth): 修复了用户登录的bug

简单吧?这就是Skill的基本骨架。

集成外部API:GitHub + Jira实战

单机的Skill只是玩具,真正有用的是能连外部系统的Skill。

来,咱们整一个能自动处理Jira工单的Skill。

场景:团队每天花大量时间在Jira里更新状态、记录工时。咱们让Agent帮忙做这些重复劳动。

第一步:准备API认证

你需要Jira的API token和域名。建议用环境变量存储敏感信息:

export JIRA_API_TOKEN="your-token"
export JIRA_DOMAIN="your-domain.atlassian.net"
export JIRA_EMAIL="your-email@example.com"

第二步:编写Skill配置

name: jira-assistant
description: Automate Jira workflows - search issues, update status, add worklogs
triggers:
  - jira
  - ticket
  - issue
  - worklog
actions:
  - name: search_issues
    description: Search Jira issues by JQL query
  - name: add_worklog
    description: Add time spent to an issue
  - name: transition_issue
    description: Move issue to a different status

第三步:编写核心脚本

#!/usr/bin/env python3
import os
import requests
from base64 import b64encode

class JiraClient:
    def __init__(self):
        self.domain = os.getenv('JIRA_DOMAIN')
        self.email = os.getenv('JIRA_EMAIL')
        self.token = os.getenv('JIRA_API_TOKEN')
        self.auth = self._get_auth()

    def _get_auth(self):
        credentials = f"{self.email}:{self.token}"
        return b64encode(credentials.encode()).decode()

    def search(self, jql):
        url = f"https://{self.domain}/rest/api/2/search"
        headers = {
            "Authorization": f"Basic {self.auth}",
            "Content-Type": "application/json"
        }
        response = requests.get(url, headers=headers, params={"jql": jql})
        return response.json()

    def add_worklog(self, issue_key, time_spent, comment):
        url = f"https://{self.domain}/rest/api/2/issue/{issue_key}/worklog"
        headers = {
            "Authorization": f"Basic {self.auth}",
            "Content-Type": "application/json"
        }
        data = {
            "timeSpent": time_spent,
            "comment": comment
        }
        return requests.post(url, headers=headers, json=data)

# CLI入口
if __name__ == "__main__":
    import sys
    client = JiraClient()

    if sys.argv[1] == "search":
        result = client.search(sys.argv[2])
        for issue in result.get('issues', []):
            print(f"{issue['key']}: {issue['fields']['summary']}")

    elif sys.argv[1] == "worklog":
        client.add_worklog(sys.argv[2], sys.argv[3], sys.argv[4])
        print(f"Worklog added to {sys.argv[2]}")

第四步:使用

现在在Antigravity里你可以说:

“查一下我手头所有In Progress的Jira ticket”

“给PROJ-123记2小时工时,备注写’完成了用户模块重构’”

“把PROJ-456的状态改成Done”

Agent会自动调用Jira API,你不用再打开那个慢吞吞的Jira界面了。

GitHub的集成类似,用PyGithub库或者直接用requests调GitHub API就行。你可以做个Skill自动创建PR、检查CI状态、甚至做代码审查。

连接私有知识库:NotebookLM + Antigravity

这是我最兴奋的部分。

XDA Developers上有个案例特别有意思:作者把项目文档喂给NotebookLM,然后让它生成技术规范,再把这些规范转换成Antigravity Skill。结果是Agent能基于项目文档直接写代码。

实现思路

NotebookLM有导出功能,可以把对话导出为结构化文档。我们可以:

  1. 在NotebookLM里创建项目知识库(设计文档、API规范、架构决策)
  2. 用NotebookLM的问答功能整理出”知识摘要”
  3. 把这些摘要转换成Skill的context或templates

或者更直接的,用MCP(Model Context Protocol)把NotebookLM连到Antigravity。

GitHub上有个开源项目notebooklm-antigravity-skill,通过nlm CLI实现了这个集成:

name: notebooklm-knowledge
description: Query project knowledge from NotebookLM
triggers:
  - 查文档
  - 看规范
  - 项目知识
actions:
  - name: query_knowledge
    description: Query NotebookLM for project-specific knowledge

配合脚本调用NotebookLM的API,Agent就能实时查询你的私有知识库了。

想象一下这个场景:

新人:“咱们项目的错误处理规范是什么?”
你:(在Antigravity里)“查一下NotebookLM里的错误处理规范”
Agent:“根据项目文档,错误处理规范如下:1. 使用自定义异常类… 2. 日志必须包含traceback… 3. 用户可见错误需要国际化…”

文档不再尘封,变成了Agent的”专业大脑”。

高级技巧:规则(Rules)与Skill的组合

除了Skills,Antigravity还有个”Rules”系统。两者结合威力更大。

Rules是全局或项目级别的行为约束,比如:

# .agent/rules/code-review.md

做代码审查时:
1. 检查是否有足够的单元测试覆盖
2. 确认没有硬编码的敏感信息
3. 验证错误处理是否完善
4. 检查是否符合团队的TypeScript规范

Rule定义”什么时候该怎么做”,Skill定义”具体怎么做”。

Atlassian的开发者在博客里分享了一个实战案例:他们给Antigravity定义了app-deployment规则,配合Jira Skills,实现了自动化的部署流程。

当Agent检测到代码合并到main分支时:

  1. Rule触发:“执行部署前检查”
  2. Skill调用:检查Jira上关联的ticket状态
  3. Skill调用:运行测试套件
  4. Skill调用:如果通过,更新Jira状态并记录部署日志

这套组合拳下来,原本需要人工操作十几个步骤的流程,现在一句话就能触发。

结语

说了这么多,核心就一句话:Skills让Antigravity从”通用工具”变成了”专业助手”

通用AI能写代码,但不懂你的业务。有了Skills,你可以把业务知识、团队规范、内部工具都植入Agent,让它真正成为团队的一员。

我从写第一个Git commit formatter开始,到现在团队已经积累了二十多个内部Skills。API文档查询、代码规范检查、Jira工单处理、甚至新员工 onboarding——这些重复劳动都慢慢交给了Agent。

不是说我们变懒了,是我们可以把精力放在更有价值的事情上。设计架构、解决难题、创造新产品——这些才是人该干的。重复性的知识查询和流程操作?让Agent来吧。

如果你也想试试,建议从一个小痛点开始。找出团队里那个被问过无数次的问题,或者那个每天要重复操作十次的流程,写一个Skill解决它。

你会发现,Agent不只是工具,它是团队的扩展。

而Skills,就是赋予它专业能力的钥匙。

常见问题

什么是Antigravity Skills,它和普通的AI Prompt有什么区别?
Antigravity Skills是一种轻量级、结构化的扩展格式,与普通Prompt的核心区别在于:

**Skills是持久的**:定义一次,可重复使用,Agent能自动识别触发条件
**Skills是可编程的**:可以包含Python/Shell脚本,调用外部API,实现复杂逻辑
**Skills是可共享的**:可以打包分享给团队成员,或开源给社区

普通Prompt是一次性的指令,而Skills是给Agent安装的"能力应用",让它在特定场景下表现得更专业。
编写Antigravity Skill需要什么技术基础?
基础要求不高:

**必备技能**:
• 基础YAML语法(Skill配置)
• Python或Shell脚本编写能力
• 了解API调用的基本概念

**进阶可选**:
• 外部API的认证机制(OAuth、API Token等)
• 错误处理和日志记录
• 正则表达式和文本处理

一个最简单的Skill只需要一个skill.yaml文件。建议从模仿官方示例开始,逐步添加复杂功能。
如何安全地管理API密钥等敏感信息?
推荐的安全实践:

**环境变量方式**(推荐):
• 在skill.yaml中不硬编码密钥
• 脚本中通过os.getenv()读取环境变量
• 用户使用前需要export设置环境变量

**配置文件方式**:
• 使用.gitignore排除配置文件
• 提供config.example.yaml模板
• Skill读取本地配置文件

**绝对不要**:
• 把密钥直接写在Skill脚本里
• 把包含密钥的Skill提交到公共仓库

良好的做法是在README中说明需要配置哪些环境变量。
Skill和Rule有什么区别,如何配合使用?
两者的核心区别:

**Rules(规则)**:
• 定义"什么时候该怎么做"的行为准则
• 是文本形式的约束和检查清单
• 影响Agent的决策逻辑

**Skills(技能)**:
• 定义"具体怎么做"的执行能力
• 包含可执行的脚本和配置
• 提供具体的工具和能力

**配合使用示例**:
• Rule:"代码审查时必须检查测试覆盖率"
• Skill:调用测试框架实际运行测试并生成报告

Rule做决策判断,Skill做具体执行,两者结合实现完整的自动化流程。
如何将NotebookLM的知识库集成到Antigravity?
两种集成方式:

**方式1:导出转换法**:
1. 在NotebookLM中整理项目知识
2. 导出对话或摘要为结构化文档
3. 转换为Skill的templates或context文件
4. Agent查询时引用这些内容

**方式2:MCP实时连接法**(需要nlm CLI):
• 安装notebooklm-mcp-cli工具
• 配置MCP服务器连接到NotebookLM
• 在Skill脚本中调用nlm命令实时查询
• Agent可以动态获取最新知识

GitHub上有开源项目notebooklm-antigravity-skill提供参考实现。

7 分钟阅读 · 发布于: 2026年2月27日 · 修改于: 2026年3月18日

评论

使用 GitHub 账号登录后即可评论

相关文章