Install
openclaw skills install inspirai-apispecAPI 规范管理工具 - 跨项目 API 文档的初始化、更新、查询与搜索。Triggers: 'API文档', 'API规范', '接口文档', '路由解析', 'apispec', 'API lookup', 'API search'.
openclaw skills install inspirai-apispec跨项目 API 文档的初始化、更新、查询与搜索。包含四个功能模块:init(初始化)、lookup(查询)、search(搜索)、update(更新)。
初始化当前后端项目的 API 文档配置,生成 .api-spec.yaml 文件。
apispec init
检查项目结构,识别后端框架:
# Go 项目
if [ -f "go.mod" ]; then
PROJECT_TYPE="go"
ROUTES_FILE=$(find . -name "routes.go" -o -name "router.go" | head -1)
fi
# Node.js 项目
if [ -f "package.json" ]; then
PROJECT_TYPE="node"
ROUTES_FILE=$(find . -name "routes.ts" -o -name "routes.js" -o -name "router.ts" | head -1)
fi
# Python 项目
if [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then
PROJECT_TYPE="python"
ROUTES_FILE=$(find . -name "urls.py" -o -name "routes.py" | head -1)
fi
使用 AskUserQuestion 工具询问以下信息(如果无法自动检测):
在项目根目录创建 .api-spec.yaml:
# API 规范配置
project_name: {project_name}
description: {description}
base_url: {base_url}
# API 规范仓库位置
spec_repo: ~/.apispec/registry
# 路由文件位置(用于解析 API)
routes_file: {routes_file}
# 项目类型
project_type: {go|node|python}
显示生成的配置文件内容,询问用户确认。
.api-spec.yaml 文件.api-spec.yaml 添加到 .gitignore(可选).api-spec.yaml 已存在,询问是否覆盖~/.apispec/registry查询项目的 API 文档,支持列出所有项目、查看项目 API 列表、查看具体 API 详情。
apispec lookup # 列出所有项目
apispec lookup {project} # 显示项目的所有 API
apispec lookup {project} {module} # 显示模块下的 API
apispec lookup {project} {module}/{api} # 显示具体 API 详情
apispec lookup # 列出所有项目
apispec lookup myapp # 显示 myapp 的所有 API
apispec lookup myapp auth # 显示 auth 模块的 API
apispec lookup myapp auth/sms-login # 显示 sms-login 的详细文档
默认路径:~/.apispec/registry
如果目录不存在,提示用户 clone 仓库:
mkdir -p ~/.apispec
git clone <your-api-specs-repo> ~/.apispec/registry
cd {spec_repo}
git pull origin main --quiet
无参数 - 列出所有项目:
读取 meta.yaml,格式化输出:
API Specifications Registry
Projects:
myapp 用户中心服务 - 认证、会员、支付 20 APIs
another-app 其他项目描述 12 APIs
一个参数 - 显示项目 API 列表:
读取 {project}/meta.yaml,格式化输出:
myapp - 用户中心服务
Base URL: https://api.example.com
Updated: 2026-01-22
APIs (20):
METHOD ENDPOINT AUTH SUMMARY
POST /api/v1/auth/sms/send - 发送短信验证码
POST /api/v1/auth/sms/login - 短信验证码登录
GET /api/v1/user/profile * 获取用户信息
PUT /api/v1/user/profile * 更新用户信息
* = 需要认证
两个参数(模块)- 显示模块 API:
筛选显示指定模块的 API。
完整路径 - 显示 API 详情:
读取 {project}/{module}/{api}.yaml,格式化输出完整的请求/响应信息。
git pull 获取最新文档apispec search 模糊查找跨项目模糊搜索 API 文档,支持按关键词、路径、方法、字段名等维度匹配。
apispec search {keyword} # 全局模糊搜索
apispec search --project {name} {keyword} # 在指定项目中搜索
apispec search --method POST {keyword} # 按 HTTP 方法过滤
apispec search --field {fieldname} # 按请求/响应字段名搜索
apispec search login # 搜索包含 "login" 的 API
apispec search 验证码 # 中文关键词搜索
apispec search --method POST user # 搜索 POST 方法中包含 "user" 的 API
apispec search --field token # 搜索请求或响应中包含 token 字段的 API
apispec search --project myapp auth # 在 myapp 项目中搜索 "auth"
默认路径:~/.apispec/registry
如果目录不存在,提示用户先执行 apispec init 并 clone 仓库。
cd {spec_repo}
git pull origin main --quiet
搜索范围(按优先级):
搜索逻辑:
# 遍历所有项目的 meta.yaml 和 API 文件
for project_dir in {spec_repo}/*/; do
# 读取 meta.yaml 中的 API 列表快速匹配
# 如果 meta 匹配不够,深入读取具体 API 文件
done
支持多关键词(AND 逻辑):
apispec search POST login # 匹配同时包含 POST 和 login 的 API
匹配结果格式:
搜索 "login" - 找到 3 个匹配:
METHOD PROJECT ENDPOINT SUMMARY
POST myapp /api/v1/auth/sms/login 短信验证码登录
POST myapp /api/v1/auth/wechat/login 微信登录
POST another-app /api/v1/login 密码登录
提示:使用 apispec lookup myapp auth/sms-login 查看详情
无匹配时:
搜索 "xyz" - 未找到匹配的 API
建议:
- 尝试更短的关键词
- 使用 apispec lookup 浏览项目列表
- 检查拼写是否正确
字段搜索结果:
搜索字段 "token" - 找到 5 个匹配:
METHOD PROJECT ENDPOINT 字段位置 字段类型
POST myapp /api/v1/auth/sms/login response string
POST myapp /api/v1/auth/wechat/login response string
POST myapp /api/v1/auth/refresh request string
GET myapp /api/v1/user/profile request.header string
DELETE myapp /api/v1/auth/logout request.header string
提示:使用 apispec lookup myapp auth/sms-login 查看完整 API 定义
git pull 获取最新文档解析当前项目的路由和 handler,生成/更新 API 文档到规范仓库。
apispec update # 更新所有 API
apispec update auth # 只更新 auth 模块
apispec init,存在 .api-spec.yaml 配置文件if [ ! -f ".api-spec.yaml" ]; then
echo "错误:未找到 .api-spec.yaml,请先执行 apispec init"
exit 1
fi
根据项目类型解析路由:
Go 项目:
routes.go 中的 mux.HandleFunc 和 mux.Handle 调用Node.js 项目:
router.get/post/put/delete 调用Python 项目:
urlpatterns 或 Flask/FastAPI 路由装饰器为每个 API 生成 YAML 文件:
{spec_repo}/{project_name}/
├── meta.yaml # 项目索引
├── auth/
│ ├── sms-send.yaml
│ └── sms-login.yaml
├── user/
│ └── get-profile.yaml
└── ...
meta.yaml 格式:
project: {project_name}
description: {description}
base_url: {base_url}
updated_at: {timestamp}
apis:
- path: auth/sms-send
method: POST
endpoint: /api/v1/auth/sms/send
auth: false
summary: 发送短信验证码
单个 API 文件格式:
endpoint: /api/v1/auth/sms/login
method: POST
summary: 短信验证码登录
auth: false
description: 使用手机号和短信验证码登录
request:
content_type: application/json
fields:
- name: phone
type: string
required: true
description: 手机号
response:
success:
status: 200
fields:
- name: token
type: string
description: JWT token
errors:
- status: 400
error: invalid_code
description: 验证码错误
更新 {spec_repo}/meta.yaml:
projects:
{project_name}:
description: {description}
base_url: {base_url}
api_count: {count}
updated_at: {timestamp}
cd {spec_repo}
git add -A
git commit -m "docs: update {project_name} API specs"
git push origin main
{spec_repo}/{project_name}/ 目录下的所有 API 文档