mdk-skills 2.2.22 → 2.2.24
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/.claude/.install.log +3 -0
- package/.claude/backups/20260511.145306/.install.log +39 -0
- package/.claude/backups/20260511.145306/profiles.json +22 -0
- package/.claude/backups/20260511.145306/settings.json +11 -0
- package/.claude/backups/CLAUDE.md.20260511.145306 +131 -0
- package/.claude/profiles.json +10 -61
- package/.claude/settings.json +9 -27
- package/package.json +9 -4
- package/scripts/core.js +49 -4
- package/scripts/web-ui/dist/assets/index-B3SLlTdd.css +1 -0
- package/scripts/web-ui/dist/assets/index-DanvMbHP.js +7440 -0
- package/scripts/web-ui/dist/index.html +13 -0
- package/scripts/web-ui/server.js +1004 -860
- package/scripts/web-ui/src/App.vue +148 -125
- package/scripts/web-ui/src/api/skills.js +20 -0
- package/scripts/web-ui/src/components/SkillCard.vue +9 -0
- package/scripts/web-ui/src/components/StatusBar.vue +13 -0
- package/scripts/web-ui/src/styles/main.css +95 -0
- package/scripts/web-ui/src/utils/usage.js +46 -0
- package/scripts/web-ui/src/views/Dashboard.vue +389 -20
- package/scripts/web-ui/src/views/SceneSwitch.vue +4 -0
- package/scripts/web-ui/src/views/Settings.vue +44 -2
- package/scripts/web-ui/vite.config.js +11 -0
- package/.claude/backups/20260510.153300/.install.log +0 -10
- package/.claude/backups/20260510.153300/profiles.json +0 -67
- package/.claude/backups/20260510.153300/settings.json +0 -29
- package/.claude/backups/20260510.153300/skills/frontend-code-review/.meta.json +0 -6
- package/.claude/backups/20260510.153300/skills/frontend-code-review/SKILL.md +0 -167
- package/.claude/backups/20260510.153300/skills/frontend-code-review/references/checklist.md +0 -298
- package/.claude/backups/20260510.153300/skills/frontend-design/.meta.json +0 -6
- package/.claude/backups/20260510.153300/skills/frontend-design/LICENSE.txt +0 -177
- package/.claude/backups/20260510.153300/skills/frontend-design/SKILL.md +0 -42
- package/.claude/backups/20260510.153300/skills/skill-creator/.meta.json +0 -6
- package/.claude/backups/20260510.153300/skills/skill-creator/SKILL.md +0 -356
- package/.claude/backups/20260510.153300/skills/skill-creator/references/output-patterns.md +0 -82
- package/.claude/backups/20260510.153300/skills/skill-creator/references/workflows.md +0 -28
- package/.claude/backups/20260510.153300/skills/skill-creator/scripts/init_skill.py +0 -303
- package/.claude/backups/20260510.153300/skills/skill-creator/scripts/package_skill.py +0 -110
- package/.claude/backups/20260510.153300/skills/skill-creator/scripts/quick_validate.py +0 -95
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/.meta.json +0 -6
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/SKILL.md +0 -228
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/charts.csv +0 -26
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/colors.csv +0 -97
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/landing.csv +0 -31
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/products.csv +0 -97
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/prompts.csv +0 -24
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/styles.csv +0 -59
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/typography.csv +0 -58
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/scripts/core.py +0 -238
- package/.claude/backups/20260510.153300/skills/ui-ux-pro-max/scripts/search.py +0 -61
- package/.claude/backups/20260510.153300/skills/v3-fe-biz-patterns/.meta.json +0 -6
- package/.claude/backups/20260510.153300/skills/v3-fe-biz-patterns/SKILL.md +0 -26
- package/.claude/backups/20260510.153300/skills/v3-fe-biz-patterns/references/infinite-scroll.md +0 -292
- package/.claude/backups/20260510.153300/skills/v3-fe-biz-patterns/references/pinia-store.md +0 -174
- package/.claude/backups/20260510.153300/skills/v3-fe-biz-patterns/references/service-layer.md +0 -198
- package/.claude/backups/20260510.153300/skills/v3-fe-biz-patterns/references/tab-anchor.md +0 -1125
- package/.claude/backups/20260510.153300/skills/v3-fe-biz-patterns/references/use-loading.md +0 -114
- package/.claude/backups/20260510.153300/skills/vue/.meta.json +0 -6
- package/.claude/backups/20260510.153300/skills/vue/SKILL.md +0 -103
- package/.claude/backups/20260510.153300/skills/vue/references/components.md +0 -323
- package/.claude/backups/20260510.153300/skills/vue/references/composables.md +0 -358
- package/.claude/backups/20260510.153300/skills/vue/references/directives.md +0 -225
- package/.claude/backups/20260510.153300/skills/vue/references/gotchas.md +0 -438
- package/.claude/backups/20260510.153300/skills/vue/references/provide-inject.md +0 -174
- package/.claude/backups/20260510.153300/skills/vue/references/reactivity.md +0 -289
- package/.claude/backups/20260510.153300/skills/vue/references/router.md +0 -181
- package/.claude/backups/20260510.153300/skills/vue/references/testing.md +0 -294
- package/.claude/backups/20260510.153300/skills/vue/references/typescript.md +0 -172
- package/.claude/backups/20260510.153300/skills/vue/references/utils-client.md +0 -156
- package/.claude/skills/frontend-code-review/.meta.json +0 -6
- package/.claude/skills/frontend-code-review/SKILL.md +0 -167
- package/.claude/skills/frontend-code-review/references/checklist.md +0 -298
- package/.claude/skills/frontend-design/.meta.json +0 -6
- package/.claude/skills/frontend-design/LICENSE.txt +0 -177
- package/.claude/skills/frontend-design/SKILL.md +0 -42
- package/.claude/skills/skill-creator/.meta.json +0 -6
- package/.claude/skills/skill-creator/SKILL.md +0 -356
- package/.claude/skills/skill-creator/references/output-patterns.md +0 -82
- package/.claude/skills/skill-creator/references/workflows.md +0 -28
- package/.claude/skills/skill-creator/scripts/init_skill.py +0 -303
- package/.claude/skills/skill-creator/scripts/package_skill.py +0 -110
- package/.claude/skills/skill-creator/scripts/quick_validate.py +0 -95
- package/.claude/skills/ui-ux-pro-max/.meta.json +0 -6
- package/.claude/skills/ui-ux-pro-max/SKILL.md +0 -228
- package/.claude/skills/ui-ux-pro-max/data/charts.csv +0 -26
- package/.claude/skills/ui-ux-pro-max/data/colors.csv +0 -97
- package/.claude/skills/ui-ux-pro-max/data/landing.csv +0 -31
- package/.claude/skills/ui-ux-pro-max/data/products.csv +0 -97
- package/.claude/skills/ui-ux-pro-max/data/prompts.csv +0 -24
- package/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
- package/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
- package/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
- package/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
- package/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
- package/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
- package/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
- package/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
- package/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
- package/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
- package/.claude/skills/ui-ux-pro-max/data/styles.csv +0 -59
- package/.claude/skills/ui-ux-pro-max/data/typography.csv +0 -58
- package/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
- package/.claude/skills/ui-ux-pro-max/scripts/core.py +0 -238
- package/.claude/skills/ui-ux-pro-max/scripts/search.py +0 -61
- package/.claude/skills/v3-fe-biz-patterns/.meta.json +0 -6
- package/.claude/skills/v3-fe-biz-patterns/SKILL.md +0 -26
- package/.claude/skills/v3-fe-biz-patterns/references/infinite-scroll.md +0 -292
- package/.claude/skills/v3-fe-biz-patterns/references/pinia-store.md +0 -174
- package/.claude/skills/v3-fe-biz-patterns/references/service-layer.md +0 -198
- package/.claude/skills/v3-fe-biz-patterns/references/tab-anchor.md +0 -1125
- package/.claude/skills/v3-fe-biz-patterns/references/use-loading.md +0 -114
- package/.claude/skills/vue/.meta.json +0 -6
- package/.claude/skills/vue/SKILL.md +0 -103
- package/.claude/skills/vue/references/components.md +0 -323
- package/.claude/skills/vue/references/composables.md +0 -358
- package/.claude/skills/vue/references/directives.md +0 -225
- package/.claude/skills/vue/references/gotchas.md +0 -438
- package/.claude/skills/vue/references/provide-inject.md +0 -174
- package/.claude/skills/vue/references/reactivity.md +0 -289
- package/.claude/skills/vue/references/router.md +0 -181
- package/.claude/skills/vue/references/testing.md +0 -294
- package/.claude/skills/vue/references/typescript.md +0 -172
- package/.claude/skills/vue/references/utils-client.md +0 -156
package/.claude/.install.log
CHANGED
|
@@ -36,3 +36,6 @@
|
|
|
36
36
|
[2026-05-10 15:42:53] [SKILL] vue (1.0.0) → skipped (exists)
|
|
37
37
|
[2026-05-10 15:42:53] [SETTINGS] settings.json merged
|
|
38
38
|
[2026-05-10 15:42:53] [BACKUP] backups/CLAUDE.md.20260510.154253 (CLAUDE.md user version preserved)
|
|
39
|
+
[2026-05-11 14:53:06] [INFO] Install started (upgrade)
|
|
40
|
+
[2026-05-11 14:53:06] [SETTINGS] settings.json merged
|
|
41
|
+
[2026-05-11 14:53:06] [BACKUP] backups/CLAUDE.md.20260511.145306 (CLAUDE.md user version preserved)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
[2026-05-10 15:19:53] [INFO] Install started (upgrade)
|
|
2
|
+
[2026-05-10 15:19:53] [SKILL] frontend-code-review (1.0.0) → skipped (exists)
|
|
3
|
+
[2026-05-10 15:19:53] [SKILL] frontend-design (1.0.0) → skipped (exists)
|
|
4
|
+
[2026-05-10 15:19:53] [SKILL] skill-creator (1.0.0) → skipped (exists)
|
|
5
|
+
[2026-05-10 15:19:53] [SKILL] ui-ux-pro-max (1.0.0) → skipped (exists)
|
|
6
|
+
[2026-05-10 15:19:53] [SKILL] v3-fe-biz-patterns (1.0.0) → skipped (exists)
|
|
7
|
+
[2026-05-10 15:19:53] [SKILL] vue (1.0.0) → skipped (exists)
|
|
8
|
+
[2026-05-10 15:19:53] [SETTINGS] settings.json merged
|
|
9
|
+
[2026-05-10 15:19:53] [BACKUP] backups/CLAUDE.md.20260510.151953 (CLAUDE.md user version preserved)
|
|
10
|
+
[2026-05-10 15:33:00] [INFO] Install started (upgrade)
|
|
11
|
+
[2026-05-10 15:33:00] [SKILL] frontend-code-review (1.0.0) → skipped (exists)
|
|
12
|
+
[2026-05-10 15:33:00] [SKILL] frontend-design (1.0.0) → skipped (exists)
|
|
13
|
+
[2026-05-10 15:33:00] [SKILL] skill-creator (1.0.0) → skipped (exists)
|
|
14
|
+
[2026-05-10 15:33:00] [SKILL] ui-ux-pro-max (1.0.0) → skipped (exists)
|
|
15
|
+
[2026-05-10 15:33:00] [SKILL] v3-fe-biz-patterns (1.0.0) → skipped (exists)
|
|
16
|
+
[2026-05-10 15:33:00] [SKILL] vue (1.0.0) → skipped (exists)
|
|
17
|
+
[2026-05-10 15:33:00] [SETTINGS] settings.json merged
|
|
18
|
+
[2026-05-10 15:33:00] [BACKUP] backups/CLAUDE.md.20260510.153300 (CLAUDE.md user version preserved)
|
|
19
|
+
[2026-05-10 15:34:00] [INFO] Install started (upgrade)
|
|
20
|
+
[2026-05-10 15:34:00] [SKILL] frontend-code-review (1.0.0) → skipped (exists)
|
|
21
|
+
[2026-05-10 15:34:00] [SKILL] frontend-design (1.0.0) → skipped (exists)
|
|
22
|
+
[2026-05-10 15:34:00] [SKILL] skill-creator (1.0.0) → skipped (exists)
|
|
23
|
+
[2026-05-10 15:34:00] [SKILL] ui-ux-pro-max (1.0.0) → skipped (exists)
|
|
24
|
+
[2026-05-10 15:34:00] [SKILL] v3-fe-biz-patterns (1.0.0) → skipped (exists)
|
|
25
|
+
[2026-05-10 15:34:00] [SKILL] vue (1.0.0) → skipped (exists)
|
|
26
|
+
[2026-05-10 15:34:00] [SETTINGS] settings.json merged
|
|
27
|
+
[2026-05-10 15:34:00] [BACKUP] backups/CLAUDE.md.20260510.153400 (CLAUDE.md user version preserved)
|
|
28
|
+
[2026-05-10 15:42:52] [INFO] Install started (upgrade)
|
|
29
|
+
[2026-05-10 15:42:53] [SKILL] frontend-code-review (1.0.0) → skipped (exists)
|
|
30
|
+
[2026-05-10 15:42:53] [SKILL] frontend-design (1.0.0) → skipped (exists)
|
|
31
|
+
[2026-05-10 15:42:53] [SKILL] skill-creator (1.0.0) → skipped (exists)
|
|
32
|
+
[2026-05-10 15:42:53] [SKILL] test1 (1.0.0) → skipped (exists)
|
|
33
|
+
[2026-05-10 15:42:53] [SKILL] test2 (1.0.0) → skipped (exists)
|
|
34
|
+
[2026-05-10 15:42:53] [SKILL] ui-ux-pro-max (1.0.0) → skipped (exists)
|
|
35
|
+
[2026-05-10 15:42:53] [SKILL] v3-fe-biz-patterns (1.0.0) → skipped (exists)
|
|
36
|
+
[2026-05-10 15:42:53] [SKILL] vue (1.0.0) → skipped (exists)
|
|
37
|
+
[2026-05-10 15:42:53] [SETTINGS] settings.json merged
|
|
38
|
+
[2026-05-10 15:42:53] [BACKUP] backups/CLAUDE.md.20260510.154253 (CLAUDE.md user version preserved)
|
|
39
|
+
[2026-05-11 14:53:06] [INFO] Install started (upgrade)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"profiles": [
|
|
4
|
+
{
|
|
5
|
+
"id": "custom",
|
|
6
|
+
"name": "自定义技能组合",
|
|
7
|
+
"description": "自由勾选技能项,按需个性化配置",
|
|
8
|
+
"skills": null
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "profile_mp0p1swf",
|
|
12
|
+
"name": "test",
|
|
13
|
+
"description": "test",
|
|
14
|
+
"skills": [
|
|
15
|
+
"algorithmic-art",
|
|
16
|
+
"brand-guidelines",
|
|
17
|
+
"canvas-design"
|
|
18
|
+
],
|
|
19
|
+
"always_apply": []
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dk-engineer
|
|
3
|
+
description: 沉稳靠谱助手,专注于高质量代码输出和清晰的任务执行。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 开发助手配置说明
|
|
7
|
+
|
|
8
|
+
## 基本设定
|
|
9
|
+
|
|
10
|
+
### 交流与称呼
|
|
11
|
+
|
|
12
|
+
- 使用中文交流
|
|
13
|
+
- 称呼用户为"老马"
|
|
14
|
+
- 语气幽默又不失沉稳,专业靠谱中带点俏皮
|
|
15
|
+
|
|
16
|
+
### 代码著作权标识
|
|
17
|
+
|
|
18
|
+
- 文件著作名标注为 **XiaoMa**
|
|
19
|
+
|
|
20
|
+
## 核心工作规范
|
|
21
|
+
|
|
22
|
+
### 需求确认流程
|
|
23
|
+
|
|
24
|
+
1. 收到需求后先思考实现方案
|
|
25
|
+
2. 复述需求确认理解是否正确
|
|
26
|
+
3. 待用户同意后执行
|
|
27
|
+
|
|
28
|
+
### 决策权限分级
|
|
29
|
+
|
|
30
|
+
| 级别 | 范围 | 策略 |
|
|
31
|
+
| ----------------- | ------------------------------------------- | ---------- |
|
|
32
|
+
| **L1 自主执行** | 读文件、搜索代码、启停 dev server、查看日志 | 直接执行 |
|
|
33
|
+
| **L2 告知后执行** | 编辑文件、安装依赖、运行测试 | 告知后执行 |
|
|
34
|
+
| **L3 必须确认** | 删文件/目录、git 操作、改系统配置 | 等待确认 |
|
|
35
|
+
|
|
36
|
+
### 文件删除规范
|
|
37
|
+
|
|
38
|
+
- 删除前必须说明原因并指明具体文件
|
|
39
|
+
- 用户同意后方可删除
|
|
40
|
+
|
|
41
|
+
### 项目初始化流程
|
|
42
|
+
|
|
43
|
+
接手新任务时先摸底:
|
|
44
|
+
|
|
45
|
+
1. 读 `package.json`/`pom.xml`/`requirements.txt` 确认技术栈
|
|
46
|
+
2. 检查目录结构和模块划分
|
|
47
|
+
3. 确认 dev server 状态和启动命令
|
|
48
|
+
4. 查看当前 git 分支和未提交变更
|
|
49
|
+
5. 先读 `CLAUDE.md` / `README.md`
|
|
50
|
+
|
|
51
|
+
## 代码开发原则
|
|
52
|
+
|
|
53
|
+
### 基本原则
|
|
54
|
+
|
|
55
|
+
- **KISS**:追求简洁,拒绝不必要的复杂性
|
|
56
|
+
- **YAGNI**:只实现当前所需功能,不做过度设计
|
|
57
|
+
- **DRY**:识别重复代码,合理抽象复用
|
|
58
|
+
- **SOLID**:单一职责、开闭原则、里氏替换、接口隔离、依赖反转
|
|
59
|
+
|
|
60
|
+
### 实践要求
|
|
61
|
+
|
|
62
|
+
- 灵活使用 Pinia 状态管理
|
|
63
|
+
- 合理封装组件
|
|
64
|
+
- 代码简洁、可维护、可读性好
|
|
65
|
+
- 复用项目现有架构
|
|
66
|
+
- **不生成测试文件或使用文档**(除非明确要求)
|
|
67
|
+
- **不主动执行 git 操作**(除非用户要求)
|
|
68
|
+
|
|
69
|
+
### 注释规范
|
|
70
|
+
|
|
71
|
+
- 函数注释说明作用
|
|
72
|
+
- 复杂参数添加说明
|
|
73
|
+
- 关键逻辑添加注释
|
|
74
|
+
- 禁止:作者标注、修改记录、TODO/FIXME、显而易见代码的注释
|
|
75
|
+
|
|
76
|
+
## Bash 命令执行规范(Windows)
|
|
77
|
+
|
|
78
|
+
### 默认终端策略
|
|
79
|
+
|
|
80
|
+
| 命令类型 | 执行方式 |
|
|
81
|
+
| ------------------------------------ | ------------------------------- |
|
|
82
|
+
| Unix 工具(ls/grep/find/cat) | `bash -c "命令"` |
|
|
83
|
+
| Git 操作 | `bash -c "git status"` |
|
|
84
|
+
| Node/PNPM(非交互式) | 直接调用 `pnpm install` |
|
|
85
|
+
| Node/PNPM(交互式) | `pwsh.exe -Command "pnpm init"` |
|
|
86
|
+
| PowerShell 专有(Test-Path/where等) | 直接执行 |
|
|
87
|
+
| Python | `bash -c "python script.py"` |
|
|
88
|
+
|
|
89
|
+
### 路径规范
|
|
90
|
+
|
|
91
|
+
- 路径用双引号包裹,使用 `/` 分隔符
|
|
92
|
+
- 工具优先级:ripgrep > grep,专用工具 > 系统命令
|
|
93
|
+
|
|
94
|
+
### 危险操作确认机制
|
|
95
|
+
|
|
96
|
+
以下操作必须获得明确确认:
|
|
97
|
+
|
|
98
|
+
| 类别 | 具体操作 |
|
|
99
|
+
| -------- | ---------------------------- |
|
|
100
|
+
| 文件系统 | 删除/批量修改/移动文件或目录 |
|
|
101
|
+
| 代码提交 | git commit/push/reset |
|
|
102
|
+
| 系统配置 | 环境变量/系统设置/权限变更 |
|
|
103
|
+
| 数据操作 | 数据库删除/结构变更/批量更新 |
|
|
104
|
+
| 网络请求 | 敏感数据发送/生产环境API调用 |
|
|
105
|
+
| 包管理 | 全局安装卸载/核心依赖更新 |
|
|
106
|
+
|
|
107
|
+
确认格式:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
⚠️ 检测到危险操作
|
|
111
|
+
操作类型:[具体操作]
|
|
112
|
+
影响范围:[详细说明]
|
|
113
|
+
风险评估:[潜在后果]
|
|
114
|
+
请确认是否继续?
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## 任务执行框架
|
|
118
|
+
|
|
119
|
+
1. **理解确认**:复述任务目标,确认理解一致
|
|
120
|
+
2. **检索现有代码**:查找相关模块,避免重复造轮子
|
|
121
|
+
3. **提出方案**:复杂任务先给思路,简单任务直接执行
|
|
122
|
+
4. **执行实现**:改动最小化,保持代码风格一致
|
|
123
|
+
5. **自查验证**:检查是否引入新问题
|
|
124
|
+
|
|
125
|
+
## 严格禁止
|
|
126
|
+
|
|
127
|
+
- 重复造轮子
|
|
128
|
+
- 容忍代码报错和不规范代码
|
|
129
|
+
- 低质量的技术输出
|
|
130
|
+
- 过度设计和未来特性预留
|
|
131
|
+
- 未被要求的 git 提交和分支操作
|
package/.claude/profiles.json
CHANGED
|
@@ -2,72 +2,21 @@
|
|
|
2
2
|
"version": 1,
|
|
3
3
|
"profiles": [
|
|
4
4
|
{
|
|
5
|
-
"id": "
|
|
6
|
-
"name": "
|
|
7
|
-
"description": "
|
|
8
|
-
"skills":
|
|
9
|
-
"vue",
|
|
10
|
-
"v3-fe-biz-patterns",
|
|
11
|
-
"frontend-design",
|
|
12
|
-
"frontend-code-review",
|
|
13
|
-
"ui-ux-pro-max",
|
|
14
|
-
"skill-creator"
|
|
15
|
-
],
|
|
16
|
-
"always_apply": [
|
|
17
|
-
"vue",
|
|
18
|
-
"frontend-design",
|
|
19
|
-
"frontend-code-review",
|
|
20
|
-
"ui-ux-pro-max"
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"id": "react-frontend",
|
|
25
|
-
"name": "React 前端专项",
|
|
26
|
-
"description": "React 技术栈 | 界面设计 | 代码评审 | 通用前端能力",
|
|
27
|
-
"skills": [
|
|
28
|
-
"frontend-design",
|
|
29
|
-
"frontend-code-review",
|
|
30
|
-
"ui-ux-pro-max",
|
|
31
|
-
"skill-creator"
|
|
32
|
-
],
|
|
33
|
-
"always_apply": [
|
|
34
|
-
"frontend-design",
|
|
35
|
-
"frontend-code-review",
|
|
36
|
-
"ui-ux-pro-max"
|
|
37
|
-
]
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"id": "backend-java",
|
|
41
|
-
"name": "Java 后端开发",
|
|
42
|
-
"description": "接口架构设计 | 数据库建模 | Java 后端体系能力",
|
|
43
|
-
"skills": [
|
|
44
|
-
"skill-creator"
|
|
45
|
-
],
|
|
46
|
-
"always_apply": []
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"id": "backend-python",
|
|
50
|
-
"name": "Python 后端开发",
|
|
51
|
-
"description": "接口架构设计 | 数据层设计 | Python 后端体系能力",
|
|
52
|
-
"skills": [
|
|
53
|
-
"skill-creator"
|
|
54
|
-
],
|
|
55
|
-
"always_apply": []
|
|
5
|
+
"id": "custom",
|
|
6
|
+
"name": "自定义技能组合",
|
|
7
|
+
"description": "自由勾选技能项,按需个性化配置",
|
|
8
|
+
"skills": null
|
|
56
9
|
},
|
|
57
10
|
{
|
|
58
|
-
"id": "
|
|
59
|
-
"name": "
|
|
60
|
-
"description": "
|
|
11
|
+
"id": "profile_mp0p1swf",
|
|
12
|
+
"name": "test",
|
|
13
|
+
"description": "test",
|
|
61
14
|
"skills": [
|
|
62
|
-
"
|
|
15
|
+
"algorithmic-art",
|
|
16
|
+
"brand-guidelines",
|
|
17
|
+
"canvas-design"
|
|
63
18
|
],
|
|
64
19
|
"always_apply": []
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"id": "custom",
|
|
68
|
-
"name": "自定义技能组合",
|
|
69
|
-
"description": "自由勾选技能项,按需个性化配置",
|
|
70
|
-
"skills": null
|
|
71
20
|
}
|
|
72
21
|
]
|
|
73
22
|
}
|
package/.claude/settings.json
CHANGED
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"skills": {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"skill-creator": {
|
|
12
|
-
"enabled": true,
|
|
13
|
-
"description": "创建和更新技能指令"
|
|
14
|
-
},
|
|
15
|
-
"ui-ux-pro-max": {
|
|
16
|
-
"enabled": true,
|
|
17
|
-
"description": "UI/UX 设计智能系统,50 种样式,21 种配色方案"
|
|
18
|
-
},
|
|
19
|
-
"vue": {
|
|
20
|
-
"enabled": true,
|
|
21
|
-
"description": "Vue 3 组件/组合式函数开发,提供 Composition API 最佳实践"
|
|
22
|
-
},
|
|
23
|
-
"v3-fe-biz-patterns": {
|
|
24
|
-
"enabled": true,
|
|
25
|
-
"description": "前端业务模式库,loading/滚动加载/导入导出/批量操作/表单联动/大列表渲染/Service层封装/Pinia Store模式/分页数据管理等常见业务场景"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"always_apply_skills": []
|
|
2
|
+
"skills": {},
|
|
3
|
+
"always_apply_skills": [
|
|
4
|
+
"vue",
|
|
5
|
+
"frontend-design",
|
|
6
|
+
"frontend-code-review",
|
|
7
|
+
"ui-ux-pro-max"
|
|
8
|
+
],
|
|
9
|
+
"_active_profile": "vue3-frontend",
|
|
10
|
+
"_skill_source": "D:\\软件\\test-skills"
|
|
29
11
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mdk-skills",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.24",
|
|
4
4
|
"description": "mdk-engineer - 沉稳靠谱的前端开发助手 Claude Skills 配置包,一键注入 .claude/ 技能目录和 CLAUDE.md 人设配置",
|
|
5
5
|
"author": "XiaoMa",
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,19 +8,24 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
".claude/",
|
|
10
10
|
"CLAUDE.md",
|
|
11
|
-
"scripts/"
|
|
11
|
+
"scripts/",
|
|
12
|
+
"scripts/web-ui/dist/"
|
|
12
13
|
],
|
|
13
14
|
"bin": {
|
|
14
15
|
"mdk-skills": "./scripts/cli.js"
|
|
15
16
|
},
|
|
16
17
|
"scripts": {
|
|
17
|
-
"postinstall": "node scripts/copy-skills.js"
|
|
18
|
+
"postinstall": "node scripts/copy-skills.js",
|
|
19
|
+
"build:ui": "cd scripts/web-ui && npx vite build",
|
|
20
|
+
"start": "node scripts/web-ui/server.js"
|
|
18
21
|
},
|
|
19
22
|
"dependencies": {
|
|
20
23
|
"@inquirer/prompts": "^8.4.2",
|
|
24
|
+
"chalk": "^5.6.2"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
21
27
|
"@vicons/ionicons5": "^0.13.0",
|
|
22
28
|
"@vitejs/plugin-vue": "^6.0.6",
|
|
23
|
-
"chalk": "^5.6.2",
|
|
24
29
|
"highlight.js": "^11.11.1",
|
|
25
30
|
"marked": "^18.0.3",
|
|
26
31
|
"naive-ui": "^2.44.1",
|
package/scripts/core.js
CHANGED
|
@@ -121,16 +121,60 @@ function listSkillDirs(skillsPath) {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
|
-
*
|
|
124
|
+
* 解析 SKILL.md 的 YAML frontmatter
|
|
125
|
+
* 返回 { name?, description?, version?, tags? },解析失败返回 null
|
|
126
|
+
*/
|
|
127
|
+
function parseFrontmatter(skillDir) {
|
|
128
|
+
const mdPath = path.join(skillDir, "SKILL.md");
|
|
129
|
+
if (!fs.existsSync(mdPath)) return null;
|
|
130
|
+
let content;
|
|
131
|
+
try { content = fs.readFileSync(mdPath, "utf-8"); } catch { return null; }
|
|
132
|
+
content = content.replace(/\r\n/g, "\n");
|
|
133
|
+
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
134
|
+
if (!match) return null;
|
|
135
|
+
const result = {};
|
|
136
|
+
const lines = match[1].split("\n");
|
|
137
|
+
let currentKey = null;
|
|
138
|
+
for (const line of lines) {
|
|
139
|
+
const kv = line.match(/^(\w+):\s*(.*)/);
|
|
140
|
+
if (kv) {
|
|
141
|
+
currentKey = kv[1];
|
|
142
|
+
let val = kv[2].trim();
|
|
143
|
+
if (currentKey === "tags") {
|
|
144
|
+
if (val.startsWith("[")) {
|
|
145
|
+
result[currentKey] = val.slice(1, -1).split(",").map(t => t.trim().replace(/['"]/g, "")).filter(Boolean);
|
|
146
|
+
} else {
|
|
147
|
+
result[currentKey] = [];
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
result[currentKey] = val.replace(/^['"]|['"]$/g, "");
|
|
151
|
+
}
|
|
152
|
+
} else if (currentKey && Array.isArray(result[currentKey]) && line.match(/^\s*-\s/)) {
|
|
153
|
+
const tag = line.replace(/^\s*-\s*/, "").trim().replace(/['"]/g, "");
|
|
154
|
+
if (tag) result[currentKey].push(tag);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* 读取技能元信息。
|
|
162
|
+
* 优先从 .meta.json 读取;没有或解析失败时,从 SKILL.md frontmatter 兜底。
|
|
125
163
|
*/
|
|
126
164
|
function readMeta(skillDir) {
|
|
127
165
|
const metaPath = path.join(skillDir, ".meta.json");
|
|
128
166
|
if (fs.existsSync(metaPath)) {
|
|
129
167
|
try {
|
|
130
168
|
return JSON.parse(fs.readFileSync(metaPath, "utf-8"));
|
|
131
|
-
} catch {
|
|
132
|
-
|
|
133
|
-
|
|
169
|
+
} catch {}
|
|
170
|
+
}
|
|
171
|
+
const fm = parseFrontmatter(skillDir);
|
|
172
|
+
if (fm) {
|
|
173
|
+
return {
|
|
174
|
+
version: fm.version || "1.0.0",
|
|
175
|
+
description: fm.description || "",
|
|
176
|
+
tags: fm.tags || [],
|
|
177
|
+
};
|
|
134
178
|
}
|
|
135
179
|
return null;
|
|
136
180
|
}
|
|
@@ -281,6 +325,7 @@ module.exports = {
|
|
|
281
325
|
deepMerge,
|
|
282
326
|
listSkillDirs,
|
|
283
327
|
readMeta,
|
|
328
|
+
parseFrontmatter,
|
|
284
329
|
installSkills,
|
|
285
330
|
installSettings,
|
|
286
331
|
getPackageSkills,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.status-bar[data-v-bc9519f9]{background:#fff;border-bottom:1px solid #e5e7eb;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 24px;display:flex}.status-item[data-v-bc9519f9]{color:#555;align-items:center;gap:6px;font-size:13px;display:flex}.status-item.clickable[data-v-bc9519f9]{cursor:pointer}.status-item.clickable[data-v-bc9519f9]:hover{color:#2080f0}.status-divider[data-v-bc9519f9]{background:#e0e0e0;width:1px;height:20px}[data-theme=dark] .status-bar{background:#1a1a2e;border-bottom-color:#333}[data-theme=dark] .status-item{color:#aaa}[data-theme=dark] .status-divider{background:#333}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{background:#f5f7fa;height:100%}body{overflow-y:auto}*{scrollbar-width:none;-ms-overflow-style:none}::-webkit-scrollbar{display:none}.app-layout{flex-direction:column;min-height:100vh;padding-top:56px;display:flex}.app-header{z-index:100;background:#fff;border-bottom:1px solid #e5e7eb;align-items:center;height:56px;padding:0 24px;display:flex;position:fixed;top:0;left:0;right:0}.header-inner{justify-content:space-between;align-items:center;width:100%;display:flex}.header-left{align-items:center;gap:32px;display:flex}.logo{color:#1a1a1a;white-space:nowrap;font-size:18px;font-weight:700}.app-content{flex:1;width:100%;max-width:1000px;margin:0 auto;padding:24px}.markdown-content{color:#333;word-wrap:break-word;font-size:14px;line-height:1.7}.markdown-content h1{border-bottom:1px solid #eee;margin:20px 0 12px;padding-bottom:8px;font-size:22px;font-weight:700}.markdown-content h2{border-bottom:1px solid #eee;margin:18px 0 10px;padding-bottom:6px;font-size:18px;font-weight:700}.markdown-content h3{margin:16px 0 8px;font-size:16px;font-weight:600}.markdown-content h4{margin:14px 0 6px;font-size:14px;font-weight:600}.markdown-content h5,.markdown-content h6{margin:12px 0 6px;font-size:13px;font-weight:600}.markdown-content p{margin:8px 0}.markdown-content ul,.markdown-content ol{margin:8px 0;padding-left:24px}.markdown-content li{margin:4px 0}.markdown-content blockquote{color:#555;background:#f0f7ff;border-left:4px solid #2080f0;margin:10px 0;padding:8px 16px}.markdown-content blockquote p{margin:4px 0}.markdown-content a{color:#2080f0;text-decoration:none}.markdown-content a:hover{text-decoration:underline}.markdown-content hr{border:none;border-top:1px solid #e0e0e0;margin:16px 0}.markdown-content table{border-collapse:collapse;width:100%;margin:12px 0;font-size:13px}.markdown-content th,.markdown-content td{text-align:left;border:1px solid #e0e0e0;padding:8px 12px}.markdown-content th{background:#f5f7fa;font-weight:600}.markdown-content tr:nth-child(2n) td{background:#fafafa}.markdown-content img{border-radius:4px;max-width:100%;margin:8px 0}.markdown-content code{color:#d63384;background:#f0f0f0;border-radius:3px;padding:2px 6px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:13px}.markdown-content pre{border:1px solid #e8e8e8;border-radius:6px;margin:12px 0;padding:0;position:relative;overflow:hidden}.markdown-content pre code{color:#333;tab-size:2;background:#f8f9fa;padding:14px 16px;font-size:13px;line-height:1.5;display:block;overflow-x:auto}.markdown-content pre .copy-btn{color:#999;cursor:pointer;opacity:0;background:#fff;border:1px solid #e0e0e0;border-radius:4px;padding:3px 8px;font-size:11px;transition:opacity .2s;position:absolute;top:6px;right:6px}.readme-fold{border:1px solid #e5e7eb;border-radius:6px;margin-bottom:20px;overflow:hidden}.fold-header{cursor:pointer;-webkit-user-select:none;user-select:none;background:#fafafa;align-items:center;gap:6px;padding:10px 16px;font-size:14px;font-weight:600;display:flex}.fold-header:hover{background:#f0f0f0}.fold-arrow{color:#999;font-size:11px;transition:transform .2s}.fold-arrow.open{transform:rotate(90deg)}.fold-body{padding:0 16px 16px}.markdown-content pre:hover .copy-btn{opacity:1}.markdown-content pre .copy-btn:hover{color:#2080f0;border-color:#2080f0}.header-right{align-items:center;gap:8px;display:flex}[data-theme=dark] html,[data-theme=dark] body,[data-theme=dark] #app{background:#1a1a2e}[data-theme=dark] .app-header{background:#1a1a2e;border-bottom-color:#333}[data-theme=dark] .app-content{background:0 0}[data-theme=dark] .readme-fold{border-color:#333}[data-theme=dark] .fold-header{color:#e0e0e0;background:#252538}[data-theme=dark] .fold-header:hover{background:#2a2a40}[data-theme=dark] .fold-body{background:#1e1e32}[data-theme=dark] .fold-arrow{color:#888}[data-theme=dark] .markdown-content{color:#ccc}[data-theme=dark] .markdown-content h1,[data-theme=dark] .markdown-content h2{color:#eee;border-bottom-color:#333}[data-theme=dark] .markdown-content h3,[data-theme=dark] .markdown-content h4{color:#eee}[data-theme=dark] .markdown-content code{color:#e06c9f;background:#2a2a40}[data-theme=dark] .markdown-content pre{border-color:#333}[data-theme=dark] .markdown-content pre code{color:#d4d4d4;background:#1e1e2e}[data-theme=dark] .markdown-content blockquote{color:#bbb;background:#252538;border-left-color:#4a6cf7}[data-theme=dark] .markdown-content a{color:#6a8cff}[data-theme=dark] .markdown-content th{background:#252538}[data-theme=dark] .markdown-content td{border-color:#333}[data-theme=dark] .markdown-content tr:nth-child(2n) td{background:#222238}[data-theme=dark] .markdown-content hr{border-top-color:#333}[data-theme=dark] .markdown-content img{filter:brightness(.85)}[data-theme=dark] .page-header h2{color:#e0e0e0}[data-theme=dark] .scene-desc{color:#aaa}.fade-enter-active,.fade-leave-active{transition:opacity .9s,transform .9s}.fade-enter-from{opacity:0;transform:translateY(6px)}.fade-leave-to{opacity:0}.skill-card[data-v-a11339d4]{cursor:pointer;margin-bottom:12px;transition:box-shadow .2s}.skill-card[data-v-a11339d4]:hover{box-shadow:0 2px 8px #00000014}.skill-meta[data-v-a11339d4]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.skill-version[data-v-a11339d4]{color:#888;font-family:monospace;font-size:12px}.skill-desc[data-v-a11339d4]{color:#666;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.page-header[data-v-773c62ae]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;display:flex}.page-header h2[data-v-773c62ae]{font-size:20px;font-weight:600}.header-actions[data-v-773c62ae]{align-items:center;gap:8px;display:flex}.tag-filter[data-v-773c62ae]{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:16px;display:flex}.detail-status[data-v-773c62ae]{justify-content:center;padding:40px 0;display:flex}.detail-body[data-v-773c62ae]{max-height:65vh;padding:16px 24px;overflow-y:auto}.edit-panel[data-v-773c62ae]{margin-bottom:4px}.edit-row[data-v-773c62ae]{align-items:flex-start;gap:10px;margin-bottom:10px;display:flex}.edit-label[data-v-773c62ae]{color:#888;flex-shrink:0;width:50px;font-size:13px;line-height:30px}.pull-modal-body[data-v-773c62ae]{min-height:100px}.pull-section[data-v-773c62ae]{margin-top:12px}.pull-input-row[data-v-773c62ae]{gap:8px;margin-bottom:8px;display:flex}.pull-input-row .n-input[data-v-773c62ae]{flex:1}.pull-error[data-v-773c62ae]{margin-bottom:8px}.pull-result[data-v-773c62ae]{margin-top:8px}.pull-result-line[data-v-773c62ae]{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:8px;font-size:13px;display:flex}.pull-result-label[data-v-773c62ae]{color:#888;flex-shrink:0}.pull-result-hint[data-v-773c62ae]{color:#999;font-size:12px}.install-panel[data-v-773c62ae]{background:#00000005;border-radius:6px;margin-top:12px;padding:12px}.install-panel-label[data-v-773c62ae]{color:#666;margin-bottom:8px;font-size:13px}.install-check-list[data-v-773c62ae]{margin-bottom:10px}.install-btn[data-v-773c62ae]{float:right}.edit-actions[data-v-773c62ae]{justify-content:flex-end;gap:8px;display:flex}.page-header[data-v-1736a530]{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.page-header h2[data-v-1736a530]{font-size:20px;font-weight:600}.scene-grid[data-v-1736a530]{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin:2px;display:grid}.scene-card[data-v-1736a530]{transition:box-shadow .2s}.scene-card.active[data-v-1736a530]{box-shadow:0 0 0 2px #2080f0}.scene-desc[data-v-1736a530]{color:#666;margin:0;font-size:13px}.scene-footer[data-v-1736a530]{justify-content:space-between;align-items:center;display:flex}.hint-text[data-v-1736a530]{color:#999;font-size:12px}.page-header[data-v-5f659620]{margin-bottom:20px}.page-header h2[data-v-5f659620]{font-size:20px;font-weight:600}.section[data-v-5f659620]{margin-bottom:20px}.init-alert[data-v-5f659620]{margin-bottom:12px}.missing-list[data-v-5f659620]{flex-direction:column;gap:4px;display:flex}.missing-item[data-v-5f659620]{font-size:13px;line-height:1.6}.missing-item code[data-v-5f659620]{background:#0000000f;border-radius:3px;padding:1px 6px;font-size:12px}.skill-tag[data-v-5f659620]{margin:1px 2px;display:inline-block}.missing-hint[data-v-5f659620]{opacity:.7;margin-top:4px;font-size:12px}.source-status[data-v-5f659620]{margin-bottom:16px}.source-actions[data-v-5f659620]{flex-direction:column;gap:12px;display:flex}.action-buttons[data-v-5f659620]{gap:8px;display:flex}.healthy-text[data-v-5f659620]{color:#18a058;font-size:13px}.issue-text[data-v-5f659620]{color:#d03050;font-size:13px}.readme-dialog-desc[data-v-5f659620]{color:#555;margin-bottom:16px;font-size:14px}.readme-checkbox[data-v-5f659620]{align-items:flex-start;margin-bottom:12px;display:flex}.readme-checkbox-content[data-v-5f659620]{flex-direction:column;gap:2px;display:flex}.readme-checkbox-title[data-v-5f659620]{font-size:14px;font-weight:500}.readme-checkbox-desc[data-v-5f659620]{color:#999;font-size:12px}.page-header[data-v-97d38fe1]{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.page-header h2[data-v-97d38fe1]{font-size:20px;font-weight:600}.fade-enter-active[data-v-97d38fe1],.fade-leave-active[data-v-97d38fe1]{transition:opacity .2s}.fade-enter-from[data-v-97d38fe1],.fade-leave-to[data-v-97d38fe1]{opacity:0}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}
|