api-docs
Skill341 starsChanged 6 months agoMITView on GitHub
文档自动生成
Files
我是 API 文档自动生成技能,专门从 xiaozhi-client 项目的源代码中提取 API 信息,生成符合 Nextra (Next.js) 标准的 MDX 文档,同时遵循务实开发理念。
技能使用原则
- 保持文档质量,但避免过度复杂:生成清晰有用的文档,但不追求完美的文档结构
- 实用功能优先,理论完美次之:解决实际的文档需求比完美的文档设计更重要
- 简单解决方案优于复杂方案:优先选择直接有效的文档生成方式
- 务实开发指导:评估文档的必要性,避免为了文档而文档
技能能力
1. 源代码分析
深度解析 TypeScript/JavaScript 源代码,提取 API 相关信息:
支持的代码元素
- 类和方法:使用
@Tool装饰器的方法 - 函数接口:纯函数和工具方法
- 类型定义:接口、类型别名、枚举
- 参数信息:使用
@Param装饰器的参数定义 - 注释文档:JSDoc 格式的代码注释
解析能力
// 示例源代码
@Tool("控制灯光设备 - 支持通过名称控制灯光设备的开关、亮度和色温")
public async LightControl(
@Param(z.string().describe("灯光设备名称"))
name: string,
@Param(z.enum(["turn_on", "turn_off"]).describe("控制动作"))
action: "turn_on" | "turn_off",
@Param(z.number().min(1).max(100).optional().describe("亮度百分比"))
brightnessPct?: number
) {
// 实现逻辑...
}
// 提取的信息
{
name: "LightControl",
description: "控制灯光设备 - 支持通过名称控制灯光设备的开关、亮度和色温",
parameters: [
{
name: "name",
type: "string",
description: "灯光设备名称",
required: true
},
{
name: "action",
type: "turn_on | turn_off",
description: "控制动作",
required: true
},
{
name: "brightnessPct",
type: "number",
description: "亮度百分比",
required: false,
constraints: { min: 1, max: 100 }
}
]
}2. MDX 文档生成
基于提取的信息生成符合 xiaozhi-client 项目标准的 Nextra MDX 文档。
文档结构模板
# {ToolName}
## 工具介绍
{工具描述}
## 参数定义
| 参数 | 类型 | 范围 | 说明 |
|------|------|------|------|
{参数表格}
## 使用示例
### 基础用法
{基础示例代码}
### 高级功能
{高级示例代码}
## 错误信息
| 错误类型 | 错误信息 | 处理建议 |
|----------|----------|----------|
{错误表格}
## 返回值格式
### 成功响应
{成功响应示例}
### 错误响应
{错误响应示例}3. 类型信息集成
从类型定义文件中提取相关类型信息,增强文档的完整性。
类型文档化
// 源类型定义
export interface LightControlParams {
entity_id: string;
action: LightActionType;
brightness?: number;
transition?: number;
}
export type LightActionType = "turn_on" | "turn_off" | "toggle";
// 生成的类型文档
### LightControlParams
灯光控制参数接口
| 属性 | 类型 | 必需 | 说明 |
|------|------|------|------|
| entity_id | string | 是 | 灯光设备实体ID |
| action | LightActionType | 是 | 控制动作类型 |
| brightness | number | 否 | 亮度百分比 (1-100) |
| transition | number | 否 | 渐变时间(秒) |
### LightActionType
灯光控制动作类型
**可选值:**
- `"turn_on"` - 开灯
- `"turn_off"` - 关灯
- `"toggle"` - 切换开关状态4. 示例代码生成
基于 API 定义生成实际可运行的示例代码。
代码示例模板
// 基础示例
// 开启客厅主灯
LightControl("客厅主灯", "turn_on");
// 高级示例
// 开启灯光并设置亮度和渐变效果
LightControl("客厅主灯", "turn_on", 80, undefined, 2);
// 错误处理示例
try {
const result = await LightControl("不存在的设备", "turn_on");
console.log("操作成功:", result);
} catch (error) {
console.error("操作失败:", error.message);
}解析规则
1. 装饰器解析
// @Tool 装饰器解析
@Tool(description: string)
// 提取:工具描述信息
// @Param 装饰器解析
@Param(zSchema, description: string)
// 提取:参数类型、验证规则、描述信息2. JSDoc 注释解析
/**
* 通过名称控制灯光设备
* @param name 灯光设备名称
* @param action 控制动作 枚举值:turn_on | turn_off
* @param brightnessPct 亮度百分比 (1-100),可选参数
* @returns Promise<LightControlResult> 控制结果
* @example
* ```typescript
* LightControl("书房小灯", "turn_on", 80);
* ```
*/
// 提取:功能描述、参数说明、返回值、使用示例3. 路径别名解析
// 支持 xiaozhi-client 项目的复杂路径别名系统
import { UnifiedMCPServer } from "@core/unified-server";
import { StartCommand } from "@cli/commands/start";
import { WebSocketAdapter } from "@transports/websocket";
import type { XiaozhiConfig } from "@/types";
// 提取:模块路径信息,用于生成导航和链接
// 支持:@cli/*, @core/*, @transports/*, @managers/*, @services/*, @types/*, @utils/*4. 类型定义解析
// 接口定义
export interface LightControlResult {
success: boolean;
entity_id: string;
action: string;
changed_states?: HassState[];
errors?: string[];
}
// 枚举定义
export enum LightActionType {
TURN_ON = "turn_on",
TURN_OFF = "turn_off"
}
// 类型别名
export type DeviceState = "on" | "off" | "unavailable";
// 提取:完整的类型信息和文档生成流程
1. 源码扫描
interface ScanOptions {
include: string[]; // 包含的文件模式
exclude: string[]; // 排除的文件模式
tools: boolean; // 是否扫描工具方法
types: boolean; // 是否扫描类型定义
examples: boolean; // 是否生成示例
}
const scanResult = scanSourceCode(options);2. 信息提取
interface ExtractedInfo {
tools: ToolInfo[];
types: TypeInfo[];
examples: ExampleInfo[];
relationships: RelationshipInfo[];
}
const extractedInfo = extractApiInfo(scanResult);3. 文档生成
interface GenerationOptions {
template: string; // 文档模板路径
output: string; // 输出目录
format: 'mdx' | 'md'; // 输出格式
navigation: boolean; // 是否更新导航
}
const generatedDocs = generateDocumentation(extractedInfo, options);4. 导航更新
// 自动更新 meta.json 文件(Nextra 导航配置)
function updateNavigation(docs: GeneratedDoc[]): void {
const metaJsonPath = 'docs/meta.json';
const currentConfig = readFileSync(metaJsonPath, 'utf8');
const updatedConfig = insertIntoNavigation(currentConfig, docs);
writeFileSync(metaJsonPath, updatedConfig);
}
function insertIntoNavigation(config: string, docs: GeneratedDoc[]): string {
const parsed = JSON.parse(config);
// 根据文档类型插入到合适的导航位置
// MCP 工具文档 -> 使用指南,API 参考 -> 开发指南
return JSON.stringify(parsed, null, 2);
}模板系统
1. 工具文档模板
# {{toolName}}
## 工具介绍
{{description}}
## 参数定义
| 参数 | 类型 | 范围 | 说明 |
|------|------|------|------|
{{#each parameters}}
| {{name}} | {{type}} | {{constraints}} | {{description}} |
{{/each}}
## 使用示例
{{#each examples}}
### {{title}}
```typescript
{{code}}{{/each}}
{{#if errors}}
错误信息
| 错误类型 | 错误信息 | 处理建议 |
| {{#each errors}} | ||
| {{type}} | {{message}} | {{suggestion}} |
| {{/each}} | ||
| {{/if}} |
### 2. 类型文档模板
```handlebars
## {{typeName}}
{{description}}
{{#if properties}}
### 属性
| 属性 | 类型 | 必需 | 说明 |
|------|------|------|------|
{{#each properties}}
| {{name}} | {{type}} | {{required}} | {{description}} |
{{/each}}
{{/if}}
{{#if values}}
### 可选值
{{#each values}}
- `{{value}}` - {{description}}
{{/each}}
{{/if}}3. 示例代码模板
// 基础用法示例
function generateBasicExample(tool: ToolInfo): string {
const requiredParams = tool.parameters.filter(p => p.required);
const paramValues = requiredParams.map(p => getExampleValue(p));
return `${tool.name}(${paramValues.join(', ')});`;
}
// 完整功能示例
function generateAdvancedExample(tool: ToolInfo): string {
const allParams = tool.parameters;
const paramValues = allParams.map(p => getExampleValue(p));
return `const result = await ${tool.name}(${paramValues.join(', ')});\n` +
`console.log('操作结果:', result);`;
}配置选项
1. 全局配置
interface ApiDocConfig {
input: {
sourceDir: string; // 源码目录
patterns: string[]; // 文件匹配模式
};
output: {
docsDir: string; // 文档输出目录
format: 'mdx' | 'md'; // 输出格式
templateDir?: string; // 自定义模板目录
};
generation: {
includeExamples: boolean; // 是否生成示例
includeTypes: boolean; // 是否包含类型文档
updateNavigation: boolean; // 是否更新导航
};
formatting: {
codeTheme: string; // 代码主题
tableStyle: 'github' | 'gitlab'; // 表格样式
useEmojis: boolean; // 是否使用表情符号
};
}2. 工具特定配置
interface ToolConfig {
name: string;
category: string;
tags: string[];
examples: ExampleConfig[];
relatedTools: string[];
deprecated?: boolean;
experimental?: boolean;
}质量保证
1. 文档验证
interface ValidationResult {
valid: boolean;
errors: ValidationError[];
warnings: ValidationWarning[];
score: number; // 0-100 文档质量评分
}
function validateDocumentation(docs: GeneratedDoc[]): ValidationResult {
// 检查文档完整性
// 验证链接有效性
// 检查代码示例正确性
// 评估文档质量
}2. 自动化测试
// 测试生成的示例代码
async function testExamples(examples: CodeExample[]): Promise<TestResult[]> {
const results = [];
for (const example of examples) {
try {
const result = await executeExample(example);
results.push({ example, success: true, result });
} catch (error) {
results.push({ example, success: false, error });
}
}
return results;
}3. 持续同步
// 监听源码变化,自动更新文档
function setupDocumentationSync(): void {
watch(sourceFiles, (filePath) => {
const changes = detectChanges(filePath);
if (changes.affectsApi) {
regenerateDocumentation(changes);
}
});
}集成方式
1. CLI 命令
# 生成所有API文档
api-docs generate
# 生成特定工具的文档
api-docs generate --tool LightControl
# 监听模式,自动更新
api-docs generate --watch
# 验证文档质量
api-docs validate
# 生成覆盖率报告
api-docs coverage2. 构建集成
{
"scripts": {
"docs:generate": "api-docs generate",
"docs:validate": "api-docs validate",
"docs:watch": "api-docs generate --watch"
}
}3. CI/CD 集成
# GitHub Actions 示例
- name: Generate API Documentation
run: |
api-docs generate
api-docs validate
- name: Deploy Documentation
run: |
# 部署生成的文档到文档站点最佳实践
1. 文档编写规范
- 使用清晰简洁的描述
- 提供完整的使用示例
- 包含错误处理说明
- 保持文档与代码同步
2. 示例代码要求
- 代码必须可运行
- 包含常见使用场景
- 展示最佳实践
- 有适当的错误处理
3. 版本管理
- 记录API变更历史
- 标记废弃功能
- 提供迁移指南
- 维护向后兼容性
通过这个技能,可以确保 xiaozhi-client 项目的 API 文档始终保持最新、准确和高质量,提升开发者体验和项目可维护性。特别适配 Nextra (Next.js) 文档系统和项目的复杂路径别名结构。
Nextra 特定说明
导航配置
- 使用
docs/meta.json管理文档导航结构 - 支持多层级嵌套和分组
- 自动根据文件路径生成导航树
文档放置
- MCP 工具文档:
docs/content/guides/mcp-tools/*.mdx - API 参考文档:
docs/content/api/reference/*.mdx - 开发指南:
docs/content/development/*.mdx
Front Matter 支持
---
title: 工具名称
description: 工具描述
---Other versions16 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 16
- mono/SkiaSharp★ 5.6ksame name
- langchain-ai/skills-benchmarks★ 116same name
- ainurdev/mystical-assistant★ 6same name
- marttp/my_agent_skills_I_use★ 4same name
- francogalfre/skills★ 3same name
- neronain/ClaudeSkills-Neronain★ 3same name
- peopleforrester/claude-dotfiles★ 3same name
- Pradnyeshp/Claude-Skills★ 2same name
- AstyanM/claude-am-plugin★ 1same name
- JeffreyFerreiras/ai-skills★ 1same name
6 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use changelog, code-review and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
HashiCorpSkillchangelog
Add a `.changelog/<PR_NUMBER>.txt` entry for a GitHub Pull Request, commit, and push.
Also in 4 projects that use this
GoogleSkillcode-review
Adversarial systems, concurrency, memory-model, and architecture code review protocol. Use this skill whenever asked to review code, PRs, diffs, or branches in Filament.
Also in 4 projects that use this
BlockSkillfrontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Also in 3 projects that use this
In this repository25 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- ci-validatorSkill
- commit-push-prSkill
- commitSkill
- dev-workflow-checkerSkill
- docs-creatorSkill
- docs-updaterSkill
- e2e-coverage-analyzerSkill
- fix-any-typesSkill
- fix-commentSkill
- gen-analyzeSkill
- gen-techSkill
- issue-hunterSkill
- localization-validatorSkill
- path-alias-validatorSkill
- playwright-cliSkill
- practical-development-validatorSkill
- security-auditSkill
- test-cleanerSkill
- test-creatorSkill
- test-fixerSkill
- todo-managerSkill
- type-validatorSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

