ccjk 1.5.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +249 -297
- package/README.ko.md +241 -290
- package/README.md +222 -364
- package/README.zh-CN.md +553 -295
- package/dist/chunks/claude-code-config-manager.mjs +7 -7
- package/dist/chunks/claude-code-incremental-manager.mjs +1 -1
- package/dist/chunks/codex-config-switch.mjs +3 -3
- package/dist/chunks/codex-provider-manager.mjs +1 -1
- package/dist/chunks/codex-uninstaller.mjs +2 -2
- package/dist/chunks/commands.mjs +1 -1
- package/dist/chunks/features.mjs +10 -10
- package/dist/chunks/simple-config.mjs +321 -389
- package/dist/chunks/smart-guide.mjs +234 -0
- package/dist/cli.mjs +1795 -433
- package/dist/i18n/locales/en/configuration.json +12 -1
- package/dist/i18n/locales/en/marketplace.json +84 -0
- package/dist/i18n/locales/en/menu.json +38 -1
- package/dist/i18n/locales/en/skills.json +140 -0
- package/dist/i18n/locales/en/smartGuide.json +49 -0
- package/dist/i18n/locales/en/subagent.json +69 -0
- package/dist/i18n/locales/en/superpowers.json +58 -0
- package/dist/i18n/locales/zh-CN/configuration.json +12 -1
- package/dist/i18n/locales/zh-CN/marketplace.json +84 -0
- package/dist/i18n/locales/zh-CN/menu.json +38 -1
- package/dist/i18n/locales/zh-CN/skills.json +140 -0
- package/dist/i18n/locales/zh-CN/smartGuide.json +49 -0
- package/dist/i18n/locales/zh-CN/subagent.json +69 -0
- package/dist/i18n/locales/zh-CN/superpowers.json +58 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +366 -7
- package/package.json +26 -27
- package/templates/common/skills/en/brainstorming.md +64 -0
- package/templates/common/skills/en/code-review.md +81 -0
- package/templates/common/skills/en/documentation-gen.md +808 -0
- package/templates/common/skills/en/executing-plans.md +75 -0
- package/templates/common/skills/en/git-commit.md +216 -0
- package/templates/common/skills/en/interview.md +223 -0
- package/templates/common/skills/en/migration-assistant.md +312 -0
- package/templates/common/skills/en/performance-profiling.md +576 -0
- package/templates/common/skills/en/pr-review.md +341 -0
- package/templates/common/skills/en/refactoring.md +384 -0
- package/templates/common/skills/en/security-audit.md +462 -0
- package/templates/common/skills/en/systematic-debugging.md +82 -0
- package/templates/common/skills/en/tdd-workflow.md +93 -0
- package/templates/common/skills/en/verification.md +81 -0
- package/templates/common/skills/en/workflow.md +370 -0
- package/templates/common/skills/en/writing-plans.md +78 -0
- package/templates/common/skills/zh-CN/documentation-gen.md +807 -0
- package/templates/common/skills/zh-CN/migration-assistant.md +318 -0
- package/templates/common/skills/zh-CN/performance-profiling.md +746 -0
- package/templates/common/skills/zh-CN/pr-review.md +341 -0
- package/templates/common/skills/zh-CN/refactoring.md +384 -0
- package/templates/common/skills/zh-CN/security-audit.md +462 -0
- package/templates/common/smart-guide/en/smart-guide.md +72 -0
- package/templates/common/smart-guide/zh-CN/smart-guide.md +72 -0
|
@@ -0,0 +1,807 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: documentation-gen
|
|
3
|
+
description: 代码和 API 的自动文档生成
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: CCJK
|
|
6
|
+
category: docs
|
|
7
|
+
triggers:
|
|
8
|
+
- /docs
|
|
9
|
+
- /doc
|
|
10
|
+
- /document
|
|
11
|
+
- /readme
|
|
12
|
+
use_when:
|
|
13
|
+
- "用户想要生成文档"
|
|
14
|
+
- "代码需要文档"
|
|
15
|
+
- "用户提到 README 或文档"
|
|
16
|
+
- "需要 API 文档"
|
|
17
|
+
auto_activate: true
|
|
18
|
+
priority: 6
|
|
19
|
+
difficulty: beginner
|
|
20
|
+
tags:
|
|
21
|
+
- documentation
|
|
22
|
+
- readme
|
|
23
|
+
- api-docs
|
|
24
|
+
- jsdoc
|
|
25
|
+
allowed-tools:
|
|
26
|
+
- Read
|
|
27
|
+
- Write
|
|
28
|
+
- Grep
|
|
29
|
+
- Glob
|
|
30
|
+
- LSP
|
|
31
|
+
context: inherit
|
|
32
|
+
user-invocable: true
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# 文档生成技能
|
|
36
|
+
|
|
37
|
+
## 概述
|
|
38
|
+
|
|
39
|
+
此技能为代码、API 和项目提供全面的文档生成能力。它帮助创建清晰、可维护的文档,遵循行业最佳实践。
|
|
40
|
+
|
|
41
|
+
## 文档类型
|
|
42
|
+
|
|
43
|
+
### 1. README.md 生成
|
|
44
|
+
|
|
45
|
+
生成全面的项目 README 文件,包含:
|
|
46
|
+
|
|
47
|
+
- **项目概述**: 清晰描述项目功能
|
|
48
|
+
- **安装说明**: 分步设置指南
|
|
49
|
+
- **使用示例**: 实用代码示例
|
|
50
|
+
- **API 参考**: 主要 API 的快速参考
|
|
51
|
+
- **贡献指南**: 如何为项目做贡献
|
|
52
|
+
- **许可证信息**: 项目许可详情
|
|
53
|
+
|
|
54
|
+
**示例结构**:
|
|
55
|
+
```markdown
|
|
56
|
+
# 项目名称
|
|
57
|
+
|
|
58
|
+
项目的简要描述。
|
|
59
|
+
|
|
60
|
+
## 特性
|
|
61
|
+
|
|
62
|
+
- 特性 1
|
|
63
|
+
- 特性 2
|
|
64
|
+
- 特性 3
|
|
65
|
+
|
|
66
|
+
## 安装
|
|
67
|
+
|
|
68
|
+
\`\`\`bash
|
|
69
|
+
npm install project-name
|
|
70
|
+
\`\`\`
|
|
71
|
+
|
|
72
|
+
## 使用
|
|
73
|
+
|
|
74
|
+
\`\`\`javascript
|
|
75
|
+
import { feature } from 'project-name';
|
|
76
|
+
|
|
77
|
+
feature.doSomething();
|
|
78
|
+
\`\`\`
|
|
79
|
+
|
|
80
|
+
## API 参考
|
|
81
|
+
|
|
82
|
+
### `feature.doSomething(options)`
|
|
83
|
+
|
|
84
|
+
方法的描述。
|
|
85
|
+
|
|
86
|
+
**参数:**
|
|
87
|
+
- `options` (Object): 配置选项
|
|
88
|
+
|
|
89
|
+
**返回值:** 返回值的描述
|
|
90
|
+
|
|
91
|
+
## 贡献
|
|
92
|
+
|
|
93
|
+
请阅读 CONTRIBUTING.md 了解详情。
|
|
94
|
+
|
|
95
|
+
## 许可证
|
|
96
|
+
|
|
97
|
+
MIT 许可证 - 详见 LICENSE 文件。
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 2. API 文档
|
|
101
|
+
|
|
102
|
+
生成详细的 API 文档,包括:
|
|
103
|
+
|
|
104
|
+
- **端点描述**: 每个端点的清晰说明
|
|
105
|
+
- **请求/响应示例**: 示例请求和响应
|
|
106
|
+
- **参数文档**: 所有参数及其类型和描述
|
|
107
|
+
- **错误代码**: 可能的错误响应
|
|
108
|
+
- **身份验证**: 认证要求和方法
|
|
109
|
+
|
|
110
|
+
**REST API 示例**:
|
|
111
|
+
```markdown
|
|
112
|
+
## GET /api/users/:id
|
|
113
|
+
|
|
114
|
+
通过 ID 检索用户。
|
|
115
|
+
|
|
116
|
+
**参数:**
|
|
117
|
+
- `id` (string, 必需): 用户 ID
|
|
118
|
+
|
|
119
|
+
**响应:**
|
|
120
|
+
\`\`\`json
|
|
121
|
+
{
|
|
122
|
+
"id": "123",
|
|
123
|
+
"name": "张三",
|
|
124
|
+
"email": "zhangsan@example.com"
|
|
125
|
+
}
|
|
126
|
+
\`\`\`
|
|
127
|
+
|
|
128
|
+
**错误响应:**
|
|
129
|
+
- `404 Not Found`: 用户不存在
|
|
130
|
+
- `401 Unauthorized`: 无效的身份验证令牌
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 3. JSDoc/TSDoc 注释
|
|
134
|
+
|
|
135
|
+
生成内联代码文档:
|
|
136
|
+
|
|
137
|
+
**函数文档**:
|
|
138
|
+
```typescript
|
|
139
|
+
/**
|
|
140
|
+
* 计算两个数字的和。
|
|
141
|
+
*
|
|
142
|
+
* @param a - 第一个数字
|
|
143
|
+
* @param b - 第二个数字
|
|
144
|
+
* @returns a 和 b 的和
|
|
145
|
+
* @throws {TypeError} 如果参数不是数字
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* const result = add(5, 3);
|
|
150
|
+
* console.log(result); // 8
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
function add(a: number, b: number): number {
|
|
154
|
+
return a + b;
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**类文档**:
|
|
159
|
+
```typescript
|
|
160
|
+
/**
|
|
161
|
+
* 表示系统中的用户。
|
|
162
|
+
*
|
|
163
|
+
* @class User
|
|
164
|
+
* @implements {IUser}
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* const user = new User('张三', 'zhangsan@example.com');
|
|
169
|
+
* user.greet(); // "你好,我是张三"
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
class User implements IUser {
|
|
173
|
+
/**
|
|
174
|
+
* 创建新的 User 实例。
|
|
175
|
+
*
|
|
176
|
+
* @param name - 用户名
|
|
177
|
+
* @param email - 用户邮箱地址
|
|
178
|
+
*/
|
|
179
|
+
constructor(
|
|
180
|
+
public name: string,
|
|
181
|
+
public email: string
|
|
182
|
+
) {}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* 返回问候消息。
|
|
186
|
+
*
|
|
187
|
+
* @returns 个性化的问候语
|
|
188
|
+
*/
|
|
189
|
+
greet(): string {
|
|
190
|
+
return `你好,我是 ${this.name}`;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### 4. 架构文档
|
|
196
|
+
|
|
197
|
+
记录系统架构和设计:
|
|
198
|
+
|
|
199
|
+
**架构概述**:
|
|
200
|
+
```markdown
|
|
201
|
+
# 系统架构
|
|
202
|
+
|
|
203
|
+
## 概述
|
|
204
|
+
|
|
205
|
+
系统架构的高层描述。
|
|
206
|
+
|
|
207
|
+
## 组件
|
|
208
|
+
|
|
209
|
+
### 前端
|
|
210
|
+
- **技术栈**: React + TypeScript
|
|
211
|
+
- **状态管理**: Redux Toolkit
|
|
212
|
+
- **路由**: React Router
|
|
213
|
+
|
|
214
|
+
### 后端
|
|
215
|
+
- **技术栈**: Node.js + Express
|
|
216
|
+
- **数据库**: PostgreSQL
|
|
217
|
+
- **缓存**: Redis
|
|
218
|
+
|
|
219
|
+
### 基础设施
|
|
220
|
+
- **托管**: AWS
|
|
221
|
+
- **CI/CD**: GitHub Actions
|
|
222
|
+
- **监控**: DataDog
|
|
223
|
+
|
|
224
|
+
## 数据流
|
|
225
|
+
|
|
226
|
+
\`\`\`mermaid
|
|
227
|
+
graph LR
|
|
228
|
+
A[客户端] --> B[API 网关]
|
|
229
|
+
B --> C[后端服务]
|
|
230
|
+
C --> D[数据库]
|
|
231
|
+
C --> E[缓存]
|
|
232
|
+
\`\`\`
|
|
233
|
+
|
|
234
|
+
## 安全性
|
|
235
|
+
|
|
236
|
+
- 基于 JWT 的身份验证
|
|
237
|
+
- HTTPS 加密
|
|
238
|
+
- 速率限制
|
|
239
|
+
- 输入验证
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### 5. CHANGELOG 生成
|
|
243
|
+
|
|
244
|
+
生成和维护变更日志文件:
|
|
245
|
+
|
|
246
|
+
```markdown
|
|
247
|
+
# 变更日志
|
|
248
|
+
|
|
249
|
+
此项目的所有重要变更都将记录在此文件中。
|
|
250
|
+
|
|
251
|
+
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
|
252
|
+
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
253
|
+
|
|
254
|
+
## [未发布]
|
|
255
|
+
|
|
256
|
+
### 新增
|
|
257
|
+
- 新功能 X
|
|
258
|
+
- 新功能 Y
|
|
259
|
+
|
|
260
|
+
### 变更
|
|
261
|
+
- 将依赖 Z 更新到 v2.0
|
|
262
|
+
|
|
263
|
+
### 修复
|
|
264
|
+
- 修复问题 #123 的 bug
|
|
265
|
+
|
|
266
|
+
## [1.2.0] - 2026-01-10
|
|
267
|
+
|
|
268
|
+
### 新增
|
|
269
|
+
- 功能 A 及其完整测试
|
|
270
|
+
- 功能 B 及其文档
|
|
271
|
+
|
|
272
|
+
### 变更
|
|
273
|
+
- 改进模块 C 的性能
|
|
274
|
+
- 更新 UI 组件
|
|
275
|
+
|
|
276
|
+
### 弃用
|
|
277
|
+
- 旧的 API 端点 /v1/users (请使用 /v2/users)
|
|
278
|
+
|
|
279
|
+
### 移除
|
|
280
|
+
- 已弃用的功能 D
|
|
281
|
+
|
|
282
|
+
### 修复
|
|
283
|
+
- 身份验证流程中的关键 bug
|
|
284
|
+
- 后台服务中的内存泄漏
|
|
285
|
+
|
|
286
|
+
### 安全
|
|
287
|
+
- 修补漏洞 CVE-2026-1234
|
|
288
|
+
|
|
289
|
+
## [1.1.0] - 2025-12-15
|
|
290
|
+
|
|
291
|
+
...
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## 文档模板
|
|
295
|
+
|
|
296
|
+
### 项目 README 模板
|
|
297
|
+
|
|
298
|
+
```markdown
|
|
299
|
+
# [项目名称]
|
|
300
|
+
|
|
301
|
+
[徽章: 构建状态、覆盖率、版本、许可证]
|
|
302
|
+
|
|
303
|
+
[简短的一行描述]
|
|
304
|
+
|
|
305
|
+
## 目录
|
|
306
|
+
|
|
307
|
+
- [特性](#特性)
|
|
308
|
+
- [安装](#安装)
|
|
309
|
+
- [快速开始](#快速开始)
|
|
310
|
+
- [使用](#使用)
|
|
311
|
+
- [API 参考](#api-参考)
|
|
312
|
+
- [配置](#配置)
|
|
313
|
+
- [示例](#示例)
|
|
314
|
+
- [贡献](#贡献)
|
|
315
|
+
- [测试](#测试)
|
|
316
|
+
- [变更日志](#变更日志)
|
|
317
|
+
- [许可证](#许可证)
|
|
318
|
+
|
|
319
|
+
## 特性
|
|
320
|
+
|
|
321
|
+
- 特性 1: 描述
|
|
322
|
+
- 特性 2: 描述
|
|
323
|
+
- 特性 3: 描述
|
|
324
|
+
|
|
325
|
+
## 安装
|
|
326
|
+
|
|
327
|
+
\`\`\`bash
|
|
328
|
+
# npm
|
|
329
|
+
npm install [package-name]
|
|
330
|
+
|
|
331
|
+
# yarn
|
|
332
|
+
yarn add [package-name]
|
|
333
|
+
|
|
334
|
+
# pnpm
|
|
335
|
+
pnpm add [package-name]
|
|
336
|
+
\`\`\`
|
|
337
|
+
|
|
338
|
+
## 快速开始
|
|
339
|
+
|
|
340
|
+
\`\`\`javascript
|
|
341
|
+
// 快速示例
|
|
342
|
+
import { feature } from '[package-name]';
|
|
343
|
+
|
|
344
|
+
const result = feature.doSomething();
|
|
345
|
+
console.log(result);
|
|
346
|
+
\`\`\`
|
|
347
|
+
|
|
348
|
+
## 使用
|
|
349
|
+
|
|
350
|
+
### 基本使用
|
|
351
|
+
|
|
352
|
+
[详细使用说明]
|
|
353
|
+
|
|
354
|
+
### 高级使用
|
|
355
|
+
|
|
356
|
+
[高级示例和模式]
|
|
357
|
+
|
|
358
|
+
## API 参考
|
|
359
|
+
|
|
360
|
+
[全面的 API 文档]
|
|
361
|
+
|
|
362
|
+
## 配置
|
|
363
|
+
|
|
364
|
+
[配置选项和示例]
|
|
365
|
+
|
|
366
|
+
## 示例
|
|
367
|
+
|
|
368
|
+
[多个实用示例]
|
|
369
|
+
|
|
370
|
+
## 贡献
|
|
371
|
+
|
|
372
|
+
欢迎贡献!请阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 了解详情。
|
|
373
|
+
|
|
374
|
+
## 测试
|
|
375
|
+
|
|
376
|
+
\`\`\`bash
|
|
377
|
+
npm test
|
|
378
|
+
\`\`\`
|
|
379
|
+
|
|
380
|
+
## 变更日志
|
|
381
|
+
|
|
382
|
+
查看 [CHANGELOG.md](CHANGELOG.md) 了解发布历史。
|
|
383
|
+
|
|
384
|
+
## 许可证
|
|
385
|
+
|
|
386
|
+
[许可证类型] - 详见 [LICENSE](LICENSE) 文件。
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### API 端点文档模板
|
|
390
|
+
|
|
391
|
+
```markdown
|
|
392
|
+
## [方法] /api/endpoint
|
|
393
|
+
|
|
394
|
+
[此端点功能的简要描述]
|
|
395
|
+
|
|
396
|
+
### 身份验证
|
|
397
|
+
|
|
398
|
+
[必需/可选] - [认证类型: Bearer token、API key 等]
|
|
399
|
+
|
|
400
|
+
### 请求
|
|
401
|
+
|
|
402
|
+
**请求头:**
|
|
403
|
+
\`\`\`
|
|
404
|
+
Content-Type: application/json
|
|
405
|
+
Authorization: Bearer {token}
|
|
406
|
+
\`\`\`
|
|
407
|
+
|
|
408
|
+
**参数:**
|
|
409
|
+
- `param1` (类型, 必需/可选): 描述
|
|
410
|
+
- `param2` (类型, 必需/可选): 描述
|
|
411
|
+
|
|
412
|
+
**请求体:**
|
|
413
|
+
\`\`\`json
|
|
414
|
+
{
|
|
415
|
+
"field1": "value1",
|
|
416
|
+
"field2": "value2"
|
|
417
|
+
}
|
|
418
|
+
\`\`\`
|
|
419
|
+
|
|
420
|
+
### 响应
|
|
421
|
+
|
|
422
|
+
**成功 (200 OK):**
|
|
423
|
+
\`\`\`json
|
|
424
|
+
{
|
|
425
|
+
"status": "success",
|
|
426
|
+
"data": {
|
|
427
|
+
"id": "123",
|
|
428
|
+
"result": "value"
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
\`\`\`
|
|
432
|
+
|
|
433
|
+
**错误响应:**
|
|
434
|
+
|
|
435
|
+
- `400 Bad Request`: 无效参数
|
|
436
|
+
\`\`\`json
|
|
437
|
+
{
|
|
438
|
+
"status": "error",
|
|
439
|
+
"message": "无效参数: param1"
|
|
440
|
+
}
|
|
441
|
+
\`\`\`
|
|
442
|
+
|
|
443
|
+
- `401 Unauthorized`: 身份验证失败
|
|
444
|
+
- `404 Not Found`: 资源未找到
|
|
445
|
+
- `500 Internal Server Error`: 服务器错误
|
|
446
|
+
|
|
447
|
+
### 示例
|
|
448
|
+
|
|
449
|
+
\`\`\`bash
|
|
450
|
+
curl -X POST https://api.example.com/api/endpoint \
|
|
451
|
+
-H "Content-Type: application/json" \
|
|
452
|
+
-H "Authorization: Bearer YOUR_TOKEN" \
|
|
453
|
+
-d '{"field1": "value1", "field2": "value2"}'
|
|
454
|
+
\`\`\`
|
|
455
|
+
|
|
456
|
+
### 速率限制
|
|
457
|
+
|
|
458
|
+
- 速率限制: 每分钟 100 次请求
|
|
459
|
+
- 速率限制头: `X-RateLimit-Remaining`
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
### 组件文档模板
|
|
463
|
+
|
|
464
|
+
```markdown
|
|
465
|
+
# 组件名称
|
|
466
|
+
|
|
467
|
+
[组件的简要描述]
|
|
468
|
+
|
|
469
|
+
## 属性
|
|
470
|
+
|
|
471
|
+
| 属性 | 类型 | 默认值 | 必需 | 描述 |
|
|
472
|
+
|------|------|--------|------|------|
|
|
473
|
+
| prop1 | string | - | 是 | prop1 的描述 |
|
|
474
|
+
| prop2 | number | 0 | 否 | prop2 的描述 |
|
|
475
|
+
| onEvent | function | - | 否 | 回调函数 |
|
|
476
|
+
|
|
477
|
+
## 使用
|
|
478
|
+
|
|
479
|
+
\`\`\`tsx
|
|
480
|
+
import { ComponentName } from './ComponentName';
|
|
481
|
+
|
|
482
|
+
function App() {
|
|
483
|
+
return (
|
|
484
|
+
<ComponentName
|
|
485
|
+
prop1="value"
|
|
486
|
+
prop2={42}
|
|
487
|
+
onEvent={(data) => console.log(data)}
|
|
488
|
+
/>
|
|
489
|
+
);
|
|
490
|
+
}
|
|
491
|
+
\`\`\`
|
|
492
|
+
|
|
493
|
+
## 示例
|
|
494
|
+
|
|
495
|
+
### 基本示例
|
|
496
|
+
|
|
497
|
+
\`\`\`tsx
|
|
498
|
+
<ComponentName prop1="basic" />
|
|
499
|
+
\`\`\`
|
|
500
|
+
|
|
501
|
+
### 高级示例
|
|
502
|
+
|
|
503
|
+
\`\`\`tsx
|
|
504
|
+
<ComponentName
|
|
505
|
+
prop1="advanced"
|
|
506
|
+
prop2={100}
|
|
507
|
+
onEvent={(data) => {
|
|
508
|
+
// 处理事件
|
|
509
|
+
}}
|
|
510
|
+
/>
|
|
511
|
+
\`\`\`
|
|
512
|
+
|
|
513
|
+
## 样式
|
|
514
|
+
|
|
515
|
+
[CSS 类、样式选项、主题]
|
|
516
|
+
|
|
517
|
+
## 无障碍性
|
|
518
|
+
|
|
519
|
+
[ARIA 属性、键盘导航、屏幕阅读器支持]
|
|
520
|
+
|
|
521
|
+
## 浏览器支持
|
|
522
|
+
|
|
523
|
+
- Chrome: ✓
|
|
524
|
+
- Firefox: ✓
|
|
525
|
+
- Safari: ✓
|
|
526
|
+
- Edge: ✓
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
### 函数文档模板
|
|
530
|
+
|
|
531
|
+
```typescript
|
|
532
|
+
/**
|
|
533
|
+
* [简短的一行描述]
|
|
534
|
+
*
|
|
535
|
+
* [函数功能的详细描述,包括任何重要的行为、副作用或注意事项]
|
|
536
|
+
*
|
|
537
|
+
* @param paramName - 参数的描述
|
|
538
|
+
* @param options - 配置选项
|
|
539
|
+
* @param options.option1 - option1 的描述
|
|
540
|
+
* @param options.option2 - option2 的描述
|
|
541
|
+
*
|
|
542
|
+
* @returns 返回值的描述
|
|
543
|
+
*
|
|
544
|
+
* @throws {ErrorType} 何时抛出此错误的描述
|
|
545
|
+
*
|
|
546
|
+
* @example
|
|
547
|
+
* 基本用法:
|
|
548
|
+
* ```typescript
|
|
549
|
+
* const result = functionName('value');
|
|
550
|
+
* console.log(result); // 预期输出
|
|
551
|
+
* ```
|
|
552
|
+
*
|
|
553
|
+
* @example
|
|
554
|
+
* 带选项的高级用法:
|
|
555
|
+
* ```typescript
|
|
556
|
+
* const result = functionName('value', {
|
|
557
|
+
* option1: true,
|
|
558
|
+
* option2: 'custom'
|
|
559
|
+
* });
|
|
560
|
+
* ```
|
|
561
|
+
*
|
|
562
|
+
* @see {@link RelatedFunction} 相关功能
|
|
563
|
+
* @since 1.0.0
|
|
564
|
+
* @deprecated 请使用 {@link NewFunction} 代替
|
|
565
|
+
*/
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
## 最佳实践
|
|
569
|
+
|
|
570
|
+
### 1. 清晰简洁的写作
|
|
571
|
+
|
|
572
|
+
- **使用简单语言**: 除非必要,避免使用术语
|
|
573
|
+
- **具体明确**: 提供具体示例而非抽象描述
|
|
574
|
+
- **保持专注**: 每个部分应有单一、清晰的目的
|
|
575
|
+
- **使用主动语态**: "函数返回"而非"值被返回"
|
|
576
|
+
|
|
577
|
+
### 2. 代码示例
|
|
578
|
+
|
|
579
|
+
- **提供可运行的示例**: 所有代码示例都应该可以运行
|
|
580
|
+
- **展示常见用例**: 涵盖最常见的场景
|
|
581
|
+
- **包含边缘情况**: 记录不常见但重要的情况
|
|
582
|
+
- **使用真实数据**: 示例应反映实际使用情况
|
|
583
|
+
|
|
584
|
+
**好的示例**:
|
|
585
|
+
```typescript
|
|
586
|
+
// 好: 真实、完整的示例
|
|
587
|
+
const user = await fetchUser('user-123');
|
|
588
|
+
if (user) {
|
|
589
|
+
console.log(`欢迎,${user.name}!`);
|
|
590
|
+
}
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
**不好的示例**:
|
|
594
|
+
```typescript
|
|
595
|
+
// 不好: 抽象、不完整的示例
|
|
596
|
+
const x = func(y);
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### 3. 使用说明
|
|
600
|
+
|
|
601
|
+
- **分步骤**: 将复杂过程分解为清晰的步骤
|
|
602
|
+
- **前置条件**: 在说明前列出要求
|
|
603
|
+
- **预期结果**: 描述应该发生什么
|
|
604
|
+
- **故障排除**: 包含常见问题和解决方案
|
|
605
|
+
|
|
606
|
+
**示例**:
|
|
607
|
+
```markdown
|
|
608
|
+
## 安装
|
|
609
|
+
|
|
610
|
+
### 前置条件
|
|
611
|
+
- Node.js 18 或更高版本
|
|
612
|
+
- npm 9 或更高版本
|
|
613
|
+
|
|
614
|
+
### 步骤
|
|
615
|
+
|
|
616
|
+
1. 安装包:
|
|
617
|
+
\`\`\`bash
|
|
618
|
+
npm install package-name
|
|
619
|
+
\`\`\`
|
|
620
|
+
|
|
621
|
+
2. 在代码中导入:
|
|
622
|
+
\`\`\`typescript
|
|
623
|
+
import { feature } from 'package-name';
|
|
624
|
+
\`\`\`
|
|
625
|
+
|
|
626
|
+
3. 配置(可选):
|
|
627
|
+
\`\`\`typescript
|
|
628
|
+
feature.configure({ option: 'value' });
|
|
629
|
+
\`\`\`
|
|
630
|
+
|
|
631
|
+
### 验证
|
|
632
|
+
|
|
633
|
+
运行以下命令验证安装:
|
|
634
|
+
\`\`\`bash
|
|
635
|
+
npm list package-name
|
|
636
|
+
\`\`\`
|
|
637
|
+
|
|
638
|
+
### 故障排除
|
|
639
|
+
|
|
640
|
+
**问题**: 安装失败,出现 EACCES 错误
|
|
641
|
+
**解决方案**: 使用 sudo 运行或修复 npm 权限
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
### 4. 保持文档更新
|
|
645
|
+
|
|
646
|
+
- **版本文档**: 用版本号标记文档
|
|
647
|
+
- **随代码更改更新**: 代码更改时更新文档
|
|
648
|
+
- **定期审查**: 定期审核文档
|
|
649
|
+
- **弃用通知**: 清楚标记已弃用的功能
|
|
650
|
+
|
|
651
|
+
### 5. 结构和组织
|
|
652
|
+
|
|
653
|
+
- **逻辑流程**: 从简单到复杂组织
|
|
654
|
+
- **目录**: 较长文档需要目录
|
|
655
|
+
- **交叉引用**: 链接相关部分
|
|
656
|
+
- **一致的格式**: 使用一致的 markdown 样式
|
|
657
|
+
|
|
658
|
+
### 6. 无障碍性
|
|
659
|
+
|
|
660
|
+
- **图片替代文本**: 描述图表和截图
|
|
661
|
+
- **语义标题**: 使用正确的标题层次
|
|
662
|
+
- **代码块标签**: 指定语言以进行语法高亮
|
|
663
|
+
- **链接文本**: 使用描述性链接文本,而非"点击这里"
|
|
664
|
+
|
|
665
|
+
## 输出格式
|
|
666
|
+
|
|
667
|
+
### 1. Markdown
|
|
668
|
+
|
|
669
|
+
大多数文档的主要格式:
|
|
670
|
+
|
|
671
|
+
```markdown
|
|
672
|
+
# 一级标题
|
|
673
|
+
## 二级标题
|
|
674
|
+
### 三级标题
|
|
675
|
+
|
|
676
|
+
**粗体文本**
|
|
677
|
+
*斜体文本*
|
|
678
|
+
`内联代码`
|
|
679
|
+
|
|
680
|
+
- 无序列表
|
|
681
|
+
- 项目 2
|
|
682
|
+
|
|
683
|
+
1. 有序列表
|
|
684
|
+
2. 项目 2
|
|
685
|
+
|
|
686
|
+
[链接文本](https://example.com)
|
|
687
|
+
|
|
688
|
+

|
|
689
|
+
|
|
690
|
+
\`\`\`language
|
|
691
|
+
代码块
|
|
692
|
+
\`\`\`
|
|
693
|
+
|
|
694
|
+
> 引用
|
|
695
|
+
|
|
696
|
+
| 表格 | 标题 |
|
|
697
|
+
|------|------|
|
|
698
|
+
| 单元格 | 单元格 |
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
### 2. HTML (通过工具)
|
|
702
|
+
|
|
703
|
+
用于基于 Web 的文档:
|
|
704
|
+
|
|
705
|
+
```html
|
|
706
|
+
<!DOCTYPE html>
|
|
707
|
+
<html>
|
|
708
|
+
<head>
|
|
709
|
+
<title>API 文档</title>
|
|
710
|
+
<style>
|
|
711
|
+
/* 文档样式 */
|
|
712
|
+
</style>
|
|
713
|
+
</head>
|
|
714
|
+
<body>
|
|
715
|
+
<nav><!-- 导航 --></nav>
|
|
716
|
+
<main>
|
|
717
|
+
<article>
|
|
718
|
+
<!-- 文档内容 -->
|
|
719
|
+
</article>
|
|
720
|
+
</main>
|
|
721
|
+
</body>
|
|
722
|
+
</html>
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
### 3. JSDoc 注释
|
|
726
|
+
|
|
727
|
+
用于内联代码文档:
|
|
728
|
+
|
|
729
|
+
```typescript
|
|
730
|
+
/**
|
|
731
|
+
* @module ModuleName
|
|
732
|
+
* @description 模块描述
|
|
733
|
+
*/
|
|
734
|
+
|
|
735
|
+
/**
|
|
736
|
+
* @typedef {Object} TypeName
|
|
737
|
+
* @property {string} prop1 - 描述
|
|
738
|
+
* @property {number} prop2 - 描述
|
|
739
|
+
*/
|
|
740
|
+
|
|
741
|
+
/**
|
|
742
|
+
* @function functionName
|
|
743
|
+
* @description 函数描述
|
|
744
|
+
* @param {string} param - 参数描述
|
|
745
|
+
* @returns {Promise<Result>} 返回值描述
|
|
746
|
+
*/
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
## 工作流程
|
|
750
|
+
|
|
751
|
+
### 1. 分析代码
|
|
752
|
+
|
|
753
|
+
- 阅读源文件以理解功能
|
|
754
|
+
- 识别公共 API 和接口
|
|
755
|
+
- 注意重要的模式和约定
|
|
756
|
+
- 检查现有文档
|
|
757
|
+
|
|
758
|
+
### 2. 生成文档
|
|
759
|
+
|
|
760
|
+
- 创建适当的文档类型
|
|
761
|
+
- 遵循模板和最佳实践
|
|
762
|
+
- 包含全面的示例
|
|
763
|
+
- 添加交叉引用
|
|
764
|
+
|
|
765
|
+
### 3. 审查和完善
|
|
766
|
+
|
|
767
|
+
- 验证技术细节的准确性
|
|
768
|
+
- 测试所有代码示例
|
|
769
|
+
- 检查清晰度和完整性
|
|
770
|
+
- 确保格式一致
|
|
771
|
+
|
|
772
|
+
### 4. 集成
|
|
773
|
+
|
|
774
|
+
- 将文档放在适当位置
|
|
775
|
+
- 更新目录和索引
|
|
776
|
+
- 添加到版本控制
|
|
777
|
+
- 通知团队更新
|
|
778
|
+
|
|
779
|
+
## 成功技巧
|
|
780
|
+
|
|
781
|
+
1. **从为什么开始**: 在详细信息之前解释目的
|
|
782
|
+
2. **展示,而不仅仅是告诉**: 大量使用示例
|
|
783
|
+
3. **像用户一样思考**: 为受众的知识水平编写
|
|
784
|
+
4. **保持一致**: 使用一致的术语和格式
|
|
785
|
+
5. **保持最新**: 文档应与代码匹配
|
|
786
|
+
6. **使其可搜索**: 使用清晰的标题和关键字
|
|
787
|
+
7. **测试示例**: 所有代码示例都应该有效
|
|
788
|
+
8. **获取反馈**: 让其他人审查您的文档
|
|
789
|
+
|
|
790
|
+
## 常见陷阱
|
|
791
|
+
|
|
792
|
+
- **假设知识**: 不要假设读者了解上下文
|
|
793
|
+
- **不完整的示例**: 提供完整、可运行的示例
|
|
794
|
+
- **过时信息**: 保持文档与代码同步
|
|
795
|
+
- **组织不良**: 逻辑地组织信息
|
|
796
|
+
- **缺少错误情况**: 记录错误处理
|
|
797
|
+
- **没有视觉辅助**: 在有帮助的地方使用图表
|
|
798
|
+
- **不一致的风格**: 保持一致的格式
|
|
799
|
+
|
|
800
|
+
## 资源
|
|
801
|
+
|
|
802
|
+
- [Markdown 指南](https://www.markdownguide.org/)
|
|
803
|
+
- [JSDoc 文档](https://jsdoc.app/)
|
|
804
|
+
- [TypeDoc](https://typedoc.org/)
|
|
805
|
+
- [Keep a Changelog](https://keepachangelog.com/zh-CN/)
|
|
806
|
+
- [语义化版本](https://semver.org/lang/zh-CN/)
|
|
807
|
+
- [Write the Docs](https://www.writethedocs.org/)
|