ai-dev-analytics 1.1.12 → 2.0.1
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.en.md +51 -57
- package/README.md +68 -485
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +125 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +19 -176
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/memory.d.ts.map +1 -1
- package/dist/cli/commands/memory.js +3 -13
- package/dist/cli/commands/memory.js.map +1 -1
- package/dist/cli/commands/rules.d.ts +0 -10
- package/dist/cli/commands/rules.d.ts.map +1 -1
- package/dist/cli/commands/rules.js +9 -34
- package/dist/cli/commands/rules.js.map +1 -1
- package/dist/cli/commands/skills.d.ts +0 -5
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +5 -24
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +2 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +28 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/index.js +26 -85
- package/dist/cli/index.js.map +1 -1
- package/dist/{schemas/run-json.d.ts → internal/runtime/schema.d.ts} +4 -18
- package/dist/internal/runtime/schema.d.ts.map +1 -0
- package/dist/{schemas/run-json.js → internal/runtime/schema.js} +5 -9
- package/dist/internal/runtime/schema.js.map +1 -0
- package/dist/{utils/run-data.d.ts → internal/runtime/state.d.ts} +7 -8
- package/dist/internal/runtime/state.d.ts.map +1 -0
- package/dist/{utils/run-data.js → internal/runtime/state.js} +11 -12
- package/dist/internal/runtime/state.js.map +1 -0
- package/dist/internal/runtime/summary.d.ts +8 -0
- package/dist/internal/runtime/summary.d.ts.map +1 -0
- package/dist/internal/runtime/summary.js +260 -0
- package/dist/internal/runtime/summary.js.map +1 -0
- package/dist/internal/runtime/tokens.d.ts.map +1 -0
- package/dist/internal/runtime/tokens.js.map +1 -0
- package/dist/mcp/server.js +9 -8
- package/dist/mcp/server.js.map +1 -1
- package/dist/schemas/aida-project.d.ts +27 -1
- package/dist/schemas/aida-project.d.ts.map +1 -1
- package/dist/schemas/rules.d.ts +15 -0
- package/dist/schemas/rules.d.ts.map +1 -0
- package/dist/schemas/rules.js +5 -0
- package/dist/schemas/rules.js.map +1 -0
- package/dist/services/project-build.d.ts +44 -0
- package/dist/services/project-build.d.ts.map +1 -0
- package/dist/services/project-build.js +32 -0
- package/dist/services/project-build.js.map +1 -0
- package/dist/services/project-health.d.ts +14 -0
- package/dist/services/project-health.d.ts.map +1 -0
- package/dist/services/project-health.js +19 -0
- package/dist/services/project-health.js.map +1 -0
- package/dist/services/security-audit.d.ts +59 -0
- package/dist/services/security-audit.d.ts.map +1 -0
- package/dist/services/security-audit.js +638 -0
- package/dist/services/security-audit.js.map +1 -0
- package/dist/utils/ai-build.d.ts +3 -8
- package/dist/utils/ai-build.d.ts.map +1 -1
- package/dist/utils/ai-build.js +31 -117
- package/dist/utils/ai-build.js.map +1 -1
- package/dist/utils/guide.d.ts +3 -3
- package/dist/utils/guide.d.ts.map +1 -1
- package/dist/utils/guide.js +91 -68
- package/dist/utils/guide.js.map +1 -1
- package/dist/utils/import.d.ts.map +1 -1
- package/dist/utils/import.js +4 -15
- package/dist/utils/import.js.map +1 -1
- package/dist/utils/memory.d.ts +2 -0
- package/dist/utils/memory.d.ts.map +1 -1
- package/dist/utils/memory.js +440 -95
- package/dist/utils/memory.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -10
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +5 -17
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/project-health.d.ts +39 -0
- package/dist/utils/project-health.d.ts.map +1 -0
- package/dist/utils/project-health.js +286 -0
- package/dist/utils/project-health.js.map +1 -0
- package/dist/utils/registry.d.ts +11 -0
- package/dist/utils/registry.d.ts.map +1 -0
- package/dist/utils/registry.js +65 -0
- package/dist/utils/registry.js.map +1 -0
- package/dist/utils/rules.d.ts +11 -1
- package/dist/utils/rules.d.ts.map +1 -1
- package/dist/utils/rules.js +76 -8
- package/dist/utils/rules.js.map +1 -1
- package/dist/utils/skills.d.ts +6 -9
- package/dist/utils/skills.d.ts.map +1 -1
- package/dist/utils/skills.js +26 -54
- package/dist/utils/skills.js.map +1 -1
- package/package.json +12 -14
- package/dist/cli/commands/build.d.ts +0 -2
- package/dist/cli/commands/build.d.ts.map +0 -1
- package/dist/cli/commands/build.js +0 -56
- package/dist/cli/commands/build.js.map +0 -1
- package/dist/cli/commands/dashboard.d.ts +0 -2
- package/dist/cli/commands/dashboard.d.ts.map +0 -1
- package/dist/cli/commands/dashboard.js +0 -70
- package/dist/cli/commands/dashboard.js.map +0 -1
- package/dist/cli/commands/import.d.ts +0 -2
- package/dist/cli/commands/import.d.ts.map +0 -1
- package/dist/cli/commands/import.js +0 -71
- package/dist/cli/commands/import.js.map +0 -1
- package/dist/cli/commands/log.d.ts +0 -2
- package/dist/cli/commands/log.d.ts.map +0 -1
- package/dist/cli/commands/log.js +0 -440
- package/dist/cli/commands/log.js.map +0 -1
- package/dist/cli/commands/merge-data.d.ts +0 -20
- package/dist/cli/commands/merge-data.d.ts.map +0 -1
- package/dist/cli/commands/merge-data.js +0 -574
- package/dist/cli/commands/merge-data.js.map +0 -1
- package/dist/cli/commands/merge.d.ts +0 -2
- package/dist/cli/commands/merge.d.ts.map +0 -1
- package/dist/cli/commands/merge.js +0 -82
- package/dist/cli/commands/merge.js.map +0 -1
- package/dist/cli/commands/migrate-dir.d.ts +0 -6
- package/dist/cli/commands/migrate-dir.d.ts.map +0 -1
- package/dist/cli/commands/migrate-dir.js +0 -125
- package/dist/cli/commands/migrate-dir.js.map +0 -1
- package/dist/cli/commands/migrate-legacy.d.ts +0 -2
- package/dist/cli/commands/migrate-legacy.d.ts.map +0 -1
- package/dist/cli/commands/migrate-legacy.js +0 -143
- package/dist/cli/commands/migrate-legacy.js.map +0 -1
- package/dist/cli/commands/migrate.d.ts +0 -2
- package/dist/cli/commands/migrate.d.ts.map +0 -1
- package/dist/cli/commands/migrate.js +0 -300
- package/dist/cli/commands/migrate.js.map +0 -1
- package/dist/cli/commands/reindex.d.ts +0 -14
- package/dist/cli/commands/reindex.d.ts.map +0 -1
- package/dist/cli/commands/reindex.js +0 -139
- package/dist/cli/commands/reindex.js.map +0 -1
- package/dist/cli/commands/report.d.ts +0 -2
- package/dist/cli/commands/report.d.ts.map +0 -1
- package/dist/cli/commands/report.js +0 -219
- package/dist/cli/commands/report.js.map +0 -1
- package/dist/cli/commands/start.d.ts +0 -2
- package/dist/cli/commands/start.d.ts.map +0 -1
- package/dist/cli/commands/start.js +0 -155
- package/dist/cli/commands/start.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -2
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -70
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/update.d.ts +0 -2
- package/dist/cli/commands/update.d.ts.map +0 -1
- package/dist/cli/commands/update.js +0 -73
- package/dist/cli/commands/update.js.map +0 -1
- package/dist/schemas/run-json.d.ts.map +0 -1
- package/dist/schemas/run-json.js.map +0 -1
- package/dist/server/api.d.ts +0 -30
- package/dist/server/api.d.ts.map +0 -1
- package/dist/server/api.js +0 -239
- package/dist/server/api.js.map +0 -1
- package/dist/server/index.d.ts +0 -2
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -228
- package/dist/server/index.js.map +0 -1
- package/dist/utils/run-data.d.ts.map +0 -1
- package/dist/utils/run-data.js.map +0 -1
- package/dist/utils/tokens.d.ts.map +0 -1
- package/dist/utils/tokens.js.map +0 -1
- package/src/assets/skills/audit.md +0 -98
- package/src/assets/skills/bug-fixer.md +0 -43
- package/src/assets/skills/code-generator.md +0 -71
- package/src/assets/skills/commit-code.md +0 -67
- package/src/assets/skills/dashboard-generator.md +0 -65
- package/src/assets/skills/dev-flower.md +0 -85
- package/src/assets/skills/deviation-recorder.md +0 -83
- package/src/assets/skills/docx-to-markdown.md +0 -69
- package/src/assets/skills/mcp-reviewer.md +0 -38
- package/src/assets/skills/requirement-analyzer.md +0 -103
- package/src/assets/skills/rules-evolver.md +0 -47
- package/src/assets/skills/self-reviewer.md +0 -49
- package/src/assets/skills/task-splitter.md +0 -60
- package/src/assets/skills/workflow-orchestrator.md +0 -209
- package/src/assets/templates/demo-run.json +0 -910
- package/src/assets/templates/run.json +0 -63
- package/src/dashboard/assets/index-B8QcPcg7.css +0 -1
- package/src/dashboard/assets/index-DcAl6lhS.js +0 -111
- package/src/dashboard/demo/overview.json +0 -71
- package/src/dashboard/demo/run.en.json +0 -1169
- package/src/dashboard/demo/run.json +0 -2667
- package/src/dashboard/demo/run.zh.json +0 -1169
- package/src/dashboard/demo/runs.json +0 -19
- package/src/dashboard/index.html +0 -13
- /package/dist/{utils → internal/runtime}/tokens.d.ts +0 -0
- /package/dist/{utils → internal/runtime}/tokens.js +0 -0
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: requirement-analyzer
|
|
3
|
-
description: 分析需求文档,对比 PRD 与已有代码/规则,提取需实现的功能点及约束。
|
|
4
|
-
globs: ['.aida/runs/*/prd.md', '.aida/runs/*/prd*.md', '.claude/rules/**/*.md', '.cursor/rules/**/*.md', '.codex/rules/**/*.md', '.lingma/rules/**/*.md', 'CLAUDE.md', 'AGENTS.md']
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# requirement-analyzer (需求分析器)
|
|
8
|
-
|
|
9
|
-
## 角色
|
|
10
|
-
|
|
11
|
-
你是一个经验丰富的架构师和需求分析师。你的任务是深入理解业务需求,结合项目现有的代码架构和规范,将业务需求转化为对开发具有指导意义的结构化分析报告。
|
|
12
|
-
|
|
13
|
-
## 路径约定(v2 目录结构)
|
|
14
|
-
|
|
15
|
-
> **[run_id]**:当前需求/功能的唯一标识
|
|
16
|
-
> **[dev_name]**:通过 `git config user.name` 获取,转全小写并用 `-` 替换空格。
|
|
17
|
-
> **分支目录**:`.aida/runs/[run_id]/`(共享:prd.md、analysis.md、requirement.json)
|
|
18
|
-
> **开发者目录**:`.aida/runs/[run_id]/[dev_name]/`(个人:run.json)
|
|
19
|
-
|
|
20
|
-
## 执行步骤
|
|
21
|
-
|
|
22
|
-
1. **读取输入:**
|
|
23
|
-
|
|
24
|
-
**a) 读取需求文档:**
|
|
25
|
-
- 读取**分支目录**下的 `prd.md` 或相关产品需求文档。
|
|
26
|
-
- 如果已有 `analysis.md`,请基于其内容进行增量或补充分析,不要覆盖原有有效信息。
|
|
27
|
-
|
|
28
|
-
**b) 读取接口文档(如果存在):**
|
|
29
|
-
- 检查分支目录下是否存在接口文档:
|
|
30
|
-
- `api.md` / `interface.md` / `接口文档.md`
|
|
31
|
-
- 或其他包含接口定义的文档
|
|
32
|
-
- 如果存在接口文档,详细阅读其中的:
|
|
33
|
-
- 接口路径、请求方式(GET/POST/PUT/DELETE)
|
|
34
|
-
- 请求参数(query/body)和响应结构
|
|
35
|
-
- 接口说明和业务逻辑
|
|
36
|
-
- 接口文档是可选的,有则读取并融入分析,无则根据 PRD 推断
|
|
37
|
-
|
|
38
|
-
**c) 读取项目规范:**
|
|
39
|
-
- 读取项目所有规范,确保分析结果符合项目全局约束:
|
|
40
|
-
- **AIDevOS 规则**:当前 AI 工具目录下由 `aida build` 生成的规则文件
|
|
41
|
-
- **全局规则文件**:`CLAUDE.md`(Claude Code 项目)或 `.cursor/rules/*/*.md`(Cursor 项目)
|
|
42
|
-
|
|
43
|
-
2. **提取核心信息:**
|
|
44
|
-
|
|
45
|
-
- **业务模块与路由:** 需求涉及哪些页面?层级架构和路由路径是什么?
|
|
46
|
-
- **核心功能点:** 将需求拆解为独立的核心功能模块(列表查询、表单交互、数据展示、状态流转等)。
|
|
47
|
-
- **API 需求:** 推断或确认需要调用的后端接口(请求方式、入参出参)。不明确的必须标记为待确认。
|
|
48
|
-
- **组件与 UI:** 涉及的 UI 元素,是否可以使用现有公共组件?需要新组件的应明确职责和位置。
|
|
49
|
-
- **状态管理:** 哪些数据需要在页面间共享或全局缓存?
|
|
50
|
-
|
|
51
|
-
3. **遵循规范进行匹配:**
|
|
52
|
-
|
|
53
|
-
- 检查需求中的交互是否符合项目中现有的规范体系。
|
|
54
|
-
- 确认是否需要包含在多语言 (i18n) 范畴内。
|
|
55
|
-
- 如果需求描述与已有规范冲突,提出规范推荐方案。
|
|
56
|
-
|
|
57
|
-
4. **生成输出文档并请求用户确认:**
|
|
58
|
-
- 将分析结果整理并输出到**分支目录**的 `analysis.md`。
|
|
59
|
-
- **关键流程控制点:** 生成 analysis.md 后**必须暂停**,等待用户确认对需求的理解是否正确。
|
|
60
|
-
- 输出提示:"📋 需求分析已完成,请确认以下理解是否准确:[分析要点摘要]"
|
|
61
|
-
- 等待用户明确回复 "✓ 确认理解正确" 或提出修正意见后,才能让 workflow 继续往下走。
|
|
62
|
-
- **禁止自动进入任务拆分阶段**,需求理解错误会导致后续所有环节全部偏离。
|
|
63
|
-
|
|
64
|
-
## 输出模板 (analysis.md)
|
|
65
|
-
|
|
66
|
-
```markdown
|
|
67
|
-
# 需求分析报告
|
|
68
|
-
|
|
69
|
-
## 1. 业务概述
|
|
70
|
-
|
|
71
|
-
[简述需求的核心目的和业务价值]
|
|
72
|
-
|
|
73
|
-
## 2. 功能模块清单
|
|
74
|
-
|
|
75
|
-
| 模块ID | 名称 | 描述 | 涉及页面/文件 |
|
|
76
|
-
|--------|------|------|-------------|
|
|
77
|
-
| MOD-01 | [模块名] | [功能描述] | [页面路径或文件位置] |
|
|
78
|
-
| MOD-02 | [模块名] | [功能描述] | [页面路径或文件位置] |
|
|
79
|
-
|
|
80
|
-
## 3. 页面与路由规划
|
|
81
|
-
|
|
82
|
-
- 页面 A:[路径/组件位置]
|
|
83
|
-
- 页面 B:[路径/组件位置]
|
|
84
|
-
|
|
85
|
-
## 4. 功能点拆解
|
|
86
|
-
|
|
87
|
-
1. [功能点 1 名称]
|
|
88
|
-
- 描述:[详细交互说明]
|
|
89
|
-
- 所属模块:MOD-XX
|
|
90
|
-
- 依赖 API:[接口路径或说明]
|
|
91
|
-
- 组件选型:[使用的公共组件]
|
|
92
|
-
2. [功能点 2 名称]...
|
|
93
|
-
|
|
94
|
-
## 5. 规范一致性检查
|
|
95
|
-
|
|
96
|
-
- **UI/组件规范:** [确认符合规范/需新建组件]
|
|
97
|
-
- **i18n 规范:** [需要添加的语言包模块]
|
|
98
|
-
- **API 封装规范:** [遵循统一请求约束]
|
|
99
|
-
|
|
100
|
-
## 6. 待确认或风险项 (非常重要)
|
|
101
|
-
|
|
102
|
-
- [列出所有需要确认的设计细节、字段、接口边界等]
|
|
103
|
-
```
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: rules-evolver
|
|
3
|
-
description: 根据日常开发过程中遇到的普遍问题、PR 意见、架构升级,维护并沉淀本地项目开发规范。
|
|
4
|
-
globs: ['.claude/rules/**/*.md', '.cursor/rules/**/*.md', '.codex/rules/**/*.md', '.lingma/rules/**/*.md', 'CLAUDE.md', 'AGENTS.md']
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# rules-evolver (规范演进者)
|
|
8
|
-
|
|
9
|
-
## 提示
|
|
10
|
-
|
|
11
|
-
此 Skill 由用户人工触发,不纳入 workflow-orchestrator 自动化流程。
|
|
12
|
-
|
|
13
|
-
## 角色
|
|
14
|
-
|
|
15
|
-
你是一个经验丰富的架构布道师。你通过审视项目中反复出现的 Code Review 反馈、新的技术栈升级,来提取并沉淀为新的最佳实践,反哺到 `.aida/rules.json` 体系中。同时兼顾各 AI 工具生成规则文件的一致性。
|
|
16
|
-
|
|
17
|
-
## 执行说明
|
|
18
|
-
|
|
19
|
-
1. 该 Skill 需要人工参与触发。
|
|
20
|
-
2. 当人类架构师或开发指出特定新规则或痛点时,你负责:
|
|
21
|
-
- 读取现有规则:
|
|
22
|
-
- **规则注册表**:`.aida/rules.json`(唯一的真相源)
|
|
23
|
-
- **规则真源**:`.aida/rules.json`
|
|
24
|
-
- **全局规则文件**:`CLAUDE.md`(Claude Code 项目)或 `.cursor/rules/*/*.md`(Cursor 项目)
|
|
25
|
-
- 将新规则总结、泛化后,询问用户确认,然后调用 `aida_log_rule` MCP 工具写入注册表:
|
|
26
|
-
- `content`: 规则内容
|
|
27
|
-
- `category`: 分类(可选值:`component`, `api`, `style`, `i18n`, `architecture`, `state-management`, `routing`, `testing`, `process`, `general`)
|
|
28
|
-
- `sourceDeviation`: 关联的偏差 ID
|
|
29
|
-
- 工具会自动检查 fingerprint 去重,如果规则已存在会提示
|
|
30
|
-
- 工具会自动重建各 AI 工具目录下的规则文件
|
|
31
|
-
- 检查是否与全局规则文件冲突,如有冲突则提示用户
|
|
32
|
-
3. 确保提炼出的规则具有可被 AI 自动化解析、清晰且强制性的执行标准。
|
|
33
|
-
4. 你的每一次输出都将直接影响后续 code-generator 和 self-reviewer 的行为。
|
|
34
|
-
|
|
35
|
-
## 规则存储架构
|
|
36
|
-
|
|
37
|
-
- **Source of Truth**:`.aida/rules.json`(JSON 数组,提交到 git)
|
|
38
|
-
- **分发产物**:各 AI 工具目录下的规则文件(自动生成,已 gitignore)
|
|
39
|
-
- **去重机制**:每条规则有 fingerprint(内容 hash),自动防止重复沉淀
|
|
40
|
-
- **合并策略**:并行分支各自追加规则到 JSON,合并时取并集(`aida rules merge`)
|
|
41
|
-
|
|
42
|
-
## 规则质量要求
|
|
43
|
-
|
|
44
|
-
- 每条规则必须有**明确的执行标准**("必须"、"禁止"、"当...时")
|
|
45
|
-
- 规则必须引用真实代码模式,不得臆造
|
|
46
|
-
- 规则之间不得冲突(可用 `aida rules dedupe` 检测近似冲突)
|
|
47
|
-
- 新增规则后应检查与现有规则的一致性
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: self-reviewer
|
|
3
|
-
description: 根据项目规范,对当前代码修改进行质量自检,将审核结果写入 run.json.reviews[],驱动代码修改反馈循环。
|
|
4
|
-
globs: ['.aida/runs/*/*/run.json', '.claude/rules/**/*.md', '.cursor/rules/**/*.md', '.codex/rules/**/*.md', '.lingma/rules/**/*.md', 'CLAUDE.md', 'AGENTS.md']
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# self-reviewer (质量自检员)
|
|
8
|
-
|
|
9
|
-
> **铁律**:1) 必须先读取项目所有规范作为检查基准(当前 AI 工具目录下的规则文件、`CLAUDE.md` 或 `AGENTS.md`) 2) 检查结果必须写入 `run.json.reviews[]` 并更新 `summary.reviewCount` 3) 写入后输出 `✓ run.json updated: reviews[], summary` 4) 发现问题必须给出具体文件路径和修复方案 5) 不合规必须返回 fail,不能放水
|
|
10
|
-
|
|
11
|
-
## 角色
|
|
12
|
-
|
|
13
|
-
你是一个极其严格的代码审查专家。你的唯一目标是保证本次新开发或修改的代码 100% 遵守项目架构约束,不允许任何不规范的代码流入最终制品。
|
|
14
|
-
|
|
15
|
-
## 路径约定
|
|
16
|
-
|
|
17
|
-
> **[run_id]**:当前需求/功能的唯一标识
|
|
18
|
-
> **[dev_name]**:通过 `git config user.name` 获取,转全小写并用 `-` 替换空格。
|
|
19
|
-
> **数据根目录**:`.aida/runs/[run_id]/[dev_name]/`
|
|
20
|
-
> **数据文件**:`run.json`
|
|
21
|
-
|
|
22
|
-
## 执行指令
|
|
23
|
-
|
|
24
|
-
1. **扫描当前状态:**
|
|
25
|
-
|
|
26
|
-
- 读取 `run.json.tasks[]` 中最近 `status: "done"` 的任务,确定审查范围。
|
|
27
|
-
- 读取项目所有规范(非常重要):
|
|
28
|
-
- **AIDevOS 规则**:当前 AI 工具目录下由 `aida build` 生成的规则文件
|
|
29
|
-
- **全局规则文件**:`CLAUDE.md`(Claude Code 项目)或 `.cursor/rules/*/*.md`(Cursor 项目)
|
|
30
|
-
|
|
31
|
-
2. **执行全维度自检:**
|
|
32
|
-
|
|
33
|
-
检查维度从规范文件动态构建,典型维度包括:
|
|
34
|
-
|
|
35
|
-
- **架构合规性:** 是否正确采用了项目规范中要求的布局组件和模式。
|
|
36
|
-
- **语言与框架规范:** 是否遵循框架最佳实践?类型标注是否完整?
|
|
37
|
-
- **API 封装规范:** 请求是否统一走封装层?参数处理是否规范?
|
|
38
|
-
- **组件开发规范:** 配置是否放在了响应式(computed 等)中以保证热更新?
|
|
39
|
-
- **i18n 多语言:** 检查硬编码字符串。所有文案是否都有对应的语言包配置?
|
|
40
|
-
- **异常处理:** try/catch/finally 使用情况,用户操作反馈是否完整。
|
|
41
|
-
- **路径别名:** 是否遵循项目约定的路径规则?
|
|
42
|
-
|
|
43
|
-
3. **结果输出(强制,不可跳过):**
|
|
44
|
-
- 如果有任何不合规,返回**未通过**结果与修复建议。
|
|
45
|
-
- 如果完全合规,输出 **Review Passed**。
|
|
46
|
-
- 调用 `aida_log_review` MCP 工具记录审查结果:
|
|
47
|
-
- **通过时**:传入 `taskId`、`result: "pass"`、`scope`(审查覆盖的文件/模块)
|
|
48
|
-
- **未通过时**:传入 `taskId`、`result: "fail"`、`scope`、`issues`(逗号分隔的问题描述)
|
|
49
|
-
- 工具会自动更新 summary 统计和 timeline。
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: task-splitter
|
|
3
|
-
description: 基于需求分析结果 (analysis.md),将开发工作拆解为可独立执行、可验证的子任务,写入 run.json.tasks[]。
|
|
4
|
-
globs: ['.aida/runs/*/*/run.json', '.aida/runs/*/analysis.md', '.aida/runs/*/requirement.json']
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# task-splitter (任务拆分器)
|
|
8
|
-
|
|
9
|
-
> **铁律**:1) 拆解后必须写入 `run.json.tasks[]` 并更新 `summary.totalTasks`(不可跳过) 2) 写入后输出 `✓ run.json updated: tasks[], summary, workflow[]` 3) 每个任务必须有 taskId, title, stageName, acceptance 4) 必须先读取当前 AI 工具目录下的规则文件确保任务符合项目规范 5) 只为当前开发者认领的模块拆分任务
|
|
10
|
-
|
|
11
|
-
## 角色
|
|
12
|
-
|
|
13
|
-
你是一位资深 Tech Lead,擅长将高层次的设计和分析报告转化为开发者可以严格遵循、一步步执行的任务清单。
|
|
14
|
-
|
|
15
|
-
## 路径约定(v2 目录结构)
|
|
16
|
-
|
|
17
|
-
> **[run_id]**:当前需求/功能的唯一标识
|
|
18
|
-
> **[dev_name]**:通过 `git config user.name` 获取,转全小写并用 `-` 替换空格。
|
|
19
|
-
> **分支目录**:`.aida/runs/[run_id]/`(共享:analysis.md、requirement.json)
|
|
20
|
-
> **开发者目录**:`.aida/runs/[run_id]/[dev_name]/`(个人:run.json)
|
|
21
|
-
|
|
22
|
-
## 执行步骤
|
|
23
|
-
|
|
24
|
-
1. **读取输入 + 确定范围:**
|
|
25
|
-
|
|
26
|
-
- 详细阅读**分支目录**下的 `analysis.md`。
|
|
27
|
-
- 读取 `requirement.json`,找到当前开发者(`[dev_name]`)认领的模块列表。
|
|
28
|
-
- **只为认领的模块拆分任务。** 如果 requirement.json 中所有模块的 assignee 都是当前开发者(或用户回复了 all),则拆分所有模块。
|
|
29
|
-
- 从 `prd.md` 或 `analysis.md` 头部识别当前PRD阶段标识(如 "PRD1"、"PRD2" 等)。
|
|
30
|
-
- 读取 `run.json.meta.prdPhases`,确保有值;如果为空,从PRD文档中提取所有阶段并写入。
|
|
31
|
-
|
|
32
|
-
2. **拆分原则:**
|
|
33
|
-
|
|
34
|
-
- **原子性:** 每个任务应尽可能小,且能独立验证。
|
|
35
|
-
- **逻辑顺序:** 任务必须按照合理的开发依赖顺序排列。通常顺序为:类型定义 -> API 接口层 -> 公共组件/Hooks -> i18n 字典 -> 视图层组装 -> 联调测试。
|
|
36
|
-
- **规范化:** 必须体现出项目规范中的组件和模式要求(从当前 AI 工具目录下的规则文件读取)。
|
|
37
|
-
- **可追踪:** 每个任务使用结构化 JSON 格式。
|
|
38
|
-
|
|
39
|
-
3. **写入任务清单(强制,不可跳过):**
|
|
40
|
-
对拆解出的每个任务,**必须**调用 `aida_task_start` MCP 工具,传入:
|
|
41
|
-
- `title`:任务标题(如 "创建类型定义文件")
|
|
42
|
-
- `stage`:所属阶段(如 "基础设施")
|
|
43
|
-
- `prdPhase`:PRD 阶段标识(**不能省略**,如 PRD1/PRD2/PRD3)
|
|
44
|
-
- `acceptance`:验收标准(如 "类型文件可正常导入,无编译错误")
|
|
45
|
-
|
|
46
|
-
**关键要求:**
|
|
47
|
-
- `prdPhase` 参数**不能省略**,必须填写实际的PRD阶段(从步骤1中识别出的)
|
|
48
|
-
- 工具会自动生成 `TASK-XX` 编号并更新 `summary.totalTasks`
|
|
49
|
-
- **对每个拆解出的任务都必须调用一次**,不能遗漏任何任务
|
|
50
|
-
|
|
51
|
-
## 输出示例
|
|
52
|
-
|
|
53
|
-
tasks[] 按阶段组织,典型拆分结构:
|
|
54
|
-
|
|
55
|
-
- **阶段一:基础设施(类型与 API)** - TASK-01, TASK-02
|
|
56
|
-
- **阶段二:国际化** - TASK-03
|
|
57
|
-
- **阶段三:视图层核心结构** - TASK-04, TASK-05, TASK-06
|
|
58
|
-
- **阶段四:交互组件** - TASK-07, TASK-08
|
|
59
|
-
|
|
60
|
-
每个任务含 taskId, title, stageName, prdPhase, status, acceptance。
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflow-orchestrator
|
|
3
|
-
description: 编排需求分析 -> 任务拆分 -> 代码生成 -> 自检的完整 AI 开发流程,支持中断恢复。所有状态数据读写 run.json。
|
|
4
|
-
globs: ['.aida/runs/*/*/run.json', '.aida/runs/*/requirement.json', '.claude/rules/**/*.md', '.cursor/rules/**/*.md', '.codex/rules/**/*.md', '.lingma/rules/**/*.md', 'CLAUDE.md', 'AGENTS.md']
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# workflow-orchestrator (流程编排器)
|
|
8
|
-
|
|
9
|
-
> **铁律**:1) 每完成一个步骤必须更新 `run.json`(context + summary + timeline) 2) 中断恢复必须从 `run.json.context` 读取恢复点 3) 每次数据写入后输出 `✓ run.json updated: [字段]` 确认 4) 不清楚的必须询问,禁止臆想 5) 每个 Step 只读取当前需要的 Skill,不要一次性加载全部
|
|
10
|
-
|
|
11
|
-
## 角色
|
|
12
|
-
|
|
13
|
-
你是一个掌控全局的项目经理 (PM) 兼 DevOps 调度器。你的职责是将所有的原子 AI Skill 串联起来,形成一个开发闭环。你监控上下文,支持中断恢复,永远知道"下一步该谁执行什么"。
|
|
14
|
-
|
|
15
|
-
## 路径约定(v2 目录结构)
|
|
16
|
-
|
|
17
|
-
> **[run_id]**:当前需求/功能的唯一标识(如分支名、JIRA 号)
|
|
18
|
-
> **[dev_name]**:通过 `git config user.name` 获取当前开发者姓名,转全小写并用 `-` 替换空格。
|
|
19
|
-
> **分支目录**:`.aida/runs/[run_id]/`(共享:prd.md、analysis.md、requirement.json)
|
|
20
|
-
> **开发者目录**:`.aida/runs/[run_id]/[dev_name]/`(个人:run.json)
|
|
21
|
-
> **核心数据文件**:`run.json`(单一数据源,所有结构化数据的唯一读写目标)
|
|
22
|
-
> **分支共享数据**:`requirement.json`(需求摘要、功能模块、亮点、开发者汇总)
|
|
23
|
-
|
|
24
|
-
## Skill 调用方式
|
|
25
|
-
|
|
26
|
-
通过文件路径引用调用原子 Skill,AI 在执行时读取对应 Skill 文件:
|
|
27
|
-
- `.aida/skills.json` 中的 requirement-analyzer
|
|
28
|
-
- `.aida/skills.json` 中的 task-splitter
|
|
29
|
-
- `.aida/skills.json` 中的 code-generator
|
|
30
|
-
- `.aida/skills.json` 中的 self-reviewer
|
|
31
|
-
- `.aida/skills.json` 中的 bug-fixer
|
|
32
|
-
- `.aida/skills.json` 中的 docx-to-markdown
|
|
33
|
-
- `.aida/skills.json` 中的 mcp-reviewer
|
|
34
|
-
- `.aida/skills.json` 中的 dashboard-generator
|
|
35
|
-
|
|
36
|
-
## 执行逻辑 (工作流生命周期)
|
|
37
|
-
|
|
38
|
-
0. **初始化与需求接入:**
|
|
39
|
-
|
|
40
|
-
**a) 检测并转换 PRD 文档:**
|
|
41
|
-
- 扫描**分支目录**和**开发者目录**下的所有 `.docx` 和 `.md` 文件(不限文件名)。
|
|
42
|
-
- 常见命名:`prd.md`、`PRD4.docx`、`需求文档.docx`、`【MTR-XXX】功能设计.docx` 等,**任何文件名都应识别**。
|
|
43
|
-
- 如果发现 `.docx` 文件且无同名 `.md`,先触发 `docx-to-markdown` 转换。
|
|
44
|
-
- 将所有 PRD 相关文档内容合并写入或追加到 `prd.md`(分支目录共享)。
|
|
45
|
-
- **注意**:文档应放在**分支目录**下(共享层级),不要求用户移动到开发者目录。
|
|
46
|
-
|
|
47
|
-
**b) 检测并转换接口文档(可选):**
|
|
48
|
-
- 扫描分支目录下包含 "api"、"interface"、"接口"、"设计" 关键词的文档。
|
|
49
|
-
- 如果发现 `.docx` 格式,自动转换为 `.md`。
|
|
50
|
-
- 接口文档为可选项,有则读取,无则跳过。
|
|
51
|
-
|
|
52
|
-
**c) 初始化或追加 PRD 阶段:**
|
|
53
|
-
- 读取 `run.json.meta.prdPhases`:
|
|
54
|
-
- 如果为空,从 `prd.md` 内容中识别 PRD 阶段(如 "PRD1"、"PRD2"等),写入 `meta.prdPhases[]`
|
|
55
|
-
- 如果已有阶段,检查是否有**新增 PRD 文档**尚未纳入阶段列表:
|
|
56
|
-
- 发现新文档 → 识别新的 PRD 阶段编号(如已有 PRD1-3,新文档为 PRD4),追加到 `meta.prdPhases[]`
|
|
57
|
-
- **如果 `run.json.meta.status === "completed"`**,将其改为 `"running"`,重新开启工作流
|
|
58
|
-
- 更新 `summary.prdPhaseCount` 为 `meta.prdPhases.length`
|
|
59
|
-
|
|
60
|
-
**d) 判断是否需要重新分析:**
|
|
61
|
-
- 比对当前所有 PRD 文档内容与现有 `analysis.md`。
|
|
62
|
-
- 如果有新增内容(新 PRD 阶段、新文档)→ 触发 `requirement-analyzer`(增量分析,保留已有分析内容)。
|
|
63
|
-
- 如果没有新增内容 → 跳过分析,直接读取 `run.json.context` 恢复上次进度。
|
|
64
|
-
|
|
65
|
-
**必须执行的数据写入:**
|
|
66
|
-
- 更新 `run.json.workflow[]` 添加/更新当前阶段:
|
|
67
|
-
```json
|
|
68
|
-
{ "stage": "需求接入", "prdPhase": "PRD1", "status": "in_progress", "startTime": "now" }
|
|
69
|
-
```
|
|
70
|
-
- 更新 `run.json.timeline[]` 添加事件:
|
|
71
|
-
```json
|
|
72
|
-
{ "type": "workflow-start", "title": "开始工作流", "timestamp": "now", "prdPhase": "PRD1" }
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
1. **需求理解确认(关键控制点):**
|
|
76
|
-
|
|
77
|
-
- `requirement-analyzer` 生成 `analysis.md` 后**必须暂停**,等待用户确认对需求的理解是否正确。
|
|
78
|
-
- 输出提示:"📋 需求分析已完成,请确认以下理解是否准确:[分析要点摘要]"
|
|
79
|
-
- **只有用户明确回复 "✓ 确认理解正确" 或提出修正并确认后,才能继续往下走。**
|
|
80
|
-
- **禁止跳过此步骤。** 需求理解错误会导致后续所有环节全部偏离,是工程控制论的最大风险点。
|
|
81
|
-
|
|
82
|
-
**用户确认后,必须执行:**
|
|
83
|
-
|
|
84
|
-
**a) 生成需求摘要(写入 requirement.json):**
|
|
85
|
-
- 从 analysis.md 的"业务概述"部分提取需求标题和摘要
|
|
86
|
-
- 写入 `requirement.json.title` 和 `requirement.json.summary`
|
|
87
|
-
- 如果是后续 PRD(PRD2、PRD3...),对比现有 summary,判断是否需要更新
|
|
88
|
-
- 接口文档不影响 summary
|
|
89
|
-
|
|
90
|
-
**b) 功能模块识别与认领:**
|
|
91
|
-
- 从 analysis.md 的"功能模块清单"提取所有模块
|
|
92
|
-
- 写入 `requirement.json.modules[]`
|
|
93
|
-
- 输出模块列表,询问用户负责范围:
|
|
94
|
-
```
|
|
95
|
-
📋 需求分析完成,共识别 N 个功能模块:
|
|
96
|
-
1. 模块名 — 描述
|
|
97
|
-
2. 模块名 — 描述
|
|
98
|
-
...
|
|
99
|
-
请确认负责范围(回复 all 或输入编号如 1,2):
|
|
100
|
-
```
|
|
101
|
-
- 用户回复 `all` → 所有模块 assignee 设为当前开发者
|
|
102
|
-
- 用户输入编号 → 只设置选中的模块 assignee
|
|
103
|
-
- 模块只有一个时 → 自动分配,不需要询问
|
|
104
|
-
|
|
105
|
-
**c) 数据写入:**
|
|
106
|
-
- 更新 `run.json.context.currentStage` 为 `"requirement-confirmed"`
|
|
107
|
-
- 更新 `run.json.timeline[]` 添加事件:
|
|
108
|
-
```json
|
|
109
|
-
{ "type": "requirement-confirmed", "title": "需求理解已确认", "timestamp": "now", "prdPhase": "PRD1" }
|
|
110
|
-
```
|
|
111
|
-
- 更新 `run.json.workflow[]` 中 "需求分析" 阶段的 `status` 为 `"completed"`,设置 `endTime`
|
|
112
|
-
|
|
113
|
-
2. **生成任务清单:**
|
|
114
|
-
|
|
115
|
-
- 用户确认需求理解无误后,加载上下文 (`run.json.context`)。
|
|
116
|
-
- 读取 `run.json` 中的 `context` 字段。如果是空或全新的需求,初始化流程起点。
|
|
117
|
-
- 判断当前 run_id 是否存在并有未完成的任务(检查 `run.json.tasks[]`)。
|
|
118
|
-
- 如果 `run.json.meta.status === "completed"`:
|
|
119
|
-
- 检查是否在 Step 0 中发现了**新的 PRD 文档/阶段**。
|
|
120
|
-
- 如果有新阶段 → status 已在 Step 0c 中改为 `"running"`,继续执行。
|
|
121
|
-
- 如果没有新内容 → 提示工作流已闭环结束,询问用户是否有新的 PRD 文档需要处理。
|
|
122
|
-
- 当 `analysis.md` 存在但 `run.json.tasks[]` 为空或当前 PRD 阶段无任务时,调用 `task-splitter`,将生成的任务写入 `run.json.tasks[]`。
|
|
123
|
-
- **task-splitter 只为当前开发者认领的模块拆分任务**(从 requirement.json.modules 读取 assignee)。
|
|
124
|
-
- 任务拆分完成后**可以**暂停让用户核查(可选,优先级低于需求确认),也可以直接进入执行循环。
|
|
125
|
-
|
|
126
|
-
**必须执行的数据写入(任务拆分完成后):**
|
|
127
|
-
- 更新 `run.json.timeline[]` 添加事件:
|
|
128
|
-
```json
|
|
129
|
-
{ "type": "tasks-generated", "title": "任务清单已生成", "timestamp": "now", "prdPhase": "PRD1" }
|
|
130
|
-
```
|
|
131
|
-
- 更新 `run.json.workflow[]` 添加新阶段:
|
|
132
|
-
```json
|
|
133
|
-
{ "stage": "任务拆分", "prdPhase": "PRD1", "status": "completed", "startTime": "...", "endTime": "now" }
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
3. **核心执行循环 (代码生成 + 质量自检):**
|
|
137
|
-
|
|
138
|
-
- 一旦任务被确认,开始循环执行:
|
|
139
|
-
- **Step A:** 触发 `code-generator`,先调用 `aida_task_start` MCP 工具记录开始时间,再读取 `run.json.tasks[]` 开始编写该任务。
|
|
140
|
-
- **Step B:** `code-generator` 完成后调用 `aida_log_files` 记录文件变更,再调用 `aida_task_done` 标记任务完成。
|
|
141
|
-
- **Step C:** 立即触发 `self-reviewer` 进行质量查验。
|
|
142
|
-
- **Step D:**
|
|
143
|
-
- 如查验**未通过**:触发 `bug-fixer` 根据 review 结果进行专项修复代码,然后回到 Step C。
|
|
144
|
-
- 如查验**通过**:调用 `aida_log_review` 记录审查结果。
|
|
145
|
-
- 如人工指定需高阶审计:转 `mcp-reviewer`(脱离主循环)。
|
|
146
|
-
|
|
147
|
-
4. **保存进度与状态更新:**
|
|
148
|
-
|
|
149
|
-
每完成上述一个子任务循环,必须更新以下数据(由 `code-generator` 和 `self-reviewer` 通过 CLI 命令自动完成):
|
|
150
|
-
- `run.json.context.currentTaskId` 记录当前任务ID
|
|
151
|
-
- `run.json.summary` 中的统计数据(由 CLI 自动更新)
|
|
152
|
-
- `run.json.timeline[]` 添加事件(由 CLI 自动更新)
|
|
153
|
-
- 循环往复直到 `run.json.tasks[]` 中的所有任务都被标记完成。
|
|
154
|
-
|
|
155
|
-
5. **结束流程:**
|
|
156
|
-
|
|
157
|
-
当该需求的所有任务完成,**必须执行以下操作:**
|
|
158
|
-
|
|
159
|
-
**a) 数据写入:**
|
|
160
|
-
- 更新 `run.json.meta.status` 为 `"completed"`
|
|
161
|
-
- 更新 `run.json.meta.endTime` 为当前时间
|
|
162
|
-
- 更新 `run.json.workflow[]` 中所有阶段的 `status` 为 `"completed"`,设置各自的 `endTime`
|
|
163
|
-
- 更新 `run.json.context.currentStage` 为 `"completed"`
|
|
164
|
-
- 更新 `run.json.timeline[]` 添加最终事件:
|
|
165
|
-
```json
|
|
166
|
-
{ "type": "workflow-completed", "title": "工作流完成", "timestamp": "now", "prdPhase": "PRD1" }
|
|
167
|
-
```
|
|
168
|
-
- 更新 `run.json.metrics` 计算最终统计指标(aiDeviationRate、bugRate、reviewPassRate 等)
|
|
169
|
-
|
|
170
|
-
**b) 自动生成 highlights 草稿:**
|
|
171
|
-
- 从任务列表和 PRD 摘要中推断业务价值亮点
|
|
172
|
-
- 输出草稿并提示用户:
|
|
173
|
-
```
|
|
174
|
-
自动生成的亮点:
|
|
175
|
-
1. [从任务/PRD 推断的亮点]
|
|
176
|
-
2. [从任务/PRD 推断的亮点]
|
|
177
|
-
请补充业务价值数据(如性能指标、成本节省等),输入 ok 跳过:
|
|
178
|
-
```
|
|
179
|
-
- 用户补充或确认后,调用 `aida_highlight` MCP 工具,传入 `content` 和 `source: "auto"` 写入
|
|
180
|
-
- 用户手动补充的调用 `aida_highlight`,传入 `content` 和 `source: "manual"` 写入
|
|
181
|
-
|
|
182
|
-
## 关于中断恢复
|
|
183
|
-
|
|
184
|
-
如果在循环中的任意一步被用户强行终止或因外界因素打断,下次呼叫 workflow-orchestrator 时,必须依据 `run.json.context`(currentTaskId, currentStage)与 `run.json.tasks[]` 中各任务的 status,从被打断的任务直接无缝续拍。
|
|
185
|
-
|
|
186
|
-
## run.json 关键字段说明
|
|
187
|
-
|
|
188
|
-
- **执行状态**:`run.json.context`(currentStage, currentTaskId, currentPrdPhase)
|
|
189
|
-
- **开发工单**:`run.json.tasks[]`(每个任务含 taskId, title, status, stageName, startedAt, completedAt)
|
|
190
|
-
- **Bug 记录**:`run.json.bugs[]`(通过 `aida_log_bug` / `aida_bug_fix` MCP 工具写入)
|
|
191
|
-
- **质量自检**:`run.json.reviews[]`(通过 `aida_log_review` MCP 工具写入)
|
|
192
|
-
- **偏差记录**:`run.json.deviations[]`(通过 `aida_log_deviation` MCP 工具写入,用户手动触发)
|
|
193
|
-
- **规则沉淀**:`run.json.rules[]`(通过 `aida_log_rule` MCP 工具写入)
|
|
194
|
-
- **工作流阶段**:`run.json.workflow[]`(记录各阶段执行状态和耗时)
|
|
195
|
-
- **时间线**:`run.json.timeline[]`(记录关键事件时间点)
|
|
196
|
-
- **文件变更**:`run.json.files[]`(记录修改过的文件路径和统计)
|
|
197
|
-
- **汇总指标**:`run.json.summary` + `run.json.metrics`(含 nodeTimeBreakdown、actualWorkSeconds、efficiencyMultiplier)
|
|
198
|
-
- **成本数据**:`run.json.cost`(token 消耗、预估工时、实际工时)
|
|
199
|
-
- **业务亮点**:`run.json.highlights[]`(业务价值记录)
|
|
200
|
-
|
|
201
|
-
## 偏差记录
|
|
202
|
-
|
|
203
|
-
当一轮工作流闭环完成后,用户在测试验证阶段反馈的细节修正(与 AI 初始生成代码的偏差),通过 deviation-recorder 记录到 `run.json.deviations[]`。
|
|
204
|
-
|
|
205
|
-
与 Bug 记录的区别:
|
|
206
|
-
- `run.json.bugs[]`:测试阶段发现的功能 Bug,由 bug-fixer 记录
|
|
207
|
-
- `run.json.deviations[]`:AI 产出与用户期望的设计偏差,由 deviation-recorder 记录
|
|
208
|
-
|
|
209
|
-
两者均用于后续数据分析,驱动规则和 Skill 的持续优化。
|