@blueking/bkui-knowledge 0.0.1-beta.1 → 0.0.1-beta.11
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.md +166 -58
- package/bin/bkui-knowledge.js +229 -86
- package/knowledge/manifest.json +38 -1
- package/knowledge/skills/.template/README.md +1 -1
- package/knowledge/skills/bk-security-redlines/SKILL.md +47 -0
- package/knowledge/skills/bk-security-redlines/references/auth-check.md +73 -0
- package/knowledge/skills/bk-security-redlines/references/data-encryption.md +78 -0
- package/knowledge/skills/bk-security-redlines/references/input-validation.md +96 -0
- package/knowledge/skills/bk-skill-creator/SKILL.md +37 -0
- package/knowledge/skills/bk-skill-creator/references/common-mistakes.md +43 -0
- package/knowledge/skills/bk-skill-creator/references/quick-start.md +42 -0
- package/knowledge/skills/bk-skill-creator/references/skill-checklist.md +93 -0
- package/knowledge/skills/bk-skill-creator/references/structure-guide.md +88 -0
- package/knowledge/skills/bk-skill-creator/references/writing-tips.md +153 -0
- package/knowledge/skills/bkui-quick-start/SKILL.md +52 -0
- package/knowledge/skills/bkui-quick-start/references/components-list.md +17 -0
- package/knowledge/skills/bkui-quick-start/references/skills-index.md +26 -0
- package/knowledge/skills/external/vue-skills/LICENSE +21 -0
- package/knowledge/skills/external/vue-skills/README.md +69 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/SKILL.md +42 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/codeactions-save-performance.md +79 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/data-attributes-config.md +74 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/deep-watch-numeric.md +102 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/define-model-update-event.md +79 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/duplicate-plugin-detection.md +102 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/fallthrough-attributes.md +63 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/hmr-vue-ssr.md +124 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/module-resolution-bundler.md +81 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/pinia-store-mocking.md +159 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/script-setup-jsdoc.md +85 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/strict-css-modules.md +68 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/unplugin-auto-import-conflicts.md +97 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/volar-3-breaking-changes.md +66 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/vue-directive-comments.md +73 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/vue-router-typed-params.md +81 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/vue-tsc-strict-templates.md +69 -0
- package/knowledge/skills/external/vue-skills/skills/vue-best-practices/rules/with-defaults-union-types.md +102 -0
- package/knowledge/skills/web-security-guide/SKILL.md +48 -0
- package/knowledge/skills/web-security-guide/references/access-control.md +123 -0
- package/knowledge/skills/web-security-guide/references/auth-session.md +99 -0
- package/knowledge/skills/web-security-guide/references/csrf.md +59 -0
- package/knowledge/skills/web-security-guide/references/data-exposure.md +108 -0
- package/knowledge/skills/web-security-guide/references/deserialization.md +59 -0
- package/knowledge/skills/web-security-guide/references/injection.md +357 -0
- package/knowledge/skills/web-security-guide/references/logging-monitoring.md +47 -0
- package/knowledge/skills/web-security-guide/references/security-config.md +73 -0
- package/knowledge/skills/web-security-guide/references/ssrf.md +55 -0
- package/knowledge/skills/web-security-guide/references/xss.md +134 -0
- package/package.json +3 -3
- package/server/mcp-core.js +48 -33
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# 红线 1:外部输入未校验 - 详解
|
|
2
|
+
|
|
3
|
+
## 定义
|
|
4
|
+
|
|
5
|
+
外部输入在进入**高危操作**之前,未完成合理校验即违规。
|
|
6
|
+
|
|
7
|
+
## 外部输入范围
|
|
8
|
+
|
|
9
|
+
- HTTP 请求参数/Header/Cookie/Body/JSON
|
|
10
|
+
- 文件名及文件内容
|
|
11
|
+
- 环境变量、配置下发内容
|
|
12
|
+
- DB 可写字段
|
|
13
|
+
- 蓝鲸其他产品/组件/平台通过服务间调用、回调/Webhook、MQ/事件总线、任务参数等传入的数据
|
|
14
|
+
|
|
15
|
+
> ⚠️ **互信不等于可信**,一律视为外部输入
|
|
16
|
+
|
|
17
|
+
## 合理校验标准
|
|
18
|
+
|
|
19
|
+
必须同时满足:
|
|
20
|
+
|
|
21
|
+
1. **服务端校验**:发生在服务端/执行端,且在高危使用点之前
|
|
22
|
+
2. **强约束**:类型/长度/格式/范围/枚举或白名单/字符集与归一化一致性
|
|
23
|
+
3. **不可绕过**:不得因编码差异、大小写、分隔符、重复参数、路径归一化差异等被绕过
|
|
24
|
+
4. **不依赖外部假设**:不得以"内网/互信/网关/前端已校验/仅管理员可用"等作为免检理由
|
|
25
|
+
|
|
26
|
+
## 不合理校验(视为违规)
|
|
27
|
+
|
|
28
|
+
- 仅判空
|
|
29
|
+
- 仅黑名单
|
|
30
|
+
- 仅简单正则
|
|
31
|
+
- 仅前端校验
|
|
32
|
+
- 仅网关策略
|
|
33
|
+
- 仅依赖来源 IP
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 7 类高危操作场景
|
|
38
|
+
|
|
39
|
+
### 1.1 外部输入用于命令执行
|
|
40
|
+
|
|
41
|
+
**业务场景**:
|
|
42
|
+
- shell/exec/subprocess/Runtime.exec/ProcessBuilder/child_process
|
|
43
|
+
- 任务调度执行
|
|
44
|
+
- 脚本调用
|
|
45
|
+
- 运维命令封装
|
|
46
|
+
|
|
47
|
+
### 1.2 外部输入进入模板解释
|
|
48
|
+
|
|
49
|
+
**业务场景**:
|
|
50
|
+
- eval/exec
|
|
51
|
+
- 脚本引擎
|
|
52
|
+
- 动态 import/反射调用
|
|
53
|
+
- 表达式引擎
|
|
54
|
+
- 反序列化入口
|
|
55
|
+
- 模版渲染
|
|
56
|
+
|
|
57
|
+
### 1.3 外部输入影响文件路径
|
|
58
|
+
|
|
59
|
+
**业务场景**:
|
|
60
|
+
- 文件写入、文件读取/下载
|
|
61
|
+
- 上传落盘、导出落盘
|
|
62
|
+
- 临时文件、缓存文件
|
|
63
|
+
- 移动/重命名
|
|
64
|
+
- 解压/解包(zip/tar)
|
|
65
|
+
- 符号链接/硬链接导致的覆盖写(symlink/link attack)
|
|
66
|
+
|
|
67
|
+
### 1.4 外部输入控制请求目标
|
|
68
|
+
|
|
69
|
+
**业务场景**:
|
|
70
|
+
- http client 请求(URL/Host/Port 由输入影响)
|
|
71
|
+
- 回调地址
|
|
72
|
+
- 代理转发
|
|
73
|
+
- 跳转地址
|
|
74
|
+
|
|
75
|
+
### 1.5 外部输入参与查询构造
|
|
76
|
+
|
|
77
|
+
**业务场景**:
|
|
78
|
+
- 拼接 SQL/NoSQL 条件
|
|
79
|
+
- 管道
|
|
80
|
+
- 排序字段/表名等结构化查询构造
|
|
81
|
+
|
|
82
|
+
### 1.6 外部输入进入渲染解析
|
|
83
|
+
|
|
84
|
+
**业务场景**:
|
|
85
|
+
- XML 解析(上传/导入 XML、SOAP、SAML、Office 文档内嵌 XML 等)并可触发外部实体/DTD
|
|
86
|
+
- HTML/模板渲染
|
|
87
|
+
- 富文本预览
|
|
88
|
+
- Markdown 渲染
|
|
89
|
+
- 前端危险渲染通道(存储型/反射型/DOM 型 XSS)
|
|
90
|
+
|
|
91
|
+
### 1.7 外部输入注入协议输出
|
|
92
|
+
|
|
93
|
+
**业务场景**:
|
|
94
|
+
- HTTP Header/响应拼接(Response Splitting)
|
|
95
|
+
- 正则/解析器导致 ReDoS
|
|
96
|
+
- 解析歧义绕过校验(URL/路径/Header 解析差异)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: engineering/bk-skill-creator
|
|
3
|
+
name: Skill 创建指南
|
|
4
|
+
category: engineering
|
|
5
|
+
description: 指导如何创建符合渐进式披露架构的 skill 文档
|
|
6
|
+
tags: [skill, knowledge, template, guide]
|
|
7
|
+
updated_at: 2026-01-23
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Skill 创建指南
|
|
11
|
+
|
|
12
|
+
## ⚠️ 核心规则
|
|
13
|
+
|
|
14
|
+
1. **SKILL.md ≤ 2KB**: 超出内容必须移到 `references/`
|
|
15
|
+
2. **必须包含 Front Matter**: id, name, category, description, tags, updated_at
|
|
16
|
+
3. **按需加载引导**: 详细内容通过 `skill://` URI 引用
|
|
17
|
+
4. **存放位置**: 所有 skill 必须放在 `bkui-knowledge/knowledge/skills/` 目录下
|
|
18
|
+
|
|
19
|
+
## 快速开始
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cp -r knowledge/skills/.template knowledge/skills/your-skill-id
|
|
23
|
+
vim knowledge/skills/your-skill-id/SKILL.md
|
|
24
|
+
bash scripts/validate-skill.sh your-skill-id
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
详细步骤: `skill://bk-skill-creator/references/quick-start.md`
|
|
28
|
+
|
|
29
|
+
## 📦 按需加载资源
|
|
30
|
+
|
|
31
|
+
| 资源 | URI |
|
|
32
|
+
|-----|-----|
|
|
33
|
+
| 快速开始 | `skill://bk-skill-creator/references/quick-start.md` |
|
|
34
|
+
| 目录结构 | `skill://bk-skill-creator/references/structure-guide.md` |
|
|
35
|
+
| 常见错误 | `skill://bk-skill-creator/references/common-mistakes.md` |
|
|
36
|
+
| 检查清单 | `skill://bk-skill-creator/references/skill-checklist.md` |
|
|
37
|
+
| 写作技巧 | `skill://bk-skill-creator/references/writing-tips.md` |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 常见错误
|
|
2
|
+
|
|
3
|
+
## 错误对照表
|
|
4
|
+
|
|
5
|
+
| 错误 | 正确做法 |
|
|
6
|
+
|-----|---------|
|
|
7
|
+
| ❌ SKILL.md 内容过多 | ✅ 只保留核心规则,详细内容移到 references/ |
|
|
8
|
+
| ❌ 忘记更新索引 | ✅ 同时更新 manifest.json 和 README.md |
|
|
9
|
+
| ❌ 缺少 Front Matter | ✅ 必须包含 YAML 头部元数据 |
|
|
10
|
+
| ❌ 文件大小超限 | ✅ 使用 `bash scripts/validate-skill.sh` 验证 |
|
|
11
|
+
| ❌ 缺少按需加载引导 | ✅ 在 SKILL.md 末尾添加资源列表 |
|
|
12
|
+
|
|
13
|
+
## 详细说明
|
|
14
|
+
|
|
15
|
+
### SKILL.md 内容过多
|
|
16
|
+
|
|
17
|
+
**问题**: 将所有内容都放在 SKILL.md 中,导致文件超过 2KB 限制。
|
|
18
|
+
|
|
19
|
+
**解决**:
|
|
20
|
+
- 只保留核心规则和快速开始
|
|
21
|
+
- 详细步骤、示例、错误说明等移到 `references/` 目录
|
|
22
|
+
- 通过 `skill://` URI 引用详细内容
|
|
23
|
+
|
|
24
|
+
### 忘记更新索引
|
|
25
|
+
|
|
26
|
+
**问题**: 创建了 skill 但忘记在 manifest.json 和 README.md 中注册。
|
|
27
|
+
|
|
28
|
+
**解决**:
|
|
29
|
+
- 在 `knowledge/manifest.json` 的 `skills.items` 中添加条目
|
|
30
|
+
- 在 `README.md` 的技能表格中添加一行
|
|
31
|
+
- 使用验证脚本检查是否已正确注册
|
|
32
|
+
|
|
33
|
+
### 缺少 Front Matter
|
|
34
|
+
|
|
35
|
+
**问题**: SKILL.md 文件开头没有 YAML 格式的元数据。
|
|
36
|
+
|
|
37
|
+
**解决**: 必须在文件开头添加 Front Matter,包含:
|
|
38
|
+
- `id`: skill 的唯一标识符
|
|
39
|
+
- `name`: skill 的显示名称
|
|
40
|
+
- `category`: 分类(engineering/performance/quality)
|
|
41
|
+
- `description`: 简短描述
|
|
42
|
+
- `tags`: 标签数组
|
|
43
|
+
- `updated_at`: 更新日期
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# 快速开始详细步骤
|
|
2
|
+
|
|
3
|
+
## 完整流程
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# 进入 bkui-knowledge 项目根目录
|
|
7
|
+
cd /path/to/bkui-knowledge
|
|
8
|
+
|
|
9
|
+
# 1. 复制模板到 knowledge/skills 目录
|
|
10
|
+
cp -r knowledge/skills/.template knowledge/skills/your-skill-id
|
|
11
|
+
|
|
12
|
+
# 2. 编辑 SKILL.md(保持精简)
|
|
13
|
+
vim knowledge/skills/your-skill-id/SKILL.md
|
|
14
|
+
|
|
15
|
+
# 3. 详细内容放 references/
|
|
16
|
+
vim knowledge/skills/your-skill-id/references/advanced.md
|
|
17
|
+
|
|
18
|
+
# 4. 更新索引
|
|
19
|
+
vim knowledge/manifest.json # skills.items 添加条目
|
|
20
|
+
vim README.md # 技能表格添加一行
|
|
21
|
+
|
|
22
|
+
# 5. 验证
|
|
23
|
+
bash scripts/validate-skill.sh your-skill-id
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 目录结构示例
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
bkui-knowledge/
|
|
30
|
+
└── knowledge/
|
|
31
|
+
└── skills/
|
|
32
|
+
├── .template/ # 模板目录
|
|
33
|
+
└── your-skill-id/ # 新 skill 放这里
|
|
34
|
+
├── SKILL.md # 主文件 (≤2KB)
|
|
35
|
+
└── references/ # 详细内容
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 注意事项
|
|
39
|
+
|
|
40
|
+
- SKILL.md 必须控制在 2KB 以内
|
|
41
|
+
- 详细内容应放在 references/ 目录
|
|
42
|
+
- 创建后记得更新 manifest.json 和 README.md
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Skill 提交检查清单
|
|
2
|
+
|
|
3
|
+
## 自动验证
|
|
4
|
+
|
|
5
|
+
使用验证脚本一键检查:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bash scripts/validate-skill.sh your-skill-id
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**验证项**:
|
|
12
|
+
- 文件大小是否 ≤ 2KB
|
|
13
|
+
- 是否包含 Front Matter
|
|
14
|
+
- 是否有按需加载引导
|
|
15
|
+
- 是否在 manifest.json 中注册
|
|
16
|
+
|
|
17
|
+
## 手动检查清单
|
|
18
|
+
|
|
19
|
+
### 1. SKILL.md 文件
|
|
20
|
+
|
|
21
|
+
- [ ] 文件大小 ≤ 2KB(`wc -c knowledge/skills/your-skill-id/SKILL.md`)
|
|
22
|
+
- [ ] 包含完整 Front Matter:
|
|
23
|
+
```yaml
|
|
24
|
+
---
|
|
25
|
+
id: category/your-skill-id
|
|
26
|
+
name: 技能名称
|
|
27
|
+
category: engineering | performance | quality | security
|
|
28
|
+
description: 一句话描述
|
|
29
|
+
tags: [tag1, tag2]
|
|
30
|
+
updated_at: YYYY-MM-DD
|
|
31
|
+
---
|
|
32
|
+
```
|
|
33
|
+
- [ ] 包含"核心规则"章节
|
|
34
|
+
- [ ] 包含"快速开始"章节
|
|
35
|
+
- [ ] 如有 references/ 或 assets/,包含按需加载资源列表
|
|
36
|
+
|
|
37
|
+
### 2. 索引更新
|
|
38
|
+
|
|
39
|
+
- [ ] `manifest.json` 已添加条目:
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"id": "your-skill-id",
|
|
43
|
+
"name": "技能名称",
|
|
44
|
+
"category": "engineering",
|
|
45
|
+
"path": "your-skill-id/SKILL.md",
|
|
46
|
+
"tags": ["tag1", "tag2"]
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
- [ ] `README.md` 技能表格已添加一行
|
|
50
|
+
|
|
51
|
+
### 3. 内容质量
|
|
52
|
+
|
|
53
|
+
- [ ] 核心规则精简(3-5 条)
|
|
54
|
+
- [ ] 快速开始示例可运行
|
|
55
|
+
- [ ] 详细内容已拆分到 references/
|
|
56
|
+
- [ ] 代码示例遵循团队规范
|
|
57
|
+
|
|
58
|
+
## 常见问题排查
|
|
59
|
+
|
|
60
|
+
### Q: 验证脚本报错 "未在 manifest.json 中找到"
|
|
61
|
+
|
|
62
|
+
检查 `manifest.json` 中的 `id` 字段是否与 skill 目录名一致。
|
|
63
|
+
|
|
64
|
+
### Q: 文件大小超过 2KB
|
|
65
|
+
|
|
66
|
+
1. 识别核心内容(必读的规则)
|
|
67
|
+
2. 将详细说明移到 `references/`
|
|
68
|
+
3. 在 SKILL.md 末尾添加资源引导
|
|
69
|
+
|
|
70
|
+
### Q: 按需加载资源格式
|
|
71
|
+
|
|
72
|
+
正确格式:`skill://skill-id/references/xxx.md`
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
## 📦 按需加载资源
|
|
76
|
+
|
|
77
|
+
| 资源 | URI |
|
|
78
|
+
|-----|-----|
|
|
79
|
+
| 高级用法 | `skill://your-skill-id/references/advanced.md` |
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 测试方式
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# 1. 运行所有测试
|
|
86
|
+
npm test
|
|
87
|
+
|
|
88
|
+
# 2. 单独测试 Skills 规范
|
|
89
|
+
npm run test:skills
|
|
90
|
+
|
|
91
|
+
# 3. 在 Cursor 中调用测试
|
|
92
|
+
# 对话中输入:请调用 get_skill({ skillId: 'your-skill-id' })
|
|
93
|
+
```
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Skill 目录结构详解
|
|
2
|
+
|
|
3
|
+
## 标准结构
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
knowledge/skills/your-skill-id/
|
|
7
|
+
├── SKILL.md # 【必须】核心文档 (≤ 2KB)
|
|
8
|
+
├── references/ # 【可选】详细参考文档
|
|
9
|
+
│ ├── advanced.md # 高级用法
|
|
10
|
+
│ ├── examples.md # 示例代码
|
|
11
|
+
│ └── troubleshooting.md # 问题排查
|
|
12
|
+
├── assets/ # 【可选】代码资产
|
|
13
|
+
│ ├── templates/ # 模板文件
|
|
14
|
+
│ ├── scripts/ # 工具脚本
|
|
15
|
+
│ └── configs/ # 配置文件
|
|
16
|
+
└── README.md # 【可选】对内说明(不会被 AI 加载)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 各目录用途
|
|
20
|
+
|
|
21
|
+
### SKILL.md(必须)
|
|
22
|
+
|
|
23
|
+
- **用途**: 核心指令,AI 首先加载的文档
|
|
24
|
+
- **大小限制**: ≤ 2KB
|
|
25
|
+
- **内容要求**:
|
|
26
|
+
- Front Matter 元数据
|
|
27
|
+
- 核心规则(3-5 条)
|
|
28
|
+
- 快速开始示例
|
|
29
|
+
- 按需加载资源引导
|
|
30
|
+
|
|
31
|
+
### references/(可选)
|
|
32
|
+
|
|
33
|
+
- **用途**: 详细参考文档,按需加载
|
|
34
|
+
- **大小限制**: 每个文件 ≤ 5KB
|
|
35
|
+
- **命名建议**:
|
|
36
|
+
- `advanced.md` - 高级用法
|
|
37
|
+
- `examples.md` - 完整示例
|
|
38
|
+
- `troubleshooting.md` - 问题排查
|
|
39
|
+
- `checklist.md` - 检查清单
|
|
40
|
+
|
|
41
|
+
### assets/(可选)
|
|
42
|
+
|
|
43
|
+
- **用途**: 代码模板、脚本、配置文件
|
|
44
|
+
- **大小限制**: 无限制(用户确认后加载)
|
|
45
|
+
- **命名建议**:
|
|
46
|
+
- `template.vue` / `template.ts` - 代码模板
|
|
47
|
+
- `config.ts` - 配置示例
|
|
48
|
+
- `helper.js` - 工具脚本
|
|
49
|
+
|
|
50
|
+
## 现有 Skill 结构示例
|
|
51
|
+
|
|
52
|
+
### bkui-builder(复杂示例)
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
bkui-builder/
|
|
56
|
+
├── SKILL.md
|
|
57
|
+
├── references/
|
|
58
|
+
│ ├── checklist.md
|
|
59
|
+
│ ├── code-snippets.md
|
|
60
|
+
│ └── visual-mapping.md
|
|
61
|
+
└── assets/
|
|
62
|
+
├── layouts/
|
|
63
|
+
│ ├── admin-layout-dark.vue
|
|
64
|
+
│ ├── admin-layout-left.vue
|
|
65
|
+
│ └── admin-layout-top.vue
|
|
66
|
+
└── pages/
|
|
67
|
+
├── table-page.vue
|
|
68
|
+
└── dashboard-page.vue
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### api-standard(简单示例)
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
api-standard/
|
|
75
|
+
├── SKILL.md
|
|
76
|
+
├── references/
|
|
77
|
+
│ ├── full-implementation.md
|
|
78
|
+
│ └── protocol-migration.md
|
|
79
|
+
└── assets/
|
|
80
|
+
└── http.ts
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 文件命名规范
|
|
84
|
+
|
|
85
|
+
1. **skill-id**: 使用 kebab-case,如 `bk-skill-creator`
|
|
86
|
+
2. **SKILL.md**: 必须大写,固定名称
|
|
87
|
+
3. **references/**: 使用 kebab-case,如 `structure-guide.md`
|
|
88
|
+
4. **assets/**: 使用原始文件扩展名,如 `.vue`, `.ts`
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Skill 写作技巧
|
|
2
|
+
|
|
3
|
+
## 控制 SKILL.md 大小
|
|
4
|
+
|
|
5
|
+
### 技巧 1: 只保留"必须知道"的内容
|
|
6
|
+
|
|
7
|
+
**问自己**:如果 AI 只读这个文件,哪些信息是绝对必要的?
|
|
8
|
+
|
|
9
|
+
- ✅ 核心规则(必须遵守)
|
|
10
|
+
- ✅ 最简单的使用示例
|
|
11
|
+
- ✅ 最常见的错误
|
|
12
|
+
- ❌ 详细解释(移到 references/)
|
|
13
|
+
- ❌ 多个完整示例(移到 references/)
|
|
14
|
+
- ❌ 历史背景(删除或移走)
|
|
15
|
+
|
|
16
|
+
### 技巧 2: 使用表格代替段落
|
|
17
|
+
|
|
18
|
+
**Before(冗长)**:
|
|
19
|
+
```markdown
|
|
20
|
+
## 常见错误
|
|
21
|
+
|
|
22
|
+
### 错误 1: 文件过大
|
|
23
|
+
当 SKILL.md 超过 2KB 时,会导致 AI 消耗过多 token...
|
|
24
|
+
|
|
25
|
+
### 错误 2: 缺少元数据
|
|
26
|
+
如果没有 Front Matter,系统无法正确索引...
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**After(精简)**:
|
|
30
|
+
```markdown
|
|
31
|
+
## 常见错误
|
|
32
|
+
|
|
33
|
+
| 错误 | 正确做法 |
|
|
34
|
+
|-----|---------|
|
|
35
|
+
| ❌ 文件过大 | ✅ 拆分到 references/ |
|
|
36
|
+
| ❌ 缺少元数据 | ✅ 添加 Front Matter |
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 技巧 3: 代码示例最小化
|
|
40
|
+
|
|
41
|
+
只展示最核心的代码,完整示例放 references/。
|
|
42
|
+
|
|
43
|
+
**Before(完整)**:
|
|
44
|
+
```typescript
|
|
45
|
+
import axios from 'axios';
|
|
46
|
+
import { Message } from 'bkui-vue';
|
|
47
|
+
|
|
48
|
+
const http = axios.create({
|
|
49
|
+
baseURL: '/api',
|
|
50
|
+
timeout: 30000,
|
|
51
|
+
headers: { 'Content-Type': 'application/json' }
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
http.interceptors.response.use(
|
|
55
|
+
response => response.data,
|
|
56
|
+
error => {
|
|
57
|
+
Message.error(error.message);
|
|
58
|
+
return Promise.reject(error);
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
export default http;
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**After(最小)**:
|
|
66
|
+
```typescript
|
|
67
|
+
import axios from 'axios';
|
|
68
|
+
const http = axios.create({ baseURL: '/api', timeout: 30000 });
|
|
69
|
+
export default http;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
> 完整实现见 `skill://api-standard/assets/http.ts`
|
|
73
|
+
|
|
74
|
+
## 内容拆分策略
|
|
75
|
+
|
|
76
|
+
### 拆分原则
|
|
77
|
+
|
|
78
|
+
| 内容类型 | 放置位置 |
|
|
79
|
+
|---------|---------|
|
|
80
|
+
| 核心规则 | SKILL.md |
|
|
81
|
+
| 快速开始 | SKILL.md |
|
|
82
|
+
| 常见错误 | SKILL.md |
|
|
83
|
+
| 详细配置 | references/advanced.md |
|
|
84
|
+
| 完整示例 | references/examples.md |
|
|
85
|
+
| 问题排查 | references/troubleshooting.md |
|
|
86
|
+
| 代码模板 | assets/*.ts |
|
|
87
|
+
|
|
88
|
+
### 拆分示例
|
|
89
|
+
|
|
90
|
+
**原始内容**(3KB,需要拆分):
|
|
91
|
+
|
|
92
|
+
```markdown
|
|
93
|
+
# API 封装规范
|
|
94
|
+
|
|
95
|
+
## 核心规则
|
|
96
|
+
...
|
|
97
|
+
|
|
98
|
+
## 详细配置
|
|
99
|
+
### 请求拦截器配置
|
|
100
|
+
(500字详细说明)
|
|
101
|
+
|
|
102
|
+
### 响应拦截器配置
|
|
103
|
+
(500字详细说明)
|
|
104
|
+
|
|
105
|
+
## 完整示例
|
|
106
|
+
(800字完整代码)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**拆分后**:
|
|
110
|
+
|
|
111
|
+
SKILL.md(1.5KB):
|
|
112
|
+
```markdown
|
|
113
|
+
# API 封装规范
|
|
114
|
+
## 核心规则
|
|
115
|
+
...
|
|
116
|
+
## 📦 按需加载资源
|
|
117
|
+
- 详细配置: `skill://api-standard/references/advanced.md`
|
|
118
|
+
- 完整示例: `skill://api-standard/assets/http.ts`
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
references/advanced.md:
|
|
122
|
+
```markdown
|
|
123
|
+
# 详细配置
|
|
124
|
+
## 请求拦截器配置
|
|
125
|
+
...
|
|
126
|
+
## 响应拦截器配置
|
|
127
|
+
...
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 好的 Skill 示例分析
|
|
131
|
+
|
|
132
|
+
### bkui-builder
|
|
133
|
+
|
|
134
|
+
**优点**:
|
|
135
|
+
1. SKILL.md 只有 1.5KB,非常精简
|
|
136
|
+
2. 使用表格展示模板选择逻辑
|
|
137
|
+
3. 按需加载资源清晰列出
|
|
138
|
+
|
|
139
|
+
**值得学习**:
|
|
140
|
+
- 用"绝对禁令"强调最重要的规则
|
|
141
|
+
- 用"还原流程"提供清晰步骤
|
|
142
|
+
- 模板资源按场景分类
|
|
143
|
+
|
|
144
|
+
### code-review
|
|
145
|
+
|
|
146
|
+
**优点**:
|
|
147
|
+
1. 核心规则简洁明确
|
|
148
|
+
2. 详细检查清单放在 references/
|
|
149
|
+
3. 评分标准独立成文件
|
|
150
|
+
|
|
151
|
+
**值得学习**:
|
|
152
|
+
- 将复杂的评审标准拆分到多个 references 文件
|
|
153
|
+
- 使用 assets/ 存放可执行脚本
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bkui-quick-start
|
|
3
|
+
name: BKUI 快速入门
|
|
4
|
+
category: engineering
|
|
5
|
+
description: 蓝鲸前端知识库入口指南,包含规范、索引和工作流程
|
|
6
|
+
tags: [bkui, 规范, 索引, 入门, vue3]
|
|
7
|
+
updated_at: 2026-01-23
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# BKUI 快速入门
|
|
11
|
+
|
|
12
|
+
> 蓝鲸前端知识库入口指南。
|
|
13
|
+
|
|
14
|
+
## 强制规范
|
|
15
|
+
|
|
16
|
+
- **组件库**: bkui-vue (前缀 `bk-`)
|
|
17
|
+
- **语法**: Vue 3 `<script setup lang="ts">`
|
|
18
|
+
- **样式**: MagicBox 原子类 (mt10, mb20)
|
|
19
|
+
- **布局**: 必须使用 `bk-navigation`
|
|
20
|
+
|
|
21
|
+
## 常见错误 (必须避免)
|
|
22
|
+
|
|
23
|
+
| 组件 | 错误写法 | 正确写法 |
|
|
24
|
+
|------|----------|----------|
|
|
25
|
+
| bk-navigation | `:default-open-keys` | `default-open` |
|
|
26
|
+
| bk-menu | `:default-open-keys` | `:opened-keys` |
|
|
27
|
+
| bk-dialog | `v-model` | `v-model:isShow` |
|
|
28
|
+
|
|
29
|
+
## 高优先级组件
|
|
30
|
+
|
|
31
|
+
- `bk-navigation` - 布局组件,易出错
|
|
32
|
+
- `bk-menu` - 与 navigation 配合
|
|
33
|
+
- `bk-table` - 列表页核心组件
|
|
34
|
+
- `bk-form` - 表单验证
|
|
35
|
+
- `bk-dialog` - v-model:isShow
|
|
36
|
+
|
|
37
|
+
## 工作流程
|
|
38
|
+
|
|
39
|
+
1. **分析需求** → 确定需要哪些资源
|
|
40
|
+
2. **布局组件** → `get_component_api({ componentName: 'navigation' })`
|
|
41
|
+
3. **模板代码** → `get_skill({ skillId: 'bkui-builder' })`
|
|
42
|
+
|
|
43
|
+
## 触发条件
|
|
44
|
+
|
|
45
|
+
遇到 bk- 前缀组件、bkui-vue、蓝鲸前端、设计稿还原时使用。
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 按需加载资源
|
|
50
|
+
|
|
51
|
+
- `skill://bkui-quick-start/references/skills-index.md` - 完整 Skills 索引
|
|
52
|
+
- `skill://bkui-quick-start/references/components-list.md` - 组件完整列表
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# 组件完整列表
|
|
2
|
+
|
|
3
|
+
通过 `get_component_api({ componentName: 'xxx' })` 获取文档。
|
|
4
|
+
|
|
5
|
+
## 高优先级 (必须先查询)
|
|
6
|
+
|
|
7
|
+
| 组件 | 说明 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| bk-navigation | 布局组件,易出错 |
|
|
10
|
+
| bk-menu | 与 navigation 配合 |
|
|
11
|
+
| bk-table | 列表页核心组件 |
|
|
12
|
+
| bk-form | 表单验证 |
|
|
13
|
+
| bk-dialog | v-model:isShow |
|
|
14
|
+
|
|
15
|
+
## 全部组件
|
|
16
|
+
|
|
17
|
+
navigation, menu, table, form, dialog, button, input, select, checkbox, radio, date-picker, time-picker, pagination, message, notify, loading, popover, pop-confirm, tag, tag-input, alert, dropdown, tab, cascader, tree, steps, upload, sideslider, breadcrumb, card, collapse, affix, backtop, badge, divider, exception, image, link, progress, rate, slider, switcher, timeline, process, transfer, search-select, color-picker, container, resize-layout, fixed-navbar, code-diff, swiper, animate-number, overflow-title, virtual-render, scrollbar, info-box, config-provider
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 可用 Skills 索引
|
|
2
|
+
|
|
3
|
+
通过 `get_skill({ skillId: 'xxx' })` 获取详情:
|
|
4
|
+
|
|
5
|
+
## 工程化
|
|
6
|
+
|
|
7
|
+
| ID | 名称 | 说明 |
|
|
8
|
+
|----|------|------|
|
|
9
|
+
| bkui-builder | 设计稿还原专家 | 包含布局模版和页面模版 (assets/) |
|
|
10
|
+
| bkui-cheatsheet | BKUI 组件速查 | Props 速查、常见坑点 |
|
|
11
|
+
| api-standard | 统一网络请求封装 | Axios 封装规范 |
|
|
12
|
+
| pinia-setup | 全局状态管理 | Pinia Store 模板 |
|
|
13
|
+
| permission-directive | 前端权限控制 | IAM 权限指令 |
|
|
14
|
+
| vite-migration | Webpack 到 Vite 迁移 | 迁移检查脚本 |
|
|
15
|
+
| bundle-optimization | Vite 构建优化 | 性能优化配置 |
|
|
16
|
+
| vue-composables | Vue 3 Composables | 最佳实践和模板 |
|
|
17
|
+
| virtual-list | 长列表虚拟滚动 | 性能优化方案 |
|
|
18
|
+
|
|
19
|
+
## 质量保障
|
|
20
|
+
|
|
21
|
+
| ID | 名称 | 说明 |
|
|
22
|
+
|----|------|------|
|
|
23
|
+
| unit-testing | 组件单元测试 | Vitest 测试模板 |
|
|
24
|
+
| code-review | 代码评审专家 | 评审规范和检查清单 |
|
|
25
|
+
| js-security-check | JavaScript 安全审查 | 前端安全检查 |
|
|
26
|
+
| nodejs-security-check | Node.js 安全审查 | 后端安全检查 |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 hyf0
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|