ethan-skill 1.0.0

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +249 -0
  3. package/dist/cli/index.d.ts +7 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +452 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/mcp/server.d.ts +7 -0
  8. package/dist/mcp/server.d.ts.map +1 -0
  9. package/dist/mcp/server.js +199 -0
  10. package/dist/mcp/server.js.map +1 -0
  11. package/dist/router/trigger-router.d.ts +16 -0
  12. package/dist/router/trigger-router.d.ts.map +1 -0
  13. package/dist/router/trigger-router.js +45 -0
  14. package/dist/router/trigger-router.js.map +1 -0
  15. package/dist/router/trigger-router.test.d.ts +2 -0
  16. package/dist/router/trigger-router.test.d.ts.map +1 -0
  17. package/dist/router/trigger-router.test.js +79 -0
  18. package/dist/router/trigger-router.test.js.map +1 -0
  19. package/dist/skills/01-requirement.d.ts +3 -0
  20. package/dist/skills/01-requirement.d.ts.map +1 -0
  21. package/dist/skills/01-requirement.js +100 -0
  22. package/dist/skills/01-requirement.js.map +1 -0
  23. package/dist/skills/02-task-breakdown.d.ts +3 -0
  24. package/dist/skills/02-task-breakdown.d.ts.map +1 -0
  25. package/dist/skills/02-task-breakdown.js +82 -0
  26. package/dist/skills/02-task-breakdown.js.map +1 -0
  27. package/dist/skills/03-design.d.ts +3 -0
  28. package/dist/skills/03-design.d.ts.map +1 -0
  29. package/dist/skills/03-design.js +80 -0
  30. package/dist/skills/03-design.js.map +1 -0
  31. package/dist/skills/04-implementation.d.ts +3 -0
  32. package/dist/skills/04-implementation.d.ts.map +1 -0
  33. package/dist/skills/04-implementation.js +77 -0
  34. package/dist/skills/04-implementation.js.map +1 -0
  35. package/dist/skills/05-progress-tracking.d.ts +3 -0
  36. package/dist/skills/05-progress-tracking.d.ts.map +1 -0
  37. package/dist/skills/05-progress-tracking.js +78 -0
  38. package/dist/skills/05-progress-tracking.js.map +1 -0
  39. package/dist/skills/06-task-report.d.ts +3 -0
  40. package/dist/skills/06-task-report.d.ts.map +1 -0
  41. package/dist/skills/06-task-report.js +75 -0
  42. package/dist/skills/06-task-report.js.map +1 -0
  43. package/dist/skills/07-weekly-report.d.ts +3 -0
  44. package/dist/skills/07-weekly-report.d.ts.map +1 -0
  45. package/dist/skills/07-weekly-report.js +101 -0
  46. package/dist/skills/07-weekly-report.js.map +1 -0
  47. package/dist/skills/08-code-review.d.ts +3 -0
  48. package/dist/skills/08-code-review.d.ts.map +1 -0
  49. package/dist/skills/08-code-review.js +136 -0
  50. package/dist/skills/08-code-review.js.map +1 -0
  51. package/dist/skills/09-debug.d.ts +3 -0
  52. package/dist/skills/09-debug.d.ts.map +1 -0
  53. package/dist/skills/09-debug.js +151 -0
  54. package/dist/skills/09-debug.js.map +1 -0
  55. package/dist/skills/10-tech-research.d.ts +3 -0
  56. package/dist/skills/10-tech-research.d.ts.map +1 -0
  57. package/dist/skills/10-tech-research.js +141 -0
  58. package/dist/skills/10-tech-research.js.map +1 -0
  59. package/dist/skills/index.d.ts +18 -0
  60. package/dist/skills/index.d.ts.map +1 -0
  61. package/dist/skills/index.js +51 -0
  62. package/dist/skills/index.js.map +1 -0
  63. package/dist/skills/pipeline.d.ts +15 -0
  64. package/dist/skills/pipeline.d.ts.map +1 -0
  65. package/dist/skills/pipeline.js +55 -0
  66. package/dist/skills/pipeline.js.map +1 -0
  67. package/dist/skills/skills.test.d.ts +2 -0
  68. package/dist/skills/skills.test.d.ts.map +1 -0
  69. package/dist/skills/skills.test.js +101 -0
  70. package/dist/skills/skills.test.js.map +1 -0
  71. package/dist/skills/types.d.ts +60 -0
  72. package/dist/skills/types.d.ts.map +1 -0
  73. package/dist/skills/types.js +7 -0
  74. package/dist/skills/types.js.map +1 -0
  75. package/dist/templates/copilot-md.template.d.ts +7 -0
  76. package/dist/templates/copilot-md.template.d.ts.map +1 -0
  77. package/dist/templates/copilot-md.template.js +293 -0
  78. package/dist/templates/copilot-md.template.js.map +1 -0
  79. package/dist/templates/cursor-mdc.template.d.ts +10 -0
  80. package/dist/templates/cursor-mdc.template.d.ts.map +1 -0
  81. package/dist/templates/cursor-mdc.template.js +86 -0
  82. package/dist/templates/cursor-mdc.template.js.map +1 -0
  83. package/dist/templates/templates.test.d.ts +2 -0
  84. package/dist/templates/templates.test.d.ts.map +1 -0
  85. package/dist/templates/templates.test.js +89 -0
  86. package/dist/templates/templates.test.js.map +1 -0
  87. package/dist/vscode/commands.d.ts +4 -0
  88. package/dist/vscode/commands.d.ts.map +1 -0
  89. package/dist/vscode/commands.js +155 -0
  90. package/dist/vscode/commands.js.map +1 -0
  91. package/dist/vscode/extension.d.ts +4 -0
  92. package/dist/vscode/extension.d.ts.map +1 -0
  93. package/dist/vscode/extension.js +96 -0
  94. package/dist/vscode/extension.js.map +1 -0
  95. package/package.json +71 -0
  96. package/rules/claude-code/CLAUDE.md +767 -0
  97. package/rules/cline/.clinerules +622 -0
  98. package/rules/codebuddy/CODEBUDDY.md +70 -0
  99. package/rules/continue/.continuerules +622 -0
  100. package/rules/copilot/copilot-instructions.md +162 -0
  101. package/rules/cursor/.cursorrules +747 -0
  102. package/rules/cursor/smart-flow.mdc +763 -0
  103. package/rules/jetbrains/smart-flow.md +162 -0
  104. package/rules/lingma/smart-flow.md +133 -0
  105. package/rules/windsurf/.windsurf/rules/smart-flow.md +162 -0
  106. package/rules/zed/smart-flow.rules +45 -0
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.debugSkill = void 0;
4
+ exports.debugSkill = {
5
+ id: 'debug',
6
+ name: '故障排查',
7
+ nameEn: 'debug',
8
+ order: 9,
9
+ description: '系统性排查故障,通过假设验证和 5 Why 定位根因,输出临时/永久/预防三层方案',
10
+ detailDescription: `采用结构化方法排查故障:先描述现象建立假设,再逐一验证缩小范围,
11
+ 用 5 Why 挖掘根本原因,最终输出涵盖临时缓解、永久修复和预防措施的完整排查报告。`,
12
+ triggers: [
13
+ '故障排查',
14
+ 'debug',
15
+ '线上故障',
16
+ '报错了',
17
+ '排查问题',
18
+ '定位 bug',
19
+ '为什么报错',
20
+ '程序崩溃',
21
+ '/故障排查',
22
+ '@ethan debug',
23
+ ],
24
+ steps: [
25
+ {
26
+ title: '1. 现象描述',
27
+ content: `用结构化方式描述故障现象:
28
+
29
+ - **错误信息**:完整的报错信息或日志(不要截断)
30
+ - **影响范围**:哪些用户/请求/功能受影响,影响比例
31
+ - **发生时间**:首次发现时间,是否有规律(特定时间/特定操作触发)
32
+ - **复现步骤**:能否稳定复现?复现率?
33
+ - **环境信息**:生产/测试/本地?最近是否有上线或配置变更?`,
34
+ },
35
+ {
36
+ title: '2. 建立假设',
37
+ content: `根据现象,列出所有可能的原因假设:
38
+
39
+ - 按**可能性**从高到低排序(先排查最常见的)
40
+ - 每个假设标注**验证方式**(查日志/加断点/查数据库/还原操作)
41
+ - 格式:「假设 [X] 导致,验证方式:[Y]」
42
+
43
+ 常见假设方向:
44
+ - 代码逻辑错误(边界条件、空指针、类型错误)
45
+ - 配置/环境问题(环境变量、连接字符串、版本不兼容)
46
+ - 数据问题(脏数据、数据迁移遗漏、外键约束)
47
+ - 依赖服务故障(数据库、缓存、第三方 API 超时)
48
+ - 资源耗尽(内存溢出、连接池耗尽、磁盘满)`,
49
+ },
50
+ {
51
+ title: '3. 逐一验证',
52
+ content: `按假设列表逐一排查:
53
+
54
+ - 每个假设用最小代价验证(优先查日志,再加调试代码)
55
+ - 验证结果:✅ 确认 / ❌ 排除 / ❓ 待进一步确认
56
+ - 找到最可能的原因后,**缩小范围**继续深挖
57
+ - 保留所有验证过程(方便写报告和复盘)
58
+
59
+ 排查工具:
60
+ - 日志分析:关键字检索 + 时间范围过滤
61
+ - 数据库:慢查询日志、EXPLAIN 分析
62
+ - 网络:curl 测试接口、抓包分析
63
+ - 内存/CPU:top、heap dump、火焰图`,
64
+ },
65
+ {
66
+ title: '4. 5 Why 根因分析',
67
+ content: `找到直接原因后,用 5 Why 追溯根本原因:
68
+
69
+ \`\`\`
70
+ 现象:接口超时
71
+ Why 1: 为什么超时?→ 数据库查询慢
72
+ Why 2: 为什么查询慢?→ 缺少索引
73
+ Why 3: 为什么缺索引?→ 上线时未执行迁移脚本
74
+ Why 4: 为什么迁移未执行?→ 发布流程没有自动执行 migration
75
+ Why 5: 为什么没有自动化?→ CI/CD 流程中没有这个步骤
76
+ 根因:CI/CD 缺少数据库迁移步骤
77
+ \`\`\`
78
+
79
+ 连续追问直到找到**可操作的系统性原因**(不是"人的失误")`,
80
+ },
81
+ {
82
+ title: '5. 输出排查报告',
83
+ content: `按以下格式输出完整报告:
84
+
85
+ \`\`\`markdown
86
+ ## 故障排查报告
87
+
88
+ ### 故障概述
89
+ - **影响范围**:[描述]
90
+ - **发生时间**:[时间]
91
+ - **根本原因**:[一句话总结]
92
+
93
+ ### 时间线
94
+ - HH:MM 发现异常
95
+ - HH:MM 开始排查
96
+ - HH:MM 定位原因
97
+ - HH:MM 完成修复
98
+
99
+ ### 根因分析(5 Why)
100
+ [5 Why 链条]
101
+
102
+ ### 解决方案
103
+
104
+ #### 🚑 临时缓解(立即执行)
105
+ - [临时措施,如回滚、降级、重启]
106
+
107
+ #### 🔧 永久修复(计划排期)
108
+ - [根本性解决方案]
109
+
110
+ #### 🛡️ 预防措施(长期改进)
111
+ - [流程/监控/测试改进,防止复发]
112
+
113
+ ### 经验教训
114
+ [本次故障暴露的流程/技术缺陷]
115
+ \`\`\``,
116
+ },
117
+ ],
118
+ outputFormat: 'Markdown 排查报告,含故障概述、时间线、5 Why 根因分析、临时缓解/永久修复/预防措施三层方案和经验教训',
119
+ examples: [
120
+ {
121
+ input: '线上接口 500 报错,日志显示 NullPointerException at UserService:89',
122
+ output: `## 故障排查报告
123
+
124
+ ### 故障概述
125
+ - **影响范围**:所有调用 /api/user/profile 的请求,约 100% 失败率
126
+ - **根本原因**:用户登录态中 userId 为 null 时未做保护,直接传入数据库查询
127
+
128
+ ### 根因分析(5 Why)
129
+ Why 1: NPE 在哪里?→ UserService:89 user.getId() 调用时
130
+ Why 2: 为什么 user 为 null?→ Session 中取出 userId=null 后未校验
131
+ Why 3: 为什么 userId 是 null?→ 昨天的发布修改了 Session key 名称
132
+ 根因:发布时未同步更新 Session 读取代码,且缺少非空校验
133
+
134
+ ### 🚑 临时缓解
135
+ - 回滚昨天的发布版本
136
+
137
+ ### 🔧 永久修复
138
+ - 统一 Session key,添加非空保护逻辑
139
+
140
+ ### 🛡️ 预防措施
141
+ - 发布前添加冒烟测试覆盖登录流程`,
142
+ },
143
+ ],
144
+ notes: [
145
+ '先稳定服务(临时缓解),再追根因,避免长时间故障影响用户',
146
+ '5 Why 要追到系统/流程层面,"人员失误"不是根因',
147
+ '排查过程保留完整记录,方便事后复盘',
148
+ ],
149
+ category: '质量侧',
150
+ };
151
+ //# sourceMappingURL=09-debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"09-debug.js","sourceRoot":"","sources":["../../src/skills/09-debug.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAoB;IACzC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,2CAA2C;IACxD,iBAAiB,EAAE;4CACuB;IAC1C,QAAQ,EAAE;QACR,MAAM;QACN,OAAO;QACP,MAAM;QACN,KAAK;QACL,MAAM;QACN,QAAQ;QACR,OAAO;QACP,MAAM;QACN,OAAO;QACP,cAAc;KACf;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;kCAMmB;SAC7B;QACD;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;;;;;;uBAWQ;SAClB;QACD;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;;;;;;2BAWY;SACtB;QACD;YACE,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE;;;;;;;;;;;;gCAYiB;SAC3B;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCR;SACF;KACF;IACD,YAAY,EACV,4DAA4D;IAC9D,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,yDAAyD;YAChE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;kBAmBI;SACb;KACF;IACD,KAAK,EAAE;QACL,8BAA8B;QAC9B,6BAA6B;QAC7B,mBAAmB;KACpB;IACD,QAAQ,EAAE,KAAK;CAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const techResearchSkill: SkillDefinition;
3
+ //# sourceMappingURL=10-tech-research.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"10-tech-research.d.ts","sourceRoot":"","sources":["../../src/skills/10-tech-research.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,eAyI/B,CAAC"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.techResearchSkill = void 0;
4
+ exports.techResearchSkill = {
5
+ id: 'tech-research',
6
+ name: '技术调研',
7
+ nameEn: 'tech_research',
8
+ order: 10,
9
+ description: '结构化技术选型:问题定义→方案收集→加权评分矩阵→POC 验证→明确结论',
10
+ detailDescription: `通过标准化流程完成技术调研:先明确问题和评估标准,再收集候选方案,
11
+ 用加权评分矩阵量化对比,必要时进行 POC 验证,最终输出有据可查的选型结论。`,
12
+ triggers: [
13
+ '技术调研',
14
+ '技术选型',
15
+ 'POC',
16
+ '对比方案',
17
+ '选哪个好',
18
+ '方案对比',
19
+ '调研一下',
20
+ '技术评估',
21
+ '/技术调研',
22
+ '@ethan 调研',
23
+ ],
24
+ steps: [
25
+ {
26
+ title: '1. 问题定义',
27
+ content: `明确调研的边界和目标:
28
+
29
+ - **核心问题**:用一句话描述要解决什么技术问题
30
+ - **约束条件**:
31
+ - 技术栈约束(语言、框架、云平台)
32
+ - 团队约束(学习曲线、现有技能)
33
+ - 资源约束(成本上限、时间窗口)
34
+ - 合规约束(开源协议、数据合规)
35
+ - **评估维度**:列出 5-8 个评估标准,并为每个标准分配**权重**(权重之和为 100)
36
+ - 常用维度:功能完整性、性能、稳定性/成熟度、社区活跃度、学习成本、运维成本、License`,
37
+ },
38
+ {
39
+ title: '2. 方案收集',
40
+ content: `系统收集候选方案:
41
+
42
+ - 通过文档、GitHub、技术博客、同行推荐收集 **3-5 个**候选方案
43
+ - 每个方案记录:
44
+ - 官网/仓库链接
45
+ - 版本/发布日期
46
+ - Stars/下载量(活跃度指标)
47
+ - 核心特性概述(3-5 条)
48
+ - 已知局限性
49
+ - 去掉明显不满足约束条件的方案,保留 2-4 个进入深度对比`,
50
+ },
51
+ {
52
+ title: '3. 对比矩阵(加权评分)',
53
+ content: `用加权评分矩阵量化对比:
54
+
55
+ - 每个维度打分 1-5(1=很差,5=很好)
56
+ - 加权得分 = Σ(各维度得分 × 权重)
57
+ - 用 Markdown 表格呈现:
58
+
59
+ \`\`\`markdown
60
+ | 评估维度 | 权重 | 方案 A | 方案 B | 方案 C |
61
+ |---------|------|--------|--------|--------|
62
+ | 功能完整性 | 30% | 4 (1.2) | 5 (1.5) | 3 (0.9) |
63
+ | 性能 | 25% | 5 (1.25) | 3 (0.75) | 4 (1.0) |
64
+ | 学习成本 | 20% | 3 (0.6) | 4 (0.8) | 5 (1.0) |
65
+ | 社区活跃度 | 15% | 5 (0.75) | 4 (0.6) | 2 (0.3) |
66
+ | 运维成本 | 10% | 3 (0.3) | 4 (0.4) | 5 (0.5) |
67
+ | **加权总分** | 100% | **4.1** | **4.05** | **3.7** |
68
+ \`\`\`
69
+
70
+ 标注每个分数的**简短依据**(不要只给数字)`,
71
+ },
72
+ {
73
+ title: '4. POC 验证',
74
+ content: `对得分接近的候选方案(差距 < 0.5 分),通过 POC 验证关键风险:
75
+
76
+ - **POC 范围**:只验证最有风险的 1-2 个假设,不做完整功能
77
+ - **POC 时间盒**:限定在 1-3 天内完成
78
+ - **验证清单**:
79
+ - [ ] 核心功能可用性(Happy Path)
80
+ - [ ] 性能基准测试(如果性能是关键维度)
81
+ - [ ] 与现有技术栈的集成难度
82
+ - [ ] 边界场景和错误处理
83
+ - 记录 POC 结果(代码片段 + 关键指标数据)`,
84
+ },
85
+ {
86
+ title: '5. 明确结论',
87
+ content: `输出有据可查的选型结论:
88
+
89
+ \`\`\`markdown
90
+ ## 技术调研结论
91
+
92
+ ### 推荐方案
93
+ **[方案名称]**
94
+
95
+ ### 推荐理由
96
+ 1. [主要优势 1]
97
+ 2. [主要优势 2]
98
+ 3. [评分最高/POC 验证通过]
99
+
100
+ ### 已知风险和缓解措施
101
+ - 风险:[描述] → 缓解:[措施]
102
+
103
+ ### 放弃其他方案的原因
104
+ - [方案 B]:[原因]
105
+ - [方案 C]:[原因]
106
+
107
+ ### 后续行动
108
+ - [ ] [下一步行动]
109
+ \`\`\``,
110
+ },
111
+ ],
112
+ outputFormat: 'Markdown 调研报告,含问题定义、候选方案概述、加权评分矩阵、POC 结果(如有)和最终选型结论',
113
+ examples: [
114
+ {
115
+ input: '调研前端状态管理方案,在 Redux、Zustand、Jotai 中选一个',
116
+ output: `## 技术调研结论
117
+
118
+ ### 推荐方案
119
+ **Zustand**
120
+
121
+ ### 推荐理由
122
+ 1. API 极简,学习曲线最低(团队约束关键因素)
123
+ 2. 无 boilerplate,代码量减少约 60%
124
+ 3. 加权总分 4.2,领先 Redux (3.6) 和 Jotai (3.9)
125
+
126
+ ### 已知风险
127
+ - 大型应用的 devtools 支持弱于 Redux → 缓解:配合 zustand/middleware 使用
128
+
129
+ ### 放弃原因
130
+ - Redux:boilerplate 过多,不适合中小项目
131
+ - Jotai:原子化模型对团队学习成本较高`,
132
+ },
133
+ ],
134
+ notes: [
135
+ '评估维度权重要在调研开始前确定,避免"为结论找理由"的逆向推导',
136
+ 'POC 代码要保留在仓库中,方便团队评审',
137
+ '选型结论要包含"不选其他方案的原因",方便后续追溯决策依据',
138
+ ],
139
+ category: '需求侧',
140
+ };
141
+ //# sourceMappingURL=10-tech-research.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"10-tech-research.js","sourceRoot":"","sources":["../../src/skills/10-tech-research.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAoB;IAChD,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,eAAe;IACvB,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,sCAAsC;IACnD,iBAAiB,EAAE;wCACmB;IACtC,QAAQ,EAAE;QACR,MAAM;QACN,MAAM;QACN,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,OAAO;QACP,WAAW;KACZ;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;;;;kDASmC;SAC7C;QACD;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;;;;gCASiB;SAC3B;QACD;YACE,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE;;;;;;;;;;;;;;;;;wBAiBS;SACnB;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;2BASY;SACtB;QACD;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;OAsBR;SACF;KACF;IACD,YAAY,EACV,qDAAqD;IACvD,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,uCAAuC;YAC9C,MAAM,EAAE;;;;;;;;;;;;;;;uBAeS;SAClB;KACF;IACD,KAAK,EAAE;QACL,iCAAiC;QACjC,sBAAsB;QACtB,+BAA+B;KAChC;IACD,QAAQ,EAAE,KAAK;CAChB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 单一数据源入口
3
+ * 构建脚本和运行时均从此文件取数据
4
+ */
5
+ export { requirementSkill } from './01-requirement';
6
+ export { taskBreakdownSkill } from './02-task-breakdown';
7
+ export { designSkill } from './03-design';
8
+ export { implementationSkill } from './04-implementation';
9
+ export { progressTrackingSkill } from './05-progress-tracking';
10
+ export { taskReportSkill } from './06-task-report';
11
+ export { weeklyReportSkill } from './07-weekly-report';
12
+ export { codeReviewSkill } from './08-code-review';
13
+ export { debugSkill } from './09-debug';
14
+ export { techResearchSkill } from './10-tech-research';
15
+ export type { SkillDefinition, SkillStep, SkillExample, Platform, BuildContext, PipelineDefinition } from './types';
16
+ /** 所有 Skill 按顺序排列 */
17
+ export declare const ALL_SKILLS: import("./types").SkillDefinition[];
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAapH,qBAAqB;AACrB,eAAO,MAAM,UAAU,qCAWtB,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * 单一数据源入口
4
+ * 构建脚本和运行时均从此文件取数据
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ALL_SKILLS = exports.techResearchSkill = exports.debugSkill = exports.codeReviewSkill = exports.weeklyReportSkill = exports.taskReportSkill = exports.progressTrackingSkill = exports.implementationSkill = exports.designSkill = exports.taskBreakdownSkill = exports.requirementSkill = void 0;
8
+ var _01_requirement_1 = require("./01-requirement");
9
+ Object.defineProperty(exports, "requirementSkill", { enumerable: true, get: function () { return _01_requirement_1.requirementSkill; } });
10
+ var _02_task_breakdown_1 = require("./02-task-breakdown");
11
+ Object.defineProperty(exports, "taskBreakdownSkill", { enumerable: true, get: function () { return _02_task_breakdown_1.taskBreakdownSkill; } });
12
+ var _03_design_1 = require("./03-design");
13
+ Object.defineProperty(exports, "designSkill", { enumerable: true, get: function () { return _03_design_1.designSkill; } });
14
+ var _04_implementation_1 = require("./04-implementation");
15
+ Object.defineProperty(exports, "implementationSkill", { enumerable: true, get: function () { return _04_implementation_1.implementationSkill; } });
16
+ var _05_progress_tracking_1 = require("./05-progress-tracking");
17
+ Object.defineProperty(exports, "progressTrackingSkill", { enumerable: true, get: function () { return _05_progress_tracking_1.progressTrackingSkill; } });
18
+ var _06_task_report_1 = require("./06-task-report");
19
+ Object.defineProperty(exports, "taskReportSkill", { enumerable: true, get: function () { return _06_task_report_1.taskReportSkill; } });
20
+ var _07_weekly_report_1 = require("./07-weekly-report");
21
+ Object.defineProperty(exports, "weeklyReportSkill", { enumerable: true, get: function () { return _07_weekly_report_1.weeklyReportSkill; } });
22
+ var _08_code_review_1 = require("./08-code-review");
23
+ Object.defineProperty(exports, "codeReviewSkill", { enumerable: true, get: function () { return _08_code_review_1.codeReviewSkill; } });
24
+ var _09_debug_1 = require("./09-debug");
25
+ Object.defineProperty(exports, "debugSkill", { enumerable: true, get: function () { return _09_debug_1.debugSkill; } });
26
+ var _10_tech_research_1 = require("./10-tech-research");
27
+ Object.defineProperty(exports, "techResearchSkill", { enumerable: true, get: function () { return _10_tech_research_1.techResearchSkill; } });
28
+ const _01_requirement_2 = require("./01-requirement");
29
+ const _02_task_breakdown_2 = require("./02-task-breakdown");
30
+ const _03_design_2 = require("./03-design");
31
+ const _04_implementation_2 = require("./04-implementation");
32
+ const _05_progress_tracking_2 = require("./05-progress-tracking");
33
+ const _06_task_report_2 = require("./06-task-report");
34
+ const _07_weekly_report_2 = require("./07-weekly-report");
35
+ const _08_code_review_2 = require("./08-code-review");
36
+ const _09_debug_2 = require("./09-debug");
37
+ const _10_tech_research_2 = require("./10-tech-research");
38
+ /** 所有 Skill 按顺序排列 */
39
+ exports.ALL_SKILLS = [
40
+ _01_requirement_2.requirementSkill,
41
+ _02_task_breakdown_2.taskBreakdownSkill,
42
+ _03_design_2.designSkill,
43
+ _04_implementation_2.implementationSkill,
44
+ _05_progress_tracking_2.progressTrackingSkill,
45
+ _06_task_report_2.taskReportSkill,
46
+ _07_weekly_report_2.weeklyReportSkill,
47
+ _08_code_review_2.codeReviewSkill,
48
+ _09_debug_2.debugSkill,
49
+ _10_tech_research_2.techResearchSkill,
50
+ ];
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,0DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,0CAA0C;AAAjC,yGAAA,WAAW,OAAA;AACpB,0DAA0D;AAAjD,yHAAA,mBAAmB,OAAA;AAC5B,gEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wCAAwC;AAA/B,uGAAA,UAAU,OAAA;AACnB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAI1B,sDAAoD;AACpD,4DAAyD;AACzD,4CAA0C;AAC1C,4DAA0D;AAC1D,kEAA+D;AAC/D,sDAAmD;AACnD,0DAAuD;AACvD,sDAAmD;AACnD,0CAAwC;AACxC,0DAAuD;AAEvD,qBAAqB;AACR,QAAA,UAAU,GAAG;IACxB,kCAAgB;IAChB,uCAAkB;IAClB,wBAAW;IACX,wCAAmB;IACnB,6CAAqB;IACrB,iCAAe;IACf,qCAAiB;IACjB,iCAAe;IACf,sBAAU;IACV,qCAAiB;CAClB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Pipeline 定义(链式 Skill 组合)
3
+ * ⚠️ 此文件只能被 cli/index.ts 和 mcp/server.ts 导入
4
+ * index.ts 不得导入此文件(防循环依赖)
5
+ */
6
+ import type { PipelineDefinition, SkillDefinition } from './types';
7
+ export declare const PIPELINES: PipelineDefinition[];
8
+ /**
9
+ * 根据 pipeline id 解析出 pipeline 定义和对应的 Skill 列表
10
+ */
11
+ export declare function resolvePipeline(id: string): {
12
+ pipeline: PipelineDefinition;
13
+ skills: SkillDefinition[];
14
+ } | null;
15
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAGnE,eAAO,MAAM,SAAS,EAAE,kBAAkB,EA+BzC,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,GACT;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,GAAG,IAAI,CASpE"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * Pipeline 定义(链式 Skill 组合)
4
+ * ⚠️ 此文件只能被 cli/index.ts 和 mcp/server.ts 导入
5
+ * index.ts 不得导入此文件(防循环依赖)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.PIPELINES = void 0;
9
+ exports.resolvePipeline = resolvePipeline;
10
+ const index_1 = require("./index");
11
+ exports.PIPELINES = [
12
+ {
13
+ id: 'dev-workflow',
14
+ name: '开发工作流',
15
+ description: '完整的需求开发流程:需求理解 → 任务拆解 → 方案设计 → 执行实现',
16
+ skillIds: [
17
+ 'requirement-understanding',
18
+ 'task-breakdown',
19
+ 'solution-design',
20
+ 'implementation',
21
+ ],
22
+ },
23
+ {
24
+ id: 'reporting',
25
+ name: '汇报工作流',
26
+ description: '完整的汇报流程:进度跟踪 → 任务报告 → 周报生成',
27
+ skillIds: [
28
+ 'progress-tracking',
29
+ 'task-report',
30
+ 'weekly-report',
31
+ ],
32
+ },
33
+ {
34
+ id: 'quality-workflow',
35
+ name: '质量保障工作流',
36
+ description: '代码质量和问题处理流程:代码审查 → 故障排查',
37
+ skillIds: [
38
+ 'code-review',
39
+ 'debug',
40
+ ],
41
+ },
42
+ ];
43
+ /**
44
+ * 根据 pipeline id 解析出 pipeline 定义和对应的 Skill 列表
45
+ */
46
+ function resolvePipeline(id) {
47
+ const pipeline = exports.PIPELINES.find((p) => p.id === id);
48
+ if (!pipeline)
49
+ return null;
50
+ const skills = pipeline.skillIds
51
+ .map((skillId) => index_1.ALL_SKILLS.find((s) => s.id === skillId))
52
+ .filter((s) => s !== undefined);
53
+ return { pipeline, skills };
54
+ }
55
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAyCH,0CAWC;AAjDD,mCAAqC;AAExB,QAAA,SAAS,GAAyB;IAC7C;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE;YACR,2BAA2B;YAC3B,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;SACjB;KACF;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE;YACR,mBAAmB;YACnB,aAAa;YACb,eAAe;SAChB;KACF;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE;YACR,aAAa;YACb,OAAO;SACR;KACF;CACF,CAAC;AAEF;;GAEG;AACH,SAAgB,eAAe,CAC7B,EAAU;IAEV,MAAM,QAAQ,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ;SAC7B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;SAC1D,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=skills.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.test.d.ts","sourceRoot":"","sources":["../../src/skills/skills.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const index_1 = require("./index");
5
+ const pipeline_1 = require("./pipeline");
6
+ // ─── ALL_SKILLS 基础契约 ────────────────────────────────────────────────────
7
+ (0, vitest_1.describe)('ALL_SKILLS', () => {
8
+ (0, vitest_1.it)('should contain exactly 10 skills', () => {
9
+ (0, vitest_1.expect)(index_1.ALL_SKILLS).toHaveLength(10);
10
+ });
11
+ (0, vitest_1.it)('should have unique ids', () => {
12
+ const ids = index_1.ALL_SKILLS.map((s) => s.id);
13
+ (0, vitest_1.expect)(new Set(ids).size).toBe(ids.length);
14
+ });
15
+ (0, vitest_1.it)('should have unique nameEn values', () => {
16
+ const names = index_1.ALL_SKILLS.map((s) => s.nameEn);
17
+ (0, vitest_1.expect)(new Set(names).size).toBe(names.length);
18
+ });
19
+ (0, vitest_1.it)('should have sequential order numbers starting from 1', () => {
20
+ const orders = index_1.ALL_SKILLS.map((s) => s.order).sort((a, b) => a - b);
21
+ (0, vitest_1.expect)(orders).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
22
+ });
23
+ (0, vitest_1.it)('every skill should have at least one trigger', () => {
24
+ for (const skill of index_1.ALL_SKILLS) {
25
+ (0, vitest_1.expect)(skill.triggers.length, `${skill.id} should have triggers`).toBeGreaterThan(0);
26
+ }
27
+ });
28
+ (0, vitest_1.it)('every skill should have at least one step', () => {
29
+ for (const skill of index_1.ALL_SKILLS) {
30
+ (0, vitest_1.expect)(skill.steps.length, `${skill.id} should have steps`).toBeGreaterThan(0);
31
+ }
32
+ });
33
+ (0, vitest_1.it)('every step should have non-empty title and content', () => {
34
+ for (const skill of index_1.ALL_SKILLS) {
35
+ for (const step of skill.steps) {
36
+ (0, vitest_1.expect)(step.title.trim(), `${skill.id} step title`).not.toBe('');
37
+ (0, vitest_1.expect)(step.content.trim(), `${skill.id} step content`).not.toBe('');
38
+ }
39
+ }
40
+ });
41
+ (0, vitest_1.it)('skills with nextSkill should reference a valid skill id', () => {
42
+ const ids = new Set(index_1.ALL_SKILLS.map((s) => s.id));
43
+ for (const skill of index_1.ALL_SKILLS) {
44
+ if (skill.nextSkill) {
45
+ (0, vitest_1.expect)(ids.has(skill.nextSkill), `${skill.id}.nextSkill="${skill.nextSkill}" is invalid`).toBe(true);
46
+ }
47
+ }
48
+ });
49
+ (0, vitest_1.it)('all categories should be valid values when set', () => {
50
+ const validCategories = new Set(['需求侧', '执行侧', '跟踪侧', '输出侧', '质量侧']);
51
+ for (const skill of index_1.ALL_SKILLS) {
52
+ if (skill.category) {
53
+ (0, vitest_1.expect)(validCategories.has(skill.category), `${skill.id}.category is invalid`).toBe(true);
54
+ }
55
+ }
56
+ });
57
+ });
58
+ // ─── PIPELINES ──────────────────────────────────────────────────────────────
59
+ (0, vitest_1.describe)('PIPELINES', () => {
60
+ (0, vitest_1.it)('should have at least one pipeline', () => {
61
+ (0, vitest_1.expect)(pipeline_1.PIPELINES.length).toBeGreaterThan(0);
62
+ });
63
+ (0, vitest_1.it)('should have unique pipeline ids', () => {
64
+ const ids = pipeline_1.PIPELINES.map((p) => p.id);
65
+ (0, vitest_1.expect)(new Set(ids).size).toBe(ids.length);
66
+ });
67
+ (0, vitest_1.it)('every pipeline should reference valid skill ids', () => {
68
+ const skillIds = new Set(index_1.ALL_SKILLS.map((s) => s.id));
69
+ for (const pipeline of pipeline_1.PIPELINES) {
70
+ for (const skillId of pipeline.skillIds) {
71
+ (0, vitest_1.expect)(skillIds.has(skillId), `Pipeline "${pipeline.id}" references unknown skill "${skillId}"`).toBe(true);
72
+ }
73
+ }
74
+ });
75
+ (0, vitest_1.it)('every pipeline should have at least 2 skills', () => {
76
+ for (const pipeline of pipeline_1.PIPELINES) {
77
+ (0, vitest_1.expect)(pipeline.skillIds.length, `${pipeline.id} needs ≥2 skills`).toBeGreaterThanOrEqual(2);
78
+ }
79
+ });
80
+ });
81
+ // ─── resolvePipeline ────────────────────────────────────────────────────────
82
+ (0, vitest_1.describe)('resolvePipeline', () => {
83
+ (0, vitest_1.it)('returns null for unknown pipeline id', () => {
84
+ (0, vitest_1.expect)((0, pipeline_1.resolvePipeline)('non-existent')).toBeNull();
85
+ });
86
+ (0, vitest_1.it)('resolves dev-workflow correctly', () => {
87
+ const result = (0, pipeline_1.resolvePipeline)('dev-workflow');
88
+ (0, vitest_1.expect)(result).not.toBeNull();
89
+ (0, vitest_1.expect)(result.pipeline.id).toBe('dev-workflow');
90
+ (0, vitest_1.expect)(result.skills.length).toBeGreaterThan(0);
91
+ });
92
+ (0, vitest_1.it)('resolved skills match the pipeline skillIds order', () => {
93
+ for (const pipeline of pipeline_1.PIPELINES) {
94
+ const result = (0, pipeline_1.resolvePipeline)(pipeline.id);
95
+ (0, vitest_1.expect)(result).not.toBeNull();
96
+ const resolvedIds = result.skills.map((s) => s.id);
97
+ (0, vitest_1.expect)(resolvedIds).toEqual(pipeline.skillIds);
98
+ }
99
+ });
100
+ });
101
+ //# sourceMappingURL=skills.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.test.js","sourceRoot":"","sources":["../../src/skills/skills.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * 整个架构的数据契约(Single Source of Truth)
3
+ * 所有平台的规则文件均从此接口生成
4
+ */
5
+ export interface SkillStep {
6
+ /** 步骤标题 */
7
+ title: string;
8
+ /** 步骤详细说明(Markdown 格式) */
9
+ content: string;
10
+ }
11
+ export interface SkillExample {
12
+ /** 示例输入/触发场景 */
13
+ input: string;
14
+ /** 示例输出/期望结果 */
15
+ output: string;
16
+ }
17
+ export interface SkillDefinition {
18
+ /** 唯一标识符,用于 MCP tool name 和文件名 */
19
+ id: string;
20
+ /** 显示名称(中文) */
21
+ name: string;
22
+ /** 英文名称,用于 MCP tool name */
23
+ nameEn: string;
24
+ /** 简短描述(一句话),用于 MCP tool description */
25
+ description: string;
26
+ /** 详细描述,用于规则文件头部 */
27
+ detailDescription: string;
28
+ /** 触发关键词列表(用于路由匹配) */
29
+ triggers: string[];
30
+ /** 执行步骤(有序) */
31
+ steps: SkillStep[];
32
+ /** 输出格式说明 */
33
+ outputFormat: string;
34
+ /** 使用示例(可选) */
35
+ examples?: SkillExample[];
36
+ /** 注意事项(可选) */
37
+ notes?: string[];
38
+ /** Skill 排序序号(1-based) */
39
+ order: number;
40
+ /** Skill 所属分类(可选) */
41
+ category?: '需求侧' | '执行侧' | '跟踪侧' | '输出侧' | '质量侧';
42
+ /** 推荐的下一个 Skill ID(可选) */
43
+ nextSkill?: string;
44
+ }
45
+ export type Platform = 'cursor-new' | 'cursor-old' | 'copilot' | 'cline' | 'lingma' | 'codebuddy' | 'windsurf' | 'zed' | 'jetbrains' | 'continue' | 'claude-code';
46
+ export interface PipelineDefinition {
47
+ id: string;
48
+ name: string;
49
+ description: string;
50
+ skillIds: string[];
51
+ }
52
+ export interface BuildContext {
53
+ platform: Platform;
54
+ skills: SkillDefinition[];
55
+ /** 生成时间(ISO 字符串) */
56
+ generatedAt: string;
57
+ /** 包版本 */
58
+ version: string;
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,SAAS;IACxB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe;IACf,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACjD,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,OAAO,GACP,QAAQ,GACR,WAAW,GACX,UAAU,GACV,KAAK,GACL,WAAW,GACX,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,oBAAoB;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU;IACV,OAAO,EAAE,MAAM,CAAC;CACjB"}