openclaw 网盘下载
OpenClaw

技能详情(站内镜像,无评论)

首页 > 技能库 > InspirAI API Spec

API 规范管理工具 - 跨项目 API 文档的初始化、更新、查询与搜索。Triggers: 'API文档', 'API规范', '接口文档', '路由解析', 'apispec', 'API lookup', 'API search'.

开发与 DevOps

作者:alexxiong @alexxxiong

许可证:MIT-0

MIT-0 ·免费使用、修改和重新分发。无需归因。

版本:v1.0.0

统计:⭐ 0 · 80 · 1 current installs · 1 all-time installs

0

安装量(当前) 1

🛡 VirusTotal :可疑 · OpenClaw :可疑

Package:alexxxiong/inspirai-apispec

安全扫描(ClawHub)

  • VirusTotal :可疑
  • OpenClaw :可疑

OpenClaw 评估

The skill's described functionality (managing local API spec files and a local registry) is coherent, but the runtime instructions perform filesystem and git operations while the manifest omits required binaries/credentials and does not explicitly acknowledge use of the user's git credentials or home directory—this mismatch warrants caution.

目的

The skill's name and description match the instructions: init/lookup/search/update for an API-spec registry. However, the SKILL.md instructs use of shell utilities (git clone, git pull, find, creating files under ~/.apispec) while the skill's manifest lists no required binaries or config paths. At minimum, 'git' and common shell tools should be declared. The intent is plausible, but the manifest omission is an inconsistency.

说明范围

Runtime instructions read project source files (routes, router files), create and modify files (e.g., .api-spec.yaml, optional .gitignore entries), and operate on a spec repo under ~/.apispec/registry (git clone/pull). The skill may iterate over all projects in the registry and read YAML/API files. The update flow (truncated in the provided content) likely includes writing spec files and performing git commits/pushes. Those actions give the sk…

安装机制

Instruction-only skill with no install spec and no code files. That minimizes install-time risk since nothing is downloaded or written by an installer. Runtime file and git operations remain the primary risk surface.

证书

The manifest declares no required environment variables or credentials, yet the instructions implicitly rely on the user's git configuration/credentials (SSH keys, credential helpers) and access to the home directory (~/.apispec/registry). The skill will therefore use whatever git auth is configured on the host without declaring it. This is reasonable functionally, but the lack of explicit declaration is a proportionality/visibility issue: the…

持久

The skill is not always-enabled and is user-invocable; autonomous invocation is allowed (platform default). The instructions write files to project roots and to ~/.apispec/registry and may perform git commits/pushes, so installed runs can have persistent effects. This is expected for an 'update' capability but increases blast radius if allowed to run autonomously—consider limiting autonomous invocation or requiring explicit user confirmation f…

安装(复制给龙虾 AI)

将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。

请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「InspirAI API Spec」。简介:API 规范管理工具 - 跨项目 API 文档的初始化、更新、查询与搜索。Triggers: 'API文档', 'API规范', '接口文档', '路由解析'…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/alexxxiong/inspirai-apispec/SKILL.md
(来源:yingzhi8.cn 技能库)

SKILL.md

打开原始 SKILL.md(GitHub raw)

---
name: inspirai-apispec
description: "API 规范管理工具 - 跨项目 API 文档的初始化、更新、查询与搜索。Triggers: 'API文档', 'API规范', '接口文档', '路由解析', 'apispec', 'API lookup', 'API search'."
version: 1.0.0
license: MIT
---

# API 规范管理工具

跨项目 API 文档的初始化、更新、查询与搜索。包含四个功能模块:init(初始化)、lookup(查询)、search(搜索)、update(更新)。

---

## 1. Init - 初始化项目 API 文档配置

初始化当前后端项目的 API 文档配置,生成 `.api-spec.yaml` 文件。

### 使用方式

```
apispec init
```

### 执行步骤

#### Step 1: 检测项目类型

检查项目结构,识别后端框架:

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

#### Step 2: 收集项目信息

使用 AskUserQuestion 工具询问以下信息(如果无法自动检测):

1. **项目名称** - 用于在 API 规范仓库中创建目录
2. **Base URL** - 生产环境的 API 地址
3. **路由文件位置** - 如果自动检测不准确

#### Step 3: 生成配置文件

在项目根目录创建 `.api-spec.yaml`:

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

#### Step 4: 确认配置

显示生成的配置文件内容,询问用户确认。

### 输出

- 在项目根目录创建 `.api-spec.yaml` 文件
- 将 `.api-spec.yaml` 添加到 `.gitignore`(可选)

### 注意事项

- 如果 `.api-spec.yaml` 已存在,询问是否覆盖
- spec_repo 默认为 `~/.apispec/registry`
- 需确保 API specs 仓库已 clone 到该目录

---

## 2. Lookup - 查询 API 文档

查询项目的 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 的详细文档
```

### 执行步骤

#### Step 1: 定位规范仓库

默认路径:`~/.apispec/registry`

如果目录不存在,提示用户 clone 仓库:
```bash
mkdir -p ~/.apispec
git clone <your-api-specs-repo> ~/.apispec/registry
```

#### Step 2: 拉取最新

```bash
cd {spec_repo}
git pull origin main --quiet
```

#### Step 3: 根据参数查询

**无参数 - 列出所有项目:**

读取 `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`,格式化输出完整的请求/响应信息。

### 输出格式

- 简洁的文本格式,便于快速理解
- 字段对齐,易于阅读
- 只显示必要信息,减少 token 消耗

### 注意事项

- 每次查询前自动 `git pull` 获取最新文档
- 如果项目或 API 不存在,给出友好提示并建议使用 `apispec search` 模糊查找

---

## 3. Search - 模糊搜索 API 文档

跨项目模糊搜索 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"
```

### 执行步骤

#### Step 1: 定位规范仓库

默认路径:`~/.apispec/registry`

如果目录不存在,提示用户先执行 `apispec init` 并 clone 仓库。

#### Step 2: 拉取最新

```bash
cd {spec_repo}
git pull origin main --quiet
```

#### Step 3: 搜索匹配

搜索范围(按优先级):

1. **endpoint 路径** - URL 路径中包含关键词
2. **summary/description** - API 描述中包含关键词
3. **请求/响应字段名** - field name 匹配
4. **模块/文件名** - 目录或文件名匹配

搜索逻辑:
```bash
# 遍历所有项目的 meta.yaml 和 API 文件
for project_dir in {spec_repo}/*/; do
    # 读取 meta.yaml 中的 API 列表快速匹配
    # 如果 meta 匹配不够,深入读取具体 API 文件
done
```

支持多关键词(AND 逻辑):
```
apispec search POST login    # 匹配同时包含 POST 和 login 的 API
```

#### Step 4: 格式化输出

**匹配结果格式:**

```
搜索 "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 定义
```

### 注意事项

- 搜索不区分大小写
- 支持中英文关键词
- 结果按相关度排序(endpoint 匹配 > summary 匹配 > field 匹配)
- 最多显示 20 条结果,超出时提示缩小搜索范围
- 每次搜索前自动 `git pull` 获取最新文档

---

## 4. Update - 更新 API 文档

解析当前项目的路由和 handler,生成/更新 API 文档到规范仓库。

### 使用方式

```
apispec update              # 更新所有 API
apispec update auth         # 只更新 auth 模块
```

### 前置条件

- 项目已执行 `apispec init`,存在 `.api-spec.yaml` 配置文件
- API specs 仓库已 clone 到本地

### 执行步骤

#### Step 1: 读取配置

```bash
if [ ! -f ".api-spec.yaml" ]; then
    echo "错误:未找到 .api-spec.yaml,请先执行 apispec init"
    exit 1
fi
```

#### Step 2: 解析路由文件

根据项目类型解析路由:

**Go 项目:**
- 解析 `routes.go` 中的 `mux.HandleFunc` 和 `mux.Handle` 调用
- 提取 HTTP 方法、路径、handler 函数名
- 读取对应的 handler 文件,提取请求/响应结构体

**Node.js 项目:**
- 解析 `router.get/post/put/delete` 调用
- 提取路由和 handler

**Python 项目:**
- 解析 `urlpatterns` 或 Flask/FastAPI 路由装饰器

#### Step 3: 生成 API 文档

为每个 API 生成 YAML 文件:

```
{spec_repo}/{project_name}/
├── meta.yaml           # 项目索引
├── auth/
│   ├── sms-send.yaml
│   └── sms-login.yaml
├── user/
│   └── get-profile.yaml
└── ...
```

**meta.yaml 格式:**
```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 文件格式:**
```yaml
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: 验证码错误
```

#### Step 4: 更新全局索引

更新 `{spec_repo}/meta.yaml`:

```yaml
projects:
  {project_name}:
    description: {description}
    base_url: {base_url}
    api_count: {count}
    updated_at: {timestamp}
```

#### Step 5: 提交并推送

```bash
cd {spec_repo}
git add -A
git commit -m "docs: update {project_name} API specs"
git push origin main
```

### 输出

- 更新 `{spec_repo}/{project_name}/` 目录下的所有 API 文档
- 自动 commit 并 push 到远程仓库
- 显示更新摘要(新增/修改/删除的 API 数量)