speccore 5.19.2 → 5.22.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.
- package/README.en.md +63 -210
- package/README.md +108 -252
- package/dist/cli.js +224 -300
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +5 -0
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +235 -543
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/ask.d.ts +8 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +293 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/bugfix.d.ts +4 -0
- package/dist/commands/bugfix.d.ts.map +1 -1
- package/dist/commands/bugfix.js +122 -2
- package/dist/commands/bugfix.js.map +1 -1
- package/dist/commands/change.d.ts +2 -0
- package/dist/commands/change.d.ts.map +1 -1
- package/dist/commands/change.js +37 -2
- package/dist/commands/change.js.map +1 -1
- package/dist/commands/completion.js +1 -1
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/dev.d.ts +2 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +175 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doc2spec.d.ts +10 -0
- package/dist/commands/doc2spec.d.ts.map +1 -0
- package/dist/commands/{word2spec.js → doc2spec.js} +55 -19
- package/dist/commands/doc2spec.js.map +1 -0
- package/dist/commands/done.d.ts.map +1 -1
- package/dist/commands/done.js +47 -0
- package/dist/commands/done.js.map +1 -1
- package/dist/commands/execute.d.ts +1 -0
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +118 -11
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/help-quick.js +2 -2
- package/dist/commands/help-quick.js.map +1 -1
- package/dist/commands/help.d.ts +3 -2
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +372 -51
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/import.d.ts +1 -0
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +289 -15
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +177 -283
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration/create.d.ts +1 -0
- package/dist/commands/iteration/create.d.ts.map +1 -1
- package/dist/commands/iteration/create.js +1 -0
- package/dist/commands/iteration/create.js.map +1 -1
- package/dist/commands/iteration/split.d.ts +1 -0
- package/dist/commands/iteration/split.d.ts.map +1 -1
- package/dist/commands/iteration/split.js +240 -7
- package/dist/commands/iteration/split.js.map +1 -1
- package/dist/commands/plan.d.ts +1 -0
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +25 -1
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/pr.d.ts +1 -0
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +94 -22
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/schedule.d.ts +27 -0
- package/dist/commands/schedule.d.ts.map +1 -0
- package/dist/commands/schedule.js +203 -0
- package/dist/commands/schedule.js.map +1 -0
- package/dist/commands/status-panel.d.ts +8 -1
- package/dist/commands/status-panel.d.ts.map +1 -1
- package/dist/commands/status-panel.js +1095 -5
- package/dist/commands/status-panel.js.map +1 -1
- package/dist/commands/task/new.d.ts +4 -0
- package/dist/commands/task/new.d.ts.map +1 -1
- package/dist/commands/task/new.js +87 -0
- package/dist/commands/task/new.js.map +1 -1
- package/dist/core/analyze-engine.d.ts +32 -0
- package/dist/core/analyze-engine.d.ts.map +1 -0
- package/dist/core/analyze-engine.js +935 -0
- package/dist/core/analyze-engine.js.map +1 -0
- package/dist/core/capabilities.d.ts +12 -0
- package/dist/core/capabilities.d.ts.map +1 -0
- package/dist/core/capabilities.js +58 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/code-scanner.d.ts.map +1 -1
- package/dist/core/code-scanner.js +4 -1
- package/dist/core/code-scanner.js.map +1 -1
- package/dist/core/intent-recognition.d.ts +1 -1
- package/dist/core/intent-recognition.d.ts.map +1 -1
- package/dist/core/intent-recognition.js +5 -5
- package/dist/core/intent-recognition.js.map +1 -1
- package/dist/core/next-steps.js +1 -1
- package/dist/core/next-steps.js.map +1 -1
- package/dist/core/schedule-engine.d.ts +25 -0
- package/dist/core/schedule-engine.d.ts.map +1 -0
- package/dist/core/schedule-engine.js +179 -0
- package/dist/core/schedule-engine.js.map +1 -0
- package/dist/core/schedule-store.d.ts +104 -0
- package/dist/core/schedule-store.d.ts.map +1 -0
- package/dist/core/schedule-store.js +188 -0
- package/dist/core/schedule-store.js.map +1 -0
- package/dist/core/schemas/iteration.schema.d.ts +4 -4
- package/dist/core/schemas/task.schema.d.ts +2 -2
- package/package.json +7 -13
- package/dist/commands/demo.d.ts +0 -10
- package/dist/commands/demo.d.ts.map +0 -1
- package/dist/commands/demo.js +0 -151
- package/dist/commands/demo.js.map +0 -1
- package/dist/commands/goal.d.ts +0 -15
- package/dist/commands/goal.d.ts.map +0 -1
- package/dist/commands/goal.js +0 -232
- package/dist/commands/goal.js.map +0 -1
- package/dist/commands/new-task.d.ts +0 -15
- package/dist/commands/new-task.d.ts.map +0 -1
- package/dist/commands/new-task.js +0 -208
- package/dist/commands/new-task.js.map +0 -1
- package/dist/commands/platform-add.d.ts +0 -12
- package/dist/commands/platform-add.d.ts.map +0 -1
- package/dist/commands/platform-add.js +0 -111
- package/dist/commands/platform-add.js.map +0 -1
- package/dist/commands/retro.d.ts +0 -10
- package/dist/commands/retro.d.ts.map +0 -1
- package/dist/commands/retro.js +0 -131
- package/dist/commands/retro.js.map +0 -1
- package/dist/commands/spec.d.ts +0 -8
- package/dist/commands/spec.d.ts.map +0 -1
- package/dist/commands/spec.js +0 -159
- package/dist/commands/spec.js.map +0 -1
- package/dist/commands/template-add.d.ts +0 -12
- package/dist/commands/template-add.d.ts.map +0 -1
- package/dist/commands/template-add.js +0 -65
- package/dist/commands/template-add.js.map +0 -1
- package/dist/commands/word2spec.d.ts +0 -8
- package/dist/commands/word2spec.d.ts.map +0 -1
- package/dist/commands/word2spec.js.map +0 -1
package/dist/commands/init.js
CHANGED
|
@@ -4,17 +4,9 @@ exports.initCommand = initCommand;
|
|
|
4
4
|
const fs_extra_1 = require("fs-extra");
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const logger_1 = require("../utils/logger");
|
|
7
|
-
const global_counters_1 = require("../core/global-counters");
|
|
8
7
|
const context_1 = require("../core/context");
|
|
9
|
-
const i18n_1 = require("../i18n");
|
|
10
|
-
const schemas_1 = require("../core/schemas");
|
|
11
|
-
const error_feedback_1 = require("../core/error-feedback");
|
|
12
8
|
async function initCommand(options) {
|
|
13
|
-
|
|
14
|
-
if (options.lang === 'en' || options.lang === 'en-US') {
|
|
15
|
-
i18n_1.i18n.setLocale('en-US');
|
|
16
|
-
}
|
|
17
|
-
const spinner = new logger_1.Spinner(i18n_1.i18n.t('cmd.init.start'));
|
|
9
|
+
const spinner = new logger_1.Spinner('Initializing SpecCore');
|
|
18
10
|
spinner.start();
|
|
19
11
|
try {
|
|
20
12
|
const projectRoot = process.cwd();
|
|
@@ -36,22 +28,19 @@ async function initCommand(options) {
|
|
|
36
28
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'GLOBAL'));
|
|
37
29
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'GLOBAL', 'PROJECTS'));
|
|
38
30
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'GLOBAL', 'PROJECTS', '_template'));
|
|
39
|
-
// Initialize global counters
|
|
40
|
-
await (0, global_counters_1.initCounters)();
|
|
41
31
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'PATTERNS', 'TEMPLATES', 'crud'));
|
|
42
32
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'PATTERNS', 'TEMPLATES', 'auth'));
|
|
43
33
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'PATTERNS', 'TEMPLATES', 'export'));
|
|
44
34
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'PATTERNS', 'TEMPLATES', 'report'));
|
|
45
35
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'GLOBAL', 'BASELINES'));
|
|
46
|
-
await (0, fs_extra_1.ensureDir)((0, path_1.join)(speccoreDir, 'config'));
|
|
47
36
|
// Create default files
|
|
48
37
|
await createDefaultFiles(speccoreDir);
|
|
49
38
|
// Create GLOBAL layer files
|
|
50
39
|
await createGlobalFiles(speccoreDir);
|
|
51
|
-
// Create
|
|
52
|
-
await
|
|
53
|
-
// Create context.json
|
|
54
|
-
|
|
40
|
+
// Create .workbuddy integration files for WorkBuddy IDE
|
|
41
|
+
await createWorkBuddyFiles(projectRoot);
|
|
42
|
+
// Create context.json
|
|
43
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(speccoreDir, 'local', 'context.json'), JSON.stringify({
|
|
55
44
|
currentIteration: '',
|
|
56
45
|
currentTask: '',
|
|
57
46
|
currentAssignee: '',
|
|
@@ -65,29 +54,23 @@ async function initCommand(options) {
|
|
|
65
54
|
completedTasks: 0,
|
|
66
55
|
blockedTasks: 0,
|
|
67
56
|
customAliases: {},
|
|
68
|
-
history: []
|
|
69
|
-
};
|
|
70
|
-
const validated = (0, error_feedback_1.safeValidate)(schemas_1.ContextSchema, contextData, 'context');
|
|
71
|
-
if (!validated.success) {
|
|
72
|
-
logger_1.logger.warn('Context validation warning:');
|
|
73
|
-
for (const e of validated.errors) {
|
|
74
|
-
logger_1.logger.warn(` ${e.message}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
await (0, fs_extra_1.writeFile)((0, path_1.join)(speccoreDir, 'local', 'context.json'), JSON.stringify(validated.success ? validated.data : contextData, null, 2));
|
|
57
|
+
history: []
|
|
58
|
+
}, null, 2));
|
|
78
59
|
// Create .gitignore entry
|
|
79
60
|
await updateGitignore(projectRoot);
|
|
80
|
-
// Generate .codebuddy/commands/ slash command files
|
|
81
|
-
await generateSlashCommands(projectRoot);
|
|
82
61
|
// Update context
|
|
83
62
|
await (0, context_1.updateContext)({ lastUpdated: new Date().toISOString() });
|
|
84
|
-
spinner.stop(
|
|
63
|
+
spinner.stop('SpecCore initialized successfully!');
|
|
85
64
|
logger_1.logger.info('');
|
|
86
|
-
logger_1.logger.info(
|
|
65
|
+
logger_1.logger.info('Next steps:');
|
|
87
66
|
logger_1.logger.info(' 1. Edit .speccore/CONSTITUTION.md to define your tech stack');
|
|
88
67
|
logger_1.logger.info(' 2. Edit .speccore/PROJECT/TEAM.md to add team members');
|
|
89
|
-
logger_1.logger.info(' 3.
|
|
90
|
-
logger_1.logger.info(' 4. Run: speccore
|
|
68
|
+
logger_1.logger.info(' 3. Run: speccore import --project=<name> --path=<path> to import projects');
|
|
69
|
+
logger_1.logger.info(' 4. Run: speccore global-status to view global layer');
|
|
70
|
+
logger_1.logger.info(' 5. Run: speccore iteration-from-global to generate iteration from requirements');
|
|
71
|
+
logger_1.logger.info('');
|
|
72
|
+
logger_1.logger.info('💡 WorkBuddy Integration: .workbuddy/ files created.');
|
|
73
|
+
logger_1.logger.info(' Reopen this project in WorkBuddy to enable Speccore commands.');
|
|
91
74
|
}
|
|
92
75
|
catch (error) {
|
|
93
76
|
spinner.fail(`Initialization failed: ${error}`);
|
|
@@ -119,107 +102,12 @@ async function createDefaultFiles(speccoreDir) {
|
|
|
119
102
|
- 数据库:snake_case
|
|
120
103
|
- 代码:camelCase / PascalCase
|
|
121
104
|
|
|
122
|
-
## 代码规范(会被 execute 自动注入)
|
|
123
|
-
|
|
124
|
-
<!-- spec-rule: exception-handler -->
|
|
125
|
-
- 统一异常:所有 Controller 方法抛出 BusinessException
|
|
126
|
-
- 全局捕获:@ControllerAdvice 统一处理,返回 { code, message, data }
|
|
127
|
-
- 禁止:直接返回 null 或不处理异常
|
|
128
|
-
<!-- /spec-rule -->
|
|
129
|
-
|
|
130
|
-
<!-- spec-rule: response-format -->
|
|
131
|
-
- 统一返回类型:Result<T> = { code: Integer, message: String, data: T }
|
|
132
|
-
- Controller 方法签名:public Result<XxxDTO> methodName(...)
|
|
133
|
-
<!-- /spec-rule -->
|
|
134
|
-
|
|
135
|
-
<!-- spec-rule: orm -->
|
|
136
|
-
- ORM 框架:MyBatis-Plus 3.5
|
|
137
|
-
- 数据访问:XxxRepository extends BaseMapper<Xxx>,禁止手写 SQL
|
|
138
|
-
- 软删除:@TableLogic 注解,查询自动过滤已删除记录
|
|
139
|
-
<!-- /spec-rule -->
|
|
140
|
-
|
|
141
|
-
<!-- spec-rule: naming -->
|
|
142
|
-
- Controller:XxxController
|
|
143
|
-
- Service:XxxService(接口)+ XxxServiceImpl(实现)
|
|
144
|
-
- Repository:XxxRepository extends BaseMapper<Xxx>
|
|
145
|
-
- DTO:CreateXxxDTO / UpdateXxxDTO / XxxPageDTO
|
|
146
|
-
<!-- /spec-rule -->
|
|
147
|
-
|
|
148
|
-
<!-- spec-rule: validation -->
|
|
149
|
-
- 参数校验:Controller 层 @Valid + JSR-303 注解
|
|
150
|
-
- DTO:@NotBlank / @NotNull / @Pattern
|
|
151
|
-
- 失败返回:MethodArgumentNotValidException → 400 + 错误详情
|
|
152
|
-
<!-- /spec-rule -->
|
|
153
|
-
|
|
154
|
-
<!-- spec-rule: git-branch -->
|
|
155
|
-
- 分支命名格式: {YYYYMMDD}-{任务名}-{姓名缩写}
|
|
156
|
-
- 示例: 260715-订单管理-zs
|
|
157
|
-
- 开发前自动创建分支: git checkout -b {日期}-{任务名}-{缩写}
|
|
158
|
-
- 姓名缩写参见 PROJECT/TEAM.md
|
|
159
|
-
<!-- /spec-rule -->
|
|
160
|
-
|
|
161
105
|
## 异常码体系
|
|
162
106
|
| 错误码 | 含义 | 场景 |
|
|
163
107
|
| :--- | :--- | :--- |
|
|
164
108
|
| 1001 | 用户不存在 | 登录时手机号未注册 |
|
|
165
109
|
| 1002 | 密码错误 | 登录密码不匹配 |
|
|
166
110
|
| ... | ... | ... |
|
|
167
|
-
|
|
168
|
-
## AI 操作规则(对话中自动遵守)
|
|
169
|
-
|
|
170
|
-
当用户在对话中请求修改 Spec 文件时,AI 必须执行**两阶段确认**流程:
|
|
171
|
-
|
|
172
|
-
### 第一阶段:变更分析(用户确认后再进入第二阶段)
|
|
173
|
-
AI 输出结构化的分析报告:
|
|
174
|
-
|
|
175
|
-
- **变更内容**: 将要修改哪些文件,具体改什么(新增/修改/删除)
|
|
176
|
-
- **影响范围**: 检查 PROJECT_GRAPH.md,列出受影响的依赖任务
|
|
177
|
-
- **风险评级**: 🟢低 / 🟡中 / 🔴高,附评级理由
|
|
178
|
-
- **确认**: "确认继续?" 等待用户回复
|
|
179
|
-
|
|
180
|
-
### 第二阶段:执行计划(用户确认后才写入文件)
|
|
181
|
-
AI 列出具体执行步骤:
|
|
182
|
-
|
|
183
|
-
- **修改清单**: 每个文件的具体改动(含 diff 摘要)
|
|
184
|
-
- **关联更新**: 是否需要同步更新 API_CONTRACT.yaml / TECH.md / 期次总览
|
|
185
|
-
- **变更履历**: 将在每个被修改文件末尾追加的条目预览
|
|
186
|
-
- **确认**: "开始执行?" 等待用户回复
|
|
187
|
-
|
|
188
|
-
用户确认后,AI 一次性完成所有写入,并输出结果摘要。
|
|
189
|
-
|
|
190
|
-
### 写入前自动备份
|
|
191
|
-
AI 修改任何 Spec 文件前,必须先复制原文件为同目录下的 .bak 副本(如 REQ.md → REQ.md.bak)。
|
|
192
|
-
用户说「回滚」时,AI 从 .bak 恢复原文件。备份保留 24 小时后清理。
|
|
193
|
-
|
|
194
|
-
### 自动追加变更履历
|
|
195
|
-
修改 Spec 文件后,在文件末尾追加表格:
|
|
196
|
-
|
|
197
|
-
| 时间 | 变更内容 | 类型 | 版本 |
|
|
198
|
-
| :--- | :--- | :--- | :--- |
|
|
199
|
-
| 2026-07-21 | + POST /api/v1/orders/batch 批量创建 | 新增接口 | v1.1 |
|
|
200
|
-
|
|
201
|
-
### 完成后提示
|
|
202
|
-
- 需要重新执行的命令(execute / sync --detect / validate)
|
|
203
|
-
- 受影响的下游任务清单
|
|
204
|
-
|
|
205
|
-
### 禁止行为
|
|
206
|
-
- ❌ 跳过第一阶段直接展示修改内容
|
|
207
|
-
- ❌ 用户在第一阶段未确认就继续
|
|
208
|
-
- ❌ 修改 Spec 后不追加变更履历
|
|
209
|
-
- ❌ 修改 Spec 后不告知影响的下游任务
|
|
210
|
-
|
|
211
|
-
## 核心宪法与冲突裁决
|
|
212
|
-
|
|
213
|
-
### 核心原则
|
|
214
|
-
- **反向同步铁律**:代码与 Spec 冲突时,必须先更新 Spec,再修改代码
|
|
215
|
-
- **Spec 是唯一事实源**:文档和代码冲突时,错的一定是代码
|
|
216
|
-
|
|
217
|
-
### 冲突裁决规则
|
|
218
|
-
| 等级 | 场景 | 处理方式 |
|
|
219
|
-
| :--- | :--- | :--- |
|
|
220
|
-
| L1 | 明确冲突 | 立即修正代码 |
|
|
221
|
-
| L2 | Spec 缺陷 | 暂停,提交裁决 |
|
|
222
|
-
| L3 | 环境不可行 | 升级至架构评审 |
|
|
223
111
|
`);
|
|
224
112
|
// PROJECT files
|
|
225
113
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(speccoreDir, 'PROJECT', 'INDEX.md'), `# 项目索引
|
|
@@ -236,30 +124,11 @@ AI 修改任何 Spec 文件前,必须先复制原文件为同目录下的 .bak
|
|
|
236
124
|
- [TEAM.md](TEAM.md) - 团队与 Git 映射
|
|
237
125
|
- [GLOSSARY.md](GLOSSARY.md) - 术语表
|
|
238
126
|
`);
|
|
239
|
-
await (0, fs_extra_1.writeFile)((0, path_1.join)(speccoreDir, 'PROJECT', 'TEAM.md'), `#
|
|
240
|
-
|
|
241
|
-
## 分支命名规则
|
|
242
|
-
|
|
243
|
-
格式: {YYYYMMDD}-{任务名}-{姓名缩写}
|
|
244
|
-
示例: 260715-订单管理-zs
|
|
245
|
-
|
|
246
|
-
> AI 创建 Task 分支时自动遵守此格式。
|
|
127
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(speccoreDir, 'PROJECT', 'TEAM.md'), `# 团队与 Git 映射
|
|
247
128
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
|
251
|
-
| :--- | :--- | :--- | :--- |
|
|
252
|
-
| _待填写_ | - | - | - |
|
|
253
|
-
|
|
254
|
-
## 分支操作
|
|
255
|
-
|
|
256
|
-
\`\`\`bash
|
|
257
|
-
# 手动创建
|
|
258
|
-
git checkout -b 260715-订单管理-zs
|
|
259
|
-
|
|
260
|
-
# AI 对话创建
|
|
261
|
-
"开发 Task-001" → AI 自动创建分支
|
|
262
|
-
\`\`\`
|
|
129
|
+
| 成员 | Git 用户名 | 角色 | 技术栈 | 负责模块 |
|
|
130
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
131
|
+
| | | | | |
|
|
263
132
|
`);
|
|
264
133
|
// ITERATIONS/README.md
|
|
265
134
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(speccoreDir, 'ITERATIONS', 'README.md'), `# 期次索引
|
|
@@ -527,31 +396,19 @@ flowchart TB
|
|
|
527
396
|
// GLOBAL/TECH_STACK.md - 全量技术栈
|
|
528
397
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(globalDir, 'TECH_STACK.md'), `# 全量技术栈
|
|
529
398
|
|
|
530
|
-
>
|
|
531
|
-
|
|
532
|
-
<!-- tech-stack: backend -->
|
|
533
|
-
- 语言: Java 17
|
|
534
|
-
- 框架: Spring Boot 3.2
|
|
535
|
-
- ORM: MyBatis-Plus 3.5
|
|
536
|
-
<!-- /tech-stack -->
|
|
537
|
-
|
|
538
|
-
<!-- tech-stack: frontend -->
|
|
539
|
-
- 框架: Vue 3
|
|
540
|
-
- UI: Element Plus
|
|
541
|
-
- 构建: Vite
|
|
542
|
-
<!-- /tech-stack -->
|
|
399
|
+
> 本文档汇总所有项目的技术栈信息,跨项目统一管理版本和依赖。
|
|
543
400
|
|
|
544
401
|
## 后端技术栈
|
|
545
402
|
|
|
546
|
-
| 项目名称 | 语言/框架 | ORM | 数据库 | 缓存 |
|
|
547
|
-
| :--- | :--- | :--- | :--- | :--- |
|
|
548
|
-
| _待导入_ | - | - | - | - |
|
|
403
|
+
| 项目名称 | 语言/框架 | ORM | 数据库 | 缓存 | 消息队列 |
|
|
404
|
+
| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
405
|
+
| _待导入_ | - | - | - | - | - |
|
|
549
406
|
|
|
550
407
|
## 前端技术栈
|
|
551
408
|
|
|
552
|
-
| 项目名称 | 平台类型 | 框架 | UI 库 | 构建工具 |
|
|
553
|
-
| :--- | :--- | :--- | :--- | :--- |
|
|
554
|
-
| _待导入_ | - | - | - | - |
|
|
409
|
+
| 项目名称 | 平台类型 | 框架 | 状态管理 | UI 库 | 构建工具 |
|
|
410
|
+
| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
411
|
+
| _待导入_ | - | - | - | - | - |
|
|
555
412
|
|
|
556
413
|
## 中间件与基础设施
|
|
557
414
|
|
|
@@ -568,33 +425,13 @@ flowchart TB
|
|
|
568
425
|
// GLOBAL/CODE_INDEX.md - 全量代码索引
|
|
569
426
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(globalDir, 'CODE_INDEX.md'), `# 全量代码索引
|
|
570
427
|
|
|
571
|
-
>
|
|
428
|
+
> 本文档是多工程代码路径映射,将所有项目的代码路径统一索引。
|
|
572
429
|
|
|
573
|
-
##
|
|
430
|
+
## 工程映射
|
|
574
431
|
|
|
575
|
-
|
|
|
432
|
+
| 工程名称 | 类型 | 本地路径 | Git 仓库 | 分支 |
|
|
576
433
|
| :--- | :--- | :--- | :--- | :--- |
|
|
577
|
-
|
|
|
578
|
-
| frontend-web | src/frontend/web | git@xxx:team/frontend-web.git | main | Vue 3 |
|
|
579
|
-
| frontend-mini | src/frontend/mini | git@xxx:team/frontend-mini.git | main | uni-app |
|
|
580
|
-
|
|
581
|
-
## 分支命名规则
|
|
582
|
-
|
|
583
|
-
格式: {YYYYMMDD}-{任务名}-{姓名缩写},从 {默认分支} 拉出。
|
|
584
|
-
示例: 260715-订单管理-zs(从 main 拉出)
|
|
585
|
-
|
|
586
|
-
> 姓名缩写参见 PROJECT/TEAM.md。AI 在 Task 关联多个工程时,为每个工程创建同名分支。
|
|
587
|
-
|
|
588
|
-
## Task → 工程 映射
|
|
589
|
-
|
|
590
|
-
| Task | 涉及工程 | 说明 |
|
|
591
|
-
| :--- | :--- | :--- |
|
|
592
|
-
| _待添加_ | — | — |
|
|
593
|
-
|
|
594
|
-
> 📌 新增 Task/工程时,在此追加对应行。
|
|
595
|
-
|
|
596
|
-
> 📌 新增 Task 时,在此追加一行对应关系。
|
|
597
|
-
| _待导入_ | - | - | - |
|
|
434
|
+
| _待导入_ | - | - | - | - |
|
|
598
435
|
|
|
599
436
|
## 关键目录说明
|
|
600
437
|
|
|
@@ -730,97 +567,154 @@ _暂无需求,等待 \`speccore import\` 导入_
|
|
|
730
567
|
`);
|
|
731
568
|
}
|
|
732
569
|
/**
|
|
733
|
-
*
|
|
570
|
+
* 创建 .workbuddy/ 集成文件,让 WorkBuddy IDE 自动识别 Speccore 项目
|
|
571
|
+
* 包括项目记忆文件和 Speccore skill
|
|
734
572
|
*/
|
|
735
|
-
async function
|
|
736
|
-
const
|
|
737
|
-
//
|
|
738
|
-
await (0, fs_extra_1.
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
573
|
+
async function createWorkBuddyFiles(projectRoot) {
|
|
574
|
+
const workbuddyDir = (0, path_1.join)(projectRoot, '.workbuddy');
|
|
575
|
+
// .workbuddy/memory/MEMORY.md — 项目记忆(告诉 WorkBuddy 这是 Speccore 项目)
|
|
576
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(workbuddyDir, 'memory'));
|
|
577
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(workbuddyDir, 'memory', 'MEMORY.md'), `# Project Memory — Speccore Managed
|
|
578
|
+
|
|
579
|
+
This project uses **SpecCore** (\`speccore\` CLI) for spec-driven development.
|
|
580
|
+
|
|
581
|
+
## Key Paths
|
|
582
|
+
|
|
583
|
+
| Path | Purpose |
|
|
584
|
+
|------|---------|
|
|
585
|
+
| \`.speccore/\` | All SpecCore data — **source of truth for requirements** |
|
|
586
|
+
| \`.speccore/GLOBAL/INDEX.md\` | Multi-project requirement catalog |
|
|
587
|
+
| \`.speccore/CONSTITUTION.md\` | Tech stack and naming conventions |
|
|
588
|
+
| \`.speccore/SETTINGS.md\` | Framework configuration |
|
|
589
|
+
| \`.speccore/local/context.json\` | Runtime context (current iteration, task) |
|
|
590
|
+
| \`.speccore/PATTERNS/TEMPLATES/\` | Code pattern templates |
|
|
591
|
+
|
|
592
|
+
## Workflow
|
|
593
|
+
|
|
594
|
+
1. \`speccore init\` — first-time setup (already done)
|
|
595
|
+
2. \`speccore import --project=<name>\` — import source code
|
|
596
|
+
3. \`speccore goal\` — create requirements
|
|
597
|
+
4. \`speccore iteration create\` — start iteration
|
|
598
|
+
5. \`speccore spec "<query>"\` — smart entry via intent recognition
|
|
599
|
+
|
|
600
|
+
## Important Conventions
|
|
601
|
+
|
|
602
|
+
- All requirements live in \`.speccore/\`, not in \`.workbuddy/\`
|
|
603
|
+
- \`speccore\` CLI is the authoritative tool for spec management
|
|
604
|
+
- Use \`speccore spec "..."\` for natural language command matching
|
|
605
|
+
- The GLOBAL layer enables cross-project requirement tracking
|
|
606
|
+
`);
|
|
607
|
+
// .workbuddy/skills/speccore/SKILL.md — Speccore skill(让 WorkBuddy 掌握 speccore 命令)
|
|
608
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(workbuddyDir, 'skills', 'speccore'));
|
|
609
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(workbuddyDir, 'skills', 'speccore', 'SKILL.md'), `---
|
|
610
|
+
name: speccore
|
|
611
|
+
description: SpecCore spec-driven development CLI integration. Detects .speccore/ projects and enables AI-powered requirements, iteration management, global architecture layer, and intent recognition.
|
|
612
|
+
version: 1.0.0
|
|
613
|
+
triggers:
|
|
614
|
+
- speccore
|
|
615
|
+
- spec
|
|
616
|
+
- 需求
|
|
617
|
+
- 迭代
|
|
618
|
+
- 规格
|
|
619
|
+
- 全量层
|
|
620
|
+
- 意图识别
|
|
621
|
+
- requirement
|
|
622
|
+
- iteration
|
|
623
|
+
- global layer
|
|
624
|
+
- 变更影响
|
|
625
|
+
- 基线
|
|
626
|
+
- 审计
|
|
627
|
+
---
|
|
628
|
+
|
|
629
|
+
# SpecCore — Spec-Driven Development CLI
|
|
630
|
+
|
|
631
|
+
This skill activates when the user opens a project containing a \`.speccore/\` directory, or when they mention spec-driven development, requirement management, or any Speccore command.
|
|
632
|
+
|
|
633
|
+
## Project Detection
|
|
634
|
+
|
|
635
|
+
A project is a Speccore project if \`.speccore/\` exists in the project root. Key files:
|
|
636
|
+
- \`.speccore/CONSTITUTION.md\` — tech stack constitution
|
|
637
|
+
- \`.speccore/SETTINGS.md\` — framework configuration
|
|
638
|
+
- \`.speccore/GLOBAL/INDEX.md\` — multi-project global requirement index
|
|
639
|
+
- \`.speccore/PROJECT/INDEX.md\` — local project index
|
|
640
|
+
- \`.speccore/PROJECT/TEAM.md\` — team members & git mapping
|
|
641
|
+
- \`.speccore/ITERATIONS/README.md\` — iteration index
|
|
642
|
+
- \`.speccore/RULES/POST_COMPLETION.md\` — post-completion maintenance rules
|
|
643
|
+
- \`.speccore/local/context.json\` — runtime context (current iteration, task, assignee)
|
|
644
|
+
|
|
645
|
+
## Multi-Project Global Layer
|
|
646
|
+
|
|
647
|
+
\`\`\`
|
|
648
|
+
.speccore/GLOBAL/
|
|
649
|
+
├── INDEX.md # Universal requirement catalog
|
|
650
|
+
├── OVERVIEW.md # Cross-project panorama
|
|
651
|
+
├── ARCHITECTURE.md # System architecture (mermaid)
|
|
652
|
+
├── TECH_STACK.md # Unified tech stack registry
|
|
653
|
+
├── CODE_INDEX.md # Code path mappings
|
|
654
|
+
├── GLOSSARY.md # Cross-project glossary
|
|
655
|
+
├── PROTOTYPE_INDEX.md
|
|
656
|
+
├── CHANGELOG.md # Global change log
|
|
657
|
+
├── BASELINES/ # Version baselines
|
|
658
|
+
└── PROJECTS/{proj}/ # Per-project requirements
|
|
659
|
+
\`\`\`
|
|
660
|
+
|
|
661
|
+
## Speccore Commands Quick Reference
|
|
662
|
+
|
|
663
|
+
### Setup & Import
|
|
664
|
+
- \`speccore init\` — Initialize (already done)
|
|
665
|
+
- \`speccore import --project=<name> [--type=backend|web|...] --path=<path>\` — Import source code
|
|
666
|
+
- \`speccore global-status\` — View multi-project overview
|
|
667
|
+
|
|
668
|
+
### Spec-Driven Development
|
|
669
|
+
- \`speccore spec "<natural language>"\` — Smart entry via intent recognition
|
|
670
|
+
- \`speccore goal --name="<name>" [--iteration=<it>]\` — Create new requirement
|
|
671
|
+
|
|
672
|
+
### Iteration Management
|
|
673
|
+
- \`speccore iteration create --name="<name>" [--goal=<goal>]\` — Start iteration
|
|
674
|
+
- \`speccore iteration-from-global [--project=<name>]\` — Generate from global layer
|
|
675
|
+
- \`speccore sync-global [--iteration=<name>]\` — Sync back to global
|
|
676
|
+
|
|
677
|
+
### Analysis & Quality
|
|
678
|
+
- \`speccore impact --req=<id>\` — Change impact analysis
|
|
679
|
+
- \`speccore audit [--strict]\` — Quality audit (duplicates, conflicts)
|
|
680
|
+
- \`speccore dashboard\` — HTML dashboard
|
|
681
|
+
- \`speccore history [--req=<id>]\` — Change history
|
|
682
|
+
|
|
683
|
+
### Maintenance
|
|
684
|
+
- \`speccore bugfix --title="<desc>"\` — Quick bug fix
|
|
685
|
+
- \`speccore change --req=<id> --desc="<desc>"\` — Requirement change
|
|
686
|
+
- \`speccore handover [--iteration=<name>]\` — Handover document
|
|
687
|
+
- \`speccore retro [--iteration=<name>]\` — Retrospective
|
|
688
|
+
- \`speccore rename --target=<old> --new-name=<new>\` — Rename
|
|
689
|
+
- \`speccore baseline create --name=<name>\` — Version snapshot
|
|
690
|
+
|
|
691
|
+
## Working with Speccore Projects
|
|
692
|
+
|
|
693
|
+
1. **Always read \`.speccore/local/context.json\` first** to understand current state
|
|
694
|
+
2. **Before creating specs**, read \`.speccore/CONSTITUTION.md\` for conventions
|
|
695
|
+
3. **For multi-project work**, check \`.speccore/GLOBAL/INDEX.md\`
|
|
696
|
+
4. **Run commands directly** using \`speccore\` CLI
|
|
697
|
+
5. **After changes**, suggest running sync or audit
|
|
698
|
+
|
|
699
|
+
## Quick Aliases
|
|
700
|
+
|
|
701
|
+
| Alias | Command |
|
|
702
|
+
|-------|---------|
|
|
703
|
+
| in | init |
|
|
704
|
+
| imp | import |
|
|
705
|
+
| it | iteration |
|
|
706
|
+
| ex | expand |
|
|
707
|
+
| pl | plan |
|
|
708
|
+
| pg | program |
|
|
709
|
+
| ch | create |
|
|
710
|
+
| if | impact |
|
|
711
|
+
| bl | baseline |
|
|
712
|
+
| db | dashboard |
|
|
713
|
+
| ad | audit |
|
|
714
|
+
| sg | sync-global |
|
|
715
|
+
| gs | global-status |
|
|
716
|
+
| hs | history |
|
|
717
|
+
| ifg | iteration-from-global |
|
|
771
718
|
`);
|
|
772
|
-
}
|
|
773
|
-
/**
|
|
774
|
-
* Generate slash command files for all supported AI tools
|
|
775
|
-
* Each tool has its own commands directory convention:
|
|
776
|
-
* .codebuddy/commands/ → WorkBuddy
|
|
777
|
-
* .qoder/commands/ → Qcoder
|
|
778
|
-
* .cursor/commands/ → Cursor
|
|
779
|
-
* .trae/commands/ → Trae
|
|
780
|
-
* .windsurf/commands/ → Windsurf
|
|
781
|
-
* .claude/commands/ → Claude Code / OpenCode
|
|
782
|
-
*/
|
|
783
|
-
async function generateSlashCommands(projectRoot) {
|
|
784
|
-
const toolDirs = ['.codebuddy', '.qoder', '.cursor', '.trae', '.windsurf', '.claude'];
|
|
785
|
-
const commands = [
|
|
786
|
-
['spec-init', 'Initialize project', ['speccore init']],
|
|
787
|
-
['spec-dev', 'Smart dev entry', ['speccore dev']],
|
|
788
|
-
['spec-status-panel', 'Status panel', ['speccore status-panel']],
|
|
789
|
-
['spec-word2spec', 'Import requirements', ['speccore word2spec --files "${1:file}=${2:platform}" -i ${3:Q1}']],
|
|
790
|
-
['spec-analyze', 'Analyze requirements', ['speccore analyze --iteration=${1:Q1}']],
|
|
791
|
-
['spec-split', 'Split into tasks', ['speccore iteration split --iteration=${1:Q1}']],
|
|
792
|
-
['spec-execute', 'Execute task', ['speccore execute --task=${1:Task-001} --force --iteration=${2:Q1}']],
|
|
793
|
-
['spec-execute-all', 'Execute all tasks', ['speccore execute --all --force --iteration=${1:Q1}']],
|
|
794
|
-
['spec-pr', 'Create PR', ['speccore pr --task=${1:Task-001}']],
|
|
795
|
-
['spec-done', 'Complete task', ['speccore done --task=${1:Task-001}']],
|
|
796
|
-
['spec-lifecycle', 'Task lifecycle', ['speccore lifecycle --task=${1:Task-001}']],
|
|
797
|
-
['spec-lifecycle-all', 'View kanban', ['speccore lifecycle --all']],
|
|
798
|
-
['spec-merge-check', 'Merge conflict check', ['speccore merge-check --iteration=${1:Q1}']],
|
|
799
|
-
['spec-rollback', 'Rollback task', ['speccore rollback --task=${1:Task-001}']],
|
|
800
|
-
['spec-spec', 'NL intent recognition', ['speccore spec "${1:新增订单导出功能}"']],
|
|
801
|
-
['spec-constitution', 'Auto-detect constitution', ['speccore constitution']],
|
|
802
|
-
['spec-tracker', 'Requirement tracker', ['speccore tracker']],
|
|
803
|
-
['spec-context', 'Output task context', ['speccore context --task=${1:Task-001}']],
|
|
804
|
-
['spec-arch-update', 'Update architecture', ['speccore arch-update --iteration=${1:Q1}']],
|
|
805
|
-
['spec-validate', 'Validate specs', ['speccore validate --iteration=${1:Q1}']],
|
|
806
|
-
['spec-search', 'Search across specs', ['speccore search "${1:keyword}"']],
|
|
807
|
-
['spec-dashboard', 'Project dashboard', ['speccore dashboard']],
|
|
808
|
-
['spec-health', 'Health check', ['speccore health']],
|
|
809
|
-
['spec-new-task', 'Create task', ['speccore new-task --name="${1:功能}" --platforms=${2:web} --iteration=${3:Q1}']],
|
|
810
|
-
['spec-bugfix', 'Bug fix flow', ['speccore bugfix --title="${1:支付超时}"']],
|
|
811
|
-
['spec-change', 'Change request', ['speccore change --iteration=${1:Q1}']],
|
|
812
|
-
['spec-import', 'Import code', ['speccore import --project=${1:backend} --path=${2:./src} --type=backend']],
|
|
813
|
-
['spec-ops', 'Operation history', ['speccore ops']],
|
|
814
|
-
['spec-open', 'Open task files', ['speccore open --task=${1:Task-001} --iteration=${2:Q1}']],
|
|
815
|
-
];
|
|
816
|
-
for (const toolDir of toolDirs) {
|
|
817
|
-
const cmdDir = (0, path_1.join)(projectRoot, toolDir, 'commands');
|
|
818
|
-
await (0, fs_extra_1.ensureDir)(cmdDir);
|
|
819
|
-
for (const [name, desc, bodyLines] of commands) {
|
|
820
|
-
const content = "---\nname: " + name + "\ndescription: " + desc + "\n---\n" + bodyLines.join("\n") + "\n";
|
|
821
|
-
await (0, fs_extra_1.writeFile)((0, path_1.join)(cmdDir, name + ".md"), content);
|
|
822
|
-
}
|
|
823
|
-
}
|
|
824
|
-
logger_1.logger.info(" ✅ " + commands.length + " slash commands × " + toolDirs.length + " tools → .codebuddy|.qoder|.cursor|.trae|.windsurf|.claude/commands/");
|
|
825
719
|
}
|
|
826
720
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/iteration/create.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/iteration/create.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/iteration/create.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/iteration/create.ts"],"names":[],"mappings":"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"}
|