赋予智能体"专业大脑":如何为 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有导出功能,可以把对话导出为结构化文档。我们可以:
- 在NotebookLM里创建项目知识库(设计文档、API规范、架构决策)
- 用NotebookLM的问答功能整理出”知识摘要”
- 把这些摘要转换成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分支时:
- Rule触发:“执行部署前检查”
- Skill调用:检查Jira上关联的ticket状态
- Skill调用:运行测试套件
- Skill调用:如果通过,更新Jira状态并记录部署日志
这套组合拳下来,原本需要人工操作十几个步骤的流程,现在一句话就能触发。
结语
说了这么多,核心就一句话:Skills让Antigravity从”通用工具”变成了”专业助手”。
通用AI能写代码,但不懂你的业务。有了Skills,你可以把业务知识、团队规范、内部工具都植入Agent,让它真正成为团队的一员。
我从写第一个Git commit formatter开始,到现在团队已经积累了二十多个内部Skills。API文档查询、代码规范检查、Jira工单处理、甚至新员工 onboarding——这些重复劳动都慢慢交给了Agent。
不是说我们变懒了,是我们可以把精力放在更有价值的事情上。设计架构、解决难题、创造新产品——这些才是人该干的。重复性的知识查询和流程操作?让Agent来吧。
如果你也想试试,建议从一个小痛点开始。找出团队里那个被问过无数次的问题,或者那个每天要重复操作十次的流程,写一个Skill解决它。
你会发现,Agent不只是工具,它是团队的扩展。
而Skills,就是赋予它专业能力的钥匙。
常见问题
什么是Antigravity Skills,它和普通的AI 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日
相关文章
OpenClaw 2026.3 实战进阶:新版本核心功能与最佳实践
OpenClaw 2026.3 实战进阶:新版本核心功能与最佳实践
OpenClaw 实战完全手册:从入门到精通
OpenClaw 实战完全手册:从入门到精通
不做单一模型的囚徒:在 Antigravity 中灵活切换 Gemini 3、Claude 4.5 与 GPT-OSS

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