speccore 8.3.345 → 8.3.347
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/.agents/skills/speccore-router/SKILL.md +7 -7
- package/README.en.md +11 -10
- package/README.md +13 -13
- package/dist/cli.js +14 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/ask.d.ts.map +1 -1
- package/dist/commands/ask.js +3 -0
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/help.d.ts +2 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +97 -8
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +16 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/core/ask-engine.d.ts +2 -0
- package/dist/core/ask-engine.d.ts.map +1 -1
- package/dist/core/ask-engine.js +35 -6
- package/dist/core/ask-engine.js.map +1 -1
- package/dist/core/command-visibility.d.ts +13 -0
- package/dist/core/command-visibility.d.ts.map +1 -0
- package/dist/core/command-visibility.js +27 -0
- package/dist/core/command-visibility.js.map +1 -0
- package/dist/core/help-panel.d.ts +1 -1
- package/dist/core/help-panel.d.ts.map +1 -1
- package/dist/core/help-panel.js +10 -10
- package/dist/core/project-cards.d.ts +50 -0
- package/dist/core/project-cards.d.ts.map +1 -0
- package/dist/core/project-cards.js +225 -0
- package/dist/core/project-cards.js.map +1 -0
- package/package.json +1 -1
- package/templates/html/speccore-ask-guide.html +1 -1
- package/templates/html/speccore-ask-pipeline.html +1 -1
- package/templates/html/speccore-ask-result.html +1 -1
- package/templates/html/speccore-help.html +34 -61
- package/templates/html/speccore-setup-guide.html +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 项目名片(Project Cards)— 模糊端名 → 项目信息映射
|
|
3
|
+
*
|
|
4
|
+
* 用户自然语言里提到某个端(端名/业务名/中文描述/类型词「前端」「后端」等)时,
|
|
5
|
+
* 按需解析出对应工程,并把源码路径/Git 仓库等「名片」信息注入给 AI。
|
|
6
|
+
* 设计原则:
|
|
7
|
+
* - 按需:用户没提项目就完全不注入;
|
|
8
|
+
* - 克制:每端一张小名片(1-2 行),多端命中也不膨胀;
|
|
9
|
+
* - 确定性:纯词典/正则匹配,不依赖 LLM(意图识别的 LLM 兜底是占位符)。
|
|
10
|
+
*/
|
|
11
|
+
import { PlatformConfig } from './unified-config';
|
|
12
|
+
/** 命中置信度:exact=端名/业务名全量/类型词/3字段完整;partial=滑窗 2 字部分提及(疑似) */
|
|
13
|
+
export type MatchConfidence = 'exact' | 'partial';
|
|
14
|
+
export interface ProjectCard {
|
|
15
|
+
/** 端名/工程标识(如 booking-service) */
|
|
16
|
+
name: string;
|
|
17
|
+
/** 工程类型 */
|
|
18
|
+
type: 'frontend' | 'backend' | 'infra';
|
|
19
|
+
/** 业务名(description 或 project_name,如「预订服务」) */
|
|
20
|
+
businessName?: string;
|
|
21
|
+
/** 源码路径(相对项目根,如 ./backend/booking-service) */
|
|
22
|
+
codePath?: string;
|
|
23
|
+
/** Git 仓库地址 */
|
|
24
|
+
gitRepo?: string;
|
|
25
|
+
/** 默认分支 */
|
|
26
|
+
defaultBranch?: string;
|
|
27
|
+
/** 命中置信度(仅匹配结果携带;速查区/全量表不参与) */
|
|
28
|
+
confidence?: MatchConfidence;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 从用户自然语言中解析命中的端(可多端并行命中),携带置信度:
|
|
32
|
+
* - 端名包含(词边界 + 复合名分段):「booking-service」「booking」「h5」→ exact
|
|
33
|
+
* - 业务名模糊命中:「预订服务」「移动端」→ exact;「预订」「后台」(滑窗 2 字)→ partial(疑似)
|
|
34
|
+
* - 类型词:「前端」→ 全部 frontend 端;「后端」→ 全部 backend 端 → exact
|
|
35
|
+
* 返回保持 platforms 声明顺序;全无命中返回空数组。
|
|
36
|
+
*/
|
|
37
|
+
export declare function matchProjectsFromText(text: string, platforms: PlatformConfig[]): ProjectCard[];
|
|
38
|
+
/** 名片单行(注入格式):booking-service(预订服务 · backend)→ 源码 ./x · Git git@...(main) */
|
|
39
|
+
export declare function formatCardLine(card: ProjectCard): string;
|
|
40
|
+
/**
|
|
41
|
+
* 命中端名片的注入块(约 40 token/端)。未命中返回空串。
|
|
42
|
+
* 用于 ask 意图块 / prompt 上下文——只注入被提到的那几端;
|
|
43
|
+
* 滑窗「疑似」端做轻标注,引导 AI 按需核实 + 按需读全量表。
|
|
44
|
+
*/
|
|
45
|
+
export declare function formatProjectCardInjection(hits: ProjectCard[]): string;
|
|
46
|
+
/** AGENTS.md 速查区:每端一行映射(约 15-20 token/端,宿主 AI 常驻可见) */
|
|
47
|
+
export declare function buildQuickIndex(platforms: PlatformConfig[]): string;
|
|
48
|
+
/** 生成 .speccore/GLOBAL/PROJECTS.md(全量名片落盘,不占对话 token,AI 按需 Read) */
|
|
49
|
+
export declare function writeGlobalProjectsDoc(cwd: string, platforms: PlatformConfig[]): Promise<string | null>;
|
|
50
|
+
//# sourceMappingURL=project-cards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-cards.d.ts","sourceRoot":"","sources":["../../src/core/project-cards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASlD,4DAA4D;AAC5D,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAsED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAwB9F;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CASxD;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CActE;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,CAUnE;AAED,oEAAoE;AACpE,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiB7G"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.matchProjectsFromText = matchProjectsFromText;
|
|
37
|
+
exports.formatCardLine = formatCardLine;
|
|
38
|
+
exports.formatProjectCardInjection = formatProjectCardInjection;
|
|
39
|
+
exports.buildQuickIndex = buildQuickIndex;
|
|
40
|
+
exports.writeGlobalProjectsDoc = writeGlobalProjectsDoc;
|
|
41
|
+
/** 类型词 → 命中该类型下全部端(「前端」「后端」这类笼统称呼) */
|
|
42
|
+
const TYPE_KEYWORDS = {
|
|
43
|
+
frontend: ['前端', '前台', 'web端', 'web 端', '网页端', '界面端', '客户端'],
|
|
44
|
+
backend: ['后端', '服务端', '后台服务', '接口端'],
|
|
45
|
+
infra: ['基础设施', 'infra'],
|
|
46
|
+
};
|
|
47
|
+
function toCard(p) {
|
|
48
|
+
return {
|
|
49
|
+
name: p.name,
|
|
50
|
+
type: p.type,
|
|
51
|
+
businessName: p.project_name || p.description,
|
|
52
|
+
codePath: p.code_path,
|
|
53
|
+
gitRepo: p.git_repo,
|
|
54
|
+
defaultBranch: p.default_branch,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 端名词边界匹配。
|
|
59
|
+
* - 全名:「h5-mobile」命中;
|
|
60
|
+
* - 连字符/下划线/点分段:「H5端」「H5」命中 h5-mobile(取 h5 段);
|
|
61
|
+
* - 词边界保证 app 不会误中 application。
|
|
62
|
+
*/
|
|
63
|
+
function nameHit(text, name) {
|
|
64
|
+
if (!name || name.length < 2)
|
|
65
|
+
return false;
|
|
66
|
+
const esc = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
67
|
+
if (new RegExp(`(^|[^a-z0-9])${esc}($|[^a-z0-9])`, 'i').test(text))
|
|
68
|
+
return true;
|
|
69
|
+
// 带分隔符的复合名(h5-mobile / admin_web / api.service)→ 各段(长度≥2)均可命中
|
|
70
|
+
const segs = name.split(/[-_.]+/);
|
|
71
|
+
if (segs.length > 1) {
|
|
72
|
+
for (const seg of segs) {
|
|
73
|
+
if (seg.length < 2)
|
|
74
|
+
continue;
|
|
75
|
+
const segEsc = seg.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
76
|
+
if (new RegExp(`(^|[^a-z0-9])${segEsc}($|[^a-z0-9])`, 'i').test(text))
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
/** 归一化:小写 + 去空白/连字符/下划线(「h5 移动端」「H5-移动端」→「h5移动端」) */
|
|
83
|
+
function normalize(text) {
|
|
84
|
+
return text.toLowerCase().replace(/[\s\-_]+/g, '');
|
|
85
|
+
}
|
|
86
|
+
/** 提取中文连续段(去英文/数字/符号后的中文字串列表) */
|
|
87
|
+
function chineseSegments(text) {
|
|
88
|
+
return text.match(/[\u4e00-\u9fa5]+/g) || [];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 业务名/描述模糊命中,返回置信度:
|
|
92
|
+
* - 'exact':归一化全量包含(大小写/空格/连字符容差)或 3 字段完整出现;
|
|
93
|
+
* - 'partial':≥4 字中文段滑窗——提到任意连续 2 字即视为「疑似提及」
|
|
94
|
+
* (「预订」→「预订服务」、「后台」→「管理后台」);
|
|
95
|
+
* - null:<3 字段不参与(防「移动」等泛词误命中)。
|
|
96
|
+
*/
|
|
97
|
+
function fuzzyLabelHit(text, label) {
|
|
98
|
+
if (!label || label.length < 2)
|
|
99
|
+
return null;
|
|
100
|
+
const nt = normalize(text);
|
|
101
|
+
const nl = normalize(label);
|
|
102
|
+
if (!nl)
|
|
103
|
+
return null;
|
|
104
|
+
if (nt.includes(nl))
|
|
105
|
+
return 'exact';
|
|
106
|
+
for (const seg of chineseSegments(label)) {
|
|
107
|
+
if (seg.length === 3) {
|
|
108
|
+
if (nt.includes(seg))
|
|
109
|
+
return 'exact';
|
|
110
|
+
}
|
|
111
|
+
else if (seg.length >= 4) {
|
|
112
|
+
for (let i = 0; i + 2 <= seg.length; i++) {
|
|
113
|
+
if (nt.includes(seg.slice(i, i + 2)))
|
|
114
|
+
return 'partial';
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 从用户自然语言中解析命中的端(可多端并行命中),携带置信度:
|
|
122
|
+
* - 端名包含(词边界 + 复合名分段):「booking-service」「booking」「h5」→ exact
|
|
123
|
+
* - 业务名模糊命中:「预订服务」「移动端」→ exact;「预订」「后台」(滑窗 2 字)→ partial(疑似)
|
|
124
|
+
* - 类型词:「前端」→ 全部 frontend 端;「后端」→ 全部 backend 端 → exact
|
|
125
|
+
* 返回保持 platforms 声明顺序;全无命中返回空数组。
|
|
126
|
+
*/
|
|
127
|
+
function matchProjectsFromText(text, platforms) {
|
|
128
|
+
if (!text || !platforms || platforms.length === 0)
|
|
129
|
+
return [];
|
|
130
|
+
const lower = text.toLowerCase();
|
|
131
|
+
const hits = [];
|
|
132
|
+
for (const p of platforms) {
|
|
133
|
+
const card = toCard(p);
|
|
134
|
+
let conf = null;
|
|
135
|
+
// 1. 端名(词边界,防短名误匹配)
|
|
136
|
+
if (nameHit(lower, p.name))
|
|
137
|
+
conf = 'exact';
|
|
138
|
+
// 2. 业务名/项目名(模糊:归一化包含 + 中文滑窗部分提及)
|
|
139
|
+
if (!conf) {
|
|
140
|
+
for (const label of [p.project_name, p.description]) {
|
|
141
|
+
const c = label ? fuzzyLabelHit(text, label) : null;
|
|
142
|
+
if (c) {
|
|
143
|
+
conf = c;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// 3. 类型词
|
|
149
|
+
if (!conf) {
|
|
150
|
+
const aliases = TYPE_KEYWORDS[p.type] || [];
|
|
151
|
+
if (aliases.some(kw => text.includes(kw)))
|
|
152
|
+
conf = 'exact';
|
|
153
|
+
}
|
|
154
|
+
if (conf)
|
|
155
|
+
hits.push({ ...card, confidence: conf });
|
|
156
|
+
}
|
|
157
|
+
return hits;
|
|
158
|
+
}
|
|
159
|
+
/** 名片单行(注入格式):booking-service(预订服务 · backend)→ 源码 ./x · Git git@...(main) */
|
|
160
|
+
function formatCardLine(card) {
|
|
161
|
+
const parts = [];
|
|
162
|
+
const label = card.businessName ? `${card.businessName} · ` : '';
|
|
163
|
+
const partialTag = card.confidence === 'partial' ? ' · ⚠️疑似' : '';
|
|
164
|
+
parts.push(`**${card.name}**(${label}${card.type}${partialTag})`);
|
|
165
|
+
if (card.codePath)
|
|
166
|
+
parts.push(`源码 \`${card.codePath}\``);
|
|
167
|
+
const git = card.gitRepo ? (card.defaultBranch ? `${card.gitRepo}(${card.defaultBranch})` : card.gitRepo) : '';
|
|
168
|
+
if (git)
|
|
169
|
+
parts.push(`Git \`${git}\``);
|
|
170
|
+
return `- ${parts.join(' → ')}`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* 命中端名片的注入块(约 40 token/端)。未命中返回空串。
|
|
174
|
+
* 用于 ask 意图块 / prompt 上下文——只注入被提到的那几端;
|
|
175
|
+
* 滑窗「疑似」端做轻标注,引导 AI 按需核实 + 按需读全量表。
|
|
176
|
+
*/
|
|
177
|
+
function formatProjectCardInjection(hits) {
|
|
178
|
+
if (hits.length === 0)
|
|
179
|
+
return '';
|
|
180
|
+
const lines = ['## 📇 项目信息(按需注入)', ''];
|
|
181
|
+
for (const h of hits)
|
|
182
|
+
lines.push(formatCardLine(h));
|
|
183
|
+
const hasPartial = hits.some(h => h.confidence === 'partial');
|
|
184
|
+
if (hasPartial) {
|
|
185
|
+
lines.push('', '> ⚠️ 带「疑似」标注的端为部分提及推断,请结合上下文核实;', '> 各端完整配置(分支策略/部署/备注)按需 Read `.speccore/GLOBAL/PROJECTS.md`(数据源 `.speccore/PROJECT.yaml` platforms 段)');
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
lines.push('', '> 以上为本次对话提到的端;完整配置(分支策略/部署/备注)按需 Read `.speccore/GLOBAL/PROJECTS.md`(数据源 `.speccore/PROJECT.yaml` platforms 段)');
|
|
189
|
+
}
|
|
190
|
+
return lines.join('\n');
|
|
191
|
+
}
|
|
192
|
+
/** AGENTS.md 速查区:每端一行映射(约 15-20 token/端,宿主 AI 常驻可见) */
|
|
193
|
+
function buildQuickIndex(platforms) {
|
|
194
|
+
if (!platforms || platforms.length === 0)
|
|
195
|
+
return '';
|
|
196
|
+
const lines = ['## 项目速查', '',
|
|
197
|
+
'> 用户提到某个端/项目名时,对应信息如下;详细信息 Read `.speccore/GLOBAL/PROJECTS.md`', '',
|
|
198
|
+
'| 端名 | 业务名 | 源码路径 | Git 仓库 |', '| :--- | :--- | :--- | :--- |'];
|
|
199
|
+
for (const p of platforms) {
|
|
200
|
+
const card = toCard(p);
|
|
201
|
+
lines.push(`| \`${card.name}\` | ${card.businessName || '-'} | \`${card.codePath || '-'}\` | ${card.gitRepo || '-'} |`);
|
|
202
|
+
}
|
|
203
|
+
return lines.join('\n');
|
|
204
|
+
}
|
|
205
|
+
/** 生成 .speccore/GLOBAL/PROJECTS.md(全量名片落盘,不占对话 token,AI 按需 Read) */
|
|
206
|
+
async function writeGlobalProjectsDoc(cwd, platforms) {
|
|
207
|
+
if (!platforms || platforms.length === 0)
|
|
208
|
+
return null;
|
|
209
|
+
const { ensureDir, writeFile } = await Promise.resolve().then(() => __importStar(require('fs-extra')));
|
|
210
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
211
|
+
const globalDir = path.join(cwd, '.speccore', 'GLOBAL');
|
|
212
|
+
await ensureDir(globalDir);
|
|
213
|
+
const lines = ['# 项目名片(PROJECTS)', '',
|
|
214
|
+
'> 本文件为各端工程的名片汇总,数据源 `.speccore/PROJECT.yaml` 的 `platforms` 段(机器事实源)。',
|
|
215
|
+
'> AI 按需 Read:用户提到某个端时,从这里取源码路径/Git 配置,无需用户重复说明。', '',
|
|
216
|
+
'| 端名 | 业务名 | 类型 | 源码路径 | Git 仓库 | 默认分支 |', '| :--- | :--- | :--- | :--- | :--- | :--- |'];
|
|
217
|
+
for (const p of platforms) {
|
|
218
|
+
const card = toCard(p);
|
|
219
|
+
lines.push(`| \`${card.name}\` | ${card.businessName || '-'} | ${card.type} | \`${card.codePath || '-'}\` | ${card.gitRepo || '-'} | ${card.defaultBranch || '-'} |`);
|
|
220
|
+
}
|
|
221
|
+
const docPath = path.join(globalDir, 'PROJECTS.md');
|
|
222
|
+
await writeFile(docPath, lines.join('\n') + '\n', 'utf-8');
|
|
223
|
+
return docPath;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=project-cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-cards.js","sourceRoot":"","sources":["../../src/core/project-cards.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
.match-result{padding:10px 0}.match-summary{font-weight:600;font-size:14px;margin-bottom:12px}.match-detail{color:var(--muted);font-size:12px;line-height:1.6}
|
|
8
8
|
/* Pipeline */
|
|
9
9
|
.pipeline-title{font-weight:600;margin-bottom:16px}.pipeline-steps{display:flex;flex-direction:column;gap:10px}.pipe-step{display:flex;gap:14px;padding:12px 14px;background:rgba(99,102,241,.04);border-left:2px solid var(--purple);border-radius:0 8px 8px 0}.pipe-step .pipe-num{font-family:Orbitron;font-size:20px;font-weight:900;color:var(--purple);min-width:36px}.pipe-step .pipe-cmd{font-weight:600;color:var(--green)}.pipe-step .pipe-args{color:var(--muted);font-size:11px}.pipe-step .pipe-desc{color:var(--muted);font-size:10px;margin-top:4px}.pipe-step .pipe-dep{font-size:9px;color:var(--orange);margin-top:4px}.confirm-bar{text-align:center;padding:14px;margin-top:16px;background:rgba(99,102,241,.08);border:1px dashed rgba(99,102,241,.2);border-radius:8px;color:var(--purple);font-size:12px}
|
|
10
|
-
.footer{text-align:center;color:var(--muted);font-size:10px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}h1{text-shadow:0 0 20px rgba(14,165,233,.35),0 0 60px rgba(14,165,233,.12)!important}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 25% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes titleGlow{0%,100%{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15)}50%{text-shadow:0 0 30px rgba(14,165,233,.7),0 0 80px rgba(14,165,233,.3)}}h1,h2{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15);animation:titleGlow 3s ease-in-out infinite}</style></head><body><div class="scanlines"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><h1>SPECCORE ASK</h1><div class="query">"我想做一个登录功能"</div><div class="badge">🗺️ 任务指引</div><div class="guide-title">已为你规划「新功能开发全流程」(9 步)</div><div class="guide-steps"><div class="guide-step"><div class="step-num">1</div><div class="step-body"><div class="step-cmd">speccore init</div><div class="step-desc">初始化项目(如果还没有)</div></div></div><div class="guide-step"><div class="step-num">2</div><div class="step-body"><div class="step-cmd">speccore doc2spec -f PRD.docx --iter {iteration}</div><div class="step-desc">导入 PRD 文档,AI 分析生成需求规格</div></div></div><div class="guide-step"><div class="step-num">3</div><div class="step-body"><div class="step-cmd">speccore analyze --iteration {iteration} --audit</div><div class="step-desc">AI 分析需求,生成审计报告</div></div></div><div class="guide-step"><div class="step-num">4</div><div class="step-body"><div class="step-cmd">speccore iteration taskify -f REQUIREMENT.md</div><div class="step-desc">将需求拆分为独立开发任务</div></div></div><div class="guide-step"><div class="step-num">5</div><div class="step-body"><div class="step-cmd">speccore plan --all</div><div class="step-desc">生成任务执行计划,确定优先级和依赖</div></div></div><div class="guide-step"><div class="step-num">6</div><div class="step-body"><div class="step-cmd">speccore execute --auto</div><div class="step-desc">按计划依次执行开发任务</div></div></div><div class="guide-step"><div class="step-num">7</div><div class="step-body"><div class="step-cmd">speccore verify --ui</div><div class="step-desc">本地冒烟测试(自动登录 + 页面冒烟,默认 module 范围)</div></div></div><div class="guide-step"><div class="step-num">8</div><div class="step-body"><div class="step-cmd">speccore pr --auto</div><div class="step-desc">代码提交后创建 Pull Request</div></div></div><div class="guide-step"><div class="step-num">9</div><div class="step-body"><div class="step-cmd">speccore done --all</div><div class="step-desc">全部完成后归档收尾</div></div></div></div><div style="text-align:center;margin-top:16px"><a href="speccore-ask-onboarding.html" style="color:var(--cyan);font-size:11px;text-decoration:none">← 返回 ask 引导页</a></div><div class="footer">由 SpecCore 驱动 · v8.3.
|
|
10
|
+
.footer{text-align:center;color:var(--muted);font-size:10px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}h1{text-shadow:0 0 20px rgba(14,165,233,.35),0 0 60px rgba(14,165,233,.12)!important}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 25% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes titleGlow{0%,100%{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15)}50%{text-shadow:0 0 30px rgba(14,165,233,.7),0 0 80px rgba(14,165,233,.3)}}h1,h2{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15);animation:titleGlow 3s ease-in-out infinite}</style></head><body><div class="scanlines"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><h1>SPECCORE ASK</h1><div class="query">"我想做一个登录功能"</div><div class="badge">🗺️ 任务指引</div><div class="guide-title">已为你规划「新功能开发全流程」(9 步)</div><div class="guide-steps"><div class="guide-step"><div class="step-num">1</div><div class="step-body"><div class="step-cmd">speccore init</div><div class="step-desc">初始化项目(如果还没有)</div></div></div><div class="guide-step"><div class="step-num">2</div><div class="step-body"><div class="step-cmd">speccore doc2spec -f PRD.docx --iter {iteration}</div><div class="step-desc">导入 PRD 文档,AI 分析生成需求规格</div></div></div><div class="guide-step"><div class="step-num">3</div><div class="step-body"><div class="step-cmd">speccore analyze --iteration {iteration} --audit</div><div class="step-desc">AI 分析需求,生成审计报告</div></div></div><div class="guide-step"><div class="step-num">4</div><div class="step-body"><div class="step-cmd">speccore iteration taskify -f REQUIREMENT.md</div><div class="step-desc">将需求拆分为独立开发任务</div></div></div><div class="guide-step"><div class="step-num">5</div><div class="step-body"><div class="step-cmd">speccore plan --all</div><div class="step-desc">生成任务执行计划,确定优先级和依赖</div></div></div><div class="guide-step"><div class="step-num">6</div><div class="step-body"><div class="step-cmd">speccore execute --auto</div><div class="step-desc">按计划依次执行开发任务</div></div></div><div class="guide-step"><div class="step-num">7</div><div class="step-body"><div class="step-cmd">speccore verify --ui</div><div class="step-desc">本地冒烟测试(自动登录 + 页面冒烟,默认 module 范围)</div></div></div><div class="guide-step"><div class="step-num">8</div><div class="step-body"><div class="step-cmd">speccore pr --auto</div><div class="step-desc">代码提交后创建 Pull Request</div></div></div><div class="guide-step"><div class="step-num">9</div><div class="step-body"><div class="step-cmd">speccore done --all</div><div class="step-desc">全部完成后归档收尾</div></div></div></div><div style="text-align:center;margin-top:16px"><a href="speccore-ask-onboarding.html" style="color:var(--cyan);font-size:11px;text-decoration:none">← 返回 ask 引导页</a></div><div class="footer">由 SpecCore 驱动 · v8.3.347 · 2026-08-31</div></div></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="zh-CN" data-theme="ocean"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>SpecCore · ask --pipeline</title><style>@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;600;700&display=swap');[data-theme="ocean"]{--cyan:#0ea5e9;--bg:#0b1929;--card:rgba(13,31,56,.95);--border:rgba(14,165,233,.15);--text:#bae6fd;--muted:#5b7fa5;--green:#14b8a6;--orange:#f97316;--purple:#6366f1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'JetBrains Mono',monospace;background:var(--bg);color:var(--text);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:99;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.01) 2px,rgba(0,240,255,.01) 4px)}.card{max-width:900px;width:100%;margin:0 auto;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:32px;position:relative;overflow:hidden;z-index:1}.card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX 3s linear infinite}.card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX-rev 3s linear infinite}@keyframes scanX{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes scanX-rev{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes scanY{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes scanY-rev{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}.vline{position:absolute;top:0;width:1px;bottom:0;pointer-events:none}.vline.l{left:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY-rev 3s linear infinite}.vline.r{right:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY 3s linear infinite}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 25% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.page-title{font-family:'Orbitron',sans-serif;font-size:22px;font-weight:700;text-align:center;color:var(--cyan);margin-bottom:32px;letter-spacing:1px;text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15);animation:titleGlow 3s ease-in-out infinite}@keyframes titleGlow{0%,100%{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15)}50%{text-shadow:0 0 30px rgba(14,165,233,.7),0 0 80px rgba(14,165,233,.3)}}.page-title span{color:var(--text);font-weight:500}.flow-chart{display:flex;align-items:stretch;gap:0;margin-bottom:28px}.flow-node{flex:1;background:rgba(13,31,56,.7);border:1px solid;border-radius:10px;padding:14px 8px;text-align:center;position:relative}.flow-node .icon{font-size:18px;margin-bottom:6px}.flow-node .name{font-size:12px;font-weight:600;margin-bottom:4px}.flow-node .desc{font-size:10px;color:var(--muted)}.flow-node.n1{border-color:rgba(14,165,233,.4);color:var(--cyan)}.flow-node.n2{border-color:rgba(99,102,241,.4);color:var(--purple)}.flow-node.n3{border-color:rgba(14,165,233,.4);color:var(--cyan)}.flow-node.n4{border-color:rgba(20,184,166,.4);color:var(--green)}.flow-connector{width:24px;display:flex;align-items:center;justify-content:center}.flow-connector::after{content:'';width:100%;height:1px;background:linear-gradient(90deg,var(--border),var(--cyan),var(--border))}.example-box{border:1px dashed rgba(14,165,233,.3);border-radius:12px;padding:16px 20px;margin-bottom:24px;background:rgba(14,165,233,.03)}.example-label{font-size:13px;font-weight:600;color:var(--cyan);margin-bottom:8px}.example-query{font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--text)}.example-query code{color:var(--green);font-weight:600}.steps{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.step{background:rgba(13,31,56,.8);border:1px solid rgba(14,165,233,.12);border-radius:10px;padding:14px 18px}.step-num{font-family:'Orbitron',sans-serif;font-size:14px;font-weight:700;color:var(--green);margin-bottom:6px}.step-cmd{font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--text);margin-bottom:6px}.step-cmd .cmd-name{color:var(--green)}.step-cmd .cmd-args{color:var(--muted)}.step-parse{font-size:12px;color:var(--muted);line-height:1.5}.step-parse::before{content:'→ 解析:';color:var(--cyan)}.confirm-btn{display:block;width:100%;max-width:420px;margin:0 auto 16px;text-align:center;padding:16px;background:linear-gradient(135deg,var(--cyan),#0284c7);border:none;border-radius:40px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;box-shadow:0 0 30px rgba(14,165,233,.3)}.legend{display:flex;justify-content:center;gap:20px;font-size:11px;color:var(--muted);margin-bottom:16px;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:4px}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.legend-dot.required{background:var(--cyan)}.legend-dot.generated{background:var(--green)}.legend-dot.pending{background:rgba(255,255,255,.3)}.back-link{text-align:center;margin-top:12px}.back-link a{color:var(--cyan);font-size:11px;text-decoration:none}.footer{text-align:center;color:var(--muted);font-size:10px;margin-top:20px}</style></head><body><div class="scanlines"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><div class="page-title">ask --pipeline <span>多步骤编排引擎</span></div><div class="flow-chart"><div class="flow-node n1"><div class="icon">🧠</div><div class="name">AI 意图分解</div><div class="desc">LLM 分解多步骤</div></div><div class="flow-connector"></div><div class="flow-node n2"><div class="icon">📐</div><div class="name">命令匹配</div><div class="desc">意图→命令图</div></div><div class="flow-connector"></div><div class="flow-node n3"><div class="icon">🔗</div><div class="name">依赖解析</div><div class="desc">顺序/并行/参数</div></div><div class="flow-connector"></div><div class="flow-node n4"><div class="icon">✅</div><div class="name">预览</div><div class="desc">展示给用户</div></div></div><div class="example-box"><div class="example-label">📋 示例:<span class="example-query"><code>/spec-ask "本期迭代:从 PRD 导入到代码提交,跑完整开发流程"</code></span></div></div><div class="steps"><div class="step"><div class="step-num">1.</div><div class="step-cmd"><span class="cmd-name">speccore doc2spec</span> <span class="cmd-args">-f PRD.docx --iter {iteration}</span></div><div class="step-parse">导入 PRD 文档,AI 分析生成需求规格说明书</div></div><div class="step"><div class="step-num">2.</div><div class="step-cmd"><span class="cmd-name">speccore analyze</span> <span class="cmd-args">--iteration {iteration} --audit</span></div><div class="step-parse">AI 深度分析需求,生成审计报告和可行性评估</div></div><div class="step"><div class="step-num">3.</div><div class="step-cmd"><span class="cmd-name">speccore iteration taskify</span> <span class="cmd-args">-f REQUIREMENT.md</span></div><div class="step-parse">将需求拆分为独立开发任务,确定优先级和依赖关系</div></div><div class="step"><div class="step-num">4.</div><div class="step-cmd"><span class="cmd-name">speccore execute</span> <span class="cmd-args">--auto</span></div><div class="step-parse">按任务计划依次自动执行开发、测试和代码生成</div></div><div class="step"><div class="step-num">5.</div><div class="step-cmd"><span class="cmd-name">speccore verify</span> <span class="cmd-args">--ui</span></div><div class="step-parse">本地冒烟测试:自动登录 + 页面冒烟(默认 module 范围)</div></div><div class="step"><div class="step-num">6.</div><div class="step-cmd"><span class="cmd-name">speccore pr</span> <span class="cmd-args">--auto</span></div><div class="step-parse">代码提交后自动创建 Pull Request,完成交付</div></div></div><div class="confirm-btn">确认执行? (y/N) 或修改参数</div><div class="legend"><div class="legend-item"><span class="legend-dot required"></span> = 必选步骤</div><div class="legend-item"><span class="legend-dot generated"></span> = 已生成</div><div class="legend-item"><span class="legend-dot pending"></span> = 待执行</div><div class="legend-item">→ = 依赖传递</div></div><div class="back-link"><a href="speccore-ask-onboarding.html">← 返回 ask 引导页</a></div><div class="footer">由 SpecCore 驱动 · v8.3.
|
|
1
|
+
<!DOCTYPE html><html lang="zh-CN" data-theme="ocean"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>SpecCore · ask --pipeline</title><style>@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;600;700&display=swap');[data-theme="ocean"]{--cyan:#0ea5e9;--bg:#0b1929;--card:rgba(13,31,56,.95);--border:rgba(14,165,233,.15);--text:#bae6fd;--muted:#5b7fa5;--green:#14b8a6;--orange:#f97316;--purple:#6366f1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'JetBrains Mono',monospace;background:var(--bg);color:var(--text);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:99;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.01) 2px,rgba(0,240,255,.01) 4px)}.card{max-width:900px;width:100%;margin:0 auto;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:32px;position:relative;overflow:hidden;z-index:1}.card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX 3s linear infinite}.card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX-rev 3s linear infinite}@keyframes scanX{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes scanX-rev{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes scanY{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes scanY-rev{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}.vline{position:absolute;top:0;width:1px;bottom:0;pointer-events:none}.vline.l{left:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY-rev 3s linear infinite}.vline.r{right:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY 3s linear infinite}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 25% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.page-title{font-family:'Orbitron',sans-serif;font-size:22px;font-weight:700;text-align:center;color:var(--cyan);margin-bottom:32px;letter-spacing:1px;text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15);animation:titleGlow 3s ease-in-out infinite}@keyframes titleGlow{0%,100%{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15)}50%{text-shadow:0 0 30px rgba(14,165,233,.7),0 0 80px rgba(14,165,233,.3)}}.page-title span{color:var(--text);font-weight:500}.flow-chart{display:flex;align-items:stretch;gap:0;margin-bottom:28px}.flow-node{flex:1;background:rgba(13,31,56,.7);border:1px solid;border-radius:10px;padding:14px 8px;text-align:center;position:relative}.flow-node .icon{font-size:18px;margin-bottom:6px}.flow-node .name{font-size:12px;font-weight:600;margin-bottom:4px}.flow-node .desc{font-size:10px;color:var(--muted)}.flow-node.n1{border-color:rgba(14,165,233,.4);color:var(--cyan)}.flow-node.n2{border-color:rgba(99,102,241,.4);color:var(--purple)}.flow-node.n3{border-color:rgba(14,165,233,.4);color:var(--cyan)}.flow-node.n4{border-color:rgba(20,184,166,.4);color:var(--green)}.flow-connector{width:24px;display:flex;align-items:center;justify-content:center}.flow-connector::after{content:'';width:100%;height:1px;background:linear-gradient(90deg,var(--border),var(--cyan),var(--border))}.example-box{border:1px dashed rgba(14,165,233,.3);border-radius:12px;padding:16px 20px;margin-bottom:24px;background:rgba(14,165,233,.03)}.example-label{font-size:13px;font-weight:600;color:var(--cyan);margin-bottom:8px}.example-query{font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--text)}.example-query code{color:var(--green);font-weight:600}.steps{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.step{background:rgba(13,31,56,.8);border:1px solid rgba(14,165,233,.12);border-radius:10px;padding:14px 18px}.step-num{font-family:'Orbitron',sans-serif;font-size:14px;font-weight:700;color:var(--green);margin-bottom:6px}.step-cmd{font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--text);margin-bottom:6px}.step-cmd .cmd-name{color:var(--green)}.step-cmd .cmd-args{color:var(--muted)}.step-parse{font-size:12px;color:var(--muted);line-height:1.5}.step-parse::before{content:'→ 解析:';color:var(--cyan)}.confirm-btn{display:block;width:100%;max-width:420px;margin:0 auto 16px;text-align:center;padding:16px;background:linear-gradient(135deg,var(--cyan),#0284c7);border:none;border-radius:40px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;box-shadow:0 0 30px rgba(14,165,233,.3)}.legend{display:flex;justify-content:center;gap:20px;font-size:11px;color:var(--muted);margin-bottom:16px;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:4px}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.legend-dot.required{background:var(--cyan)}.legend-dot.generated{background:var(--green)}.legend-dot.pending{background:rgba(255,255,255,.3)}.back-link{text-align:center;margin-top:12px}.back-link a{color:var(--cyan);font-size:11px;text-decoration:none}.footer{text-align:center;color:var(--muted);font-size:10px;margin-top:20px}</style></head><body><div class="scanlines"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><div class="page-title">ask --pipeline <span>多步骤编排引擎</span></div><div class="flow-chart"><div class="flow-node n1"><div class="icon">🧠</div><div class="name">AI 意图分解</div><div class="desc">LLM 分解多步骤</div></div><div class="flow-connector"></div><div class="flow-node n2"><div class="icon">📐</div><div class="name">命令匹配</div><div class="desc">意图→命令图</div></div><div class="flow-connector"></div><div class="flow-node n3"><div class="icon">🔗</div><div class="name">依赖解析</div><div class="desc">顺序/并行/参数</div></div><div class="flow-connector"></div><div class="flow-node n4"><div class="icon">✅</div><div class="name">预览</div><div class="desc">展示给用户</div></div></div><div class="example-box"><div class="example-label">📋 示例:<span class="example-query"><code>/spec-ask "本期迭代:从 PRD 导入到代码提交,跑完整开发流程"</code></span></div></div><div class="steps"><div class="step"><div class="step-num">1.</div><div class="step-cmd"><span class="cmd-name">speccore doc2spec</span> <span class="cmd-args">-f PRD.docx --iter {iteration}</span></div><div class="step-parse">导入 PRD 文档,AI 分析生成需求规格说明书</div></div><div class="step"><div class="step-num">2.</div><div class="step-cmd"><span class="cmd-name">speccore analyze</span> <span class="cmd-args">--iteration {iteration} --audit</span></div><div class="step-parse">AI 深度分析需求,生成审计报告和可行性评估</div></div><div class="step"><div class="step-num">3.</div><div class="step-cmd"><span class="cmd-name">speccore iteration taskify</span> <span class="cmd-args">-f REQUIREMENT.md</span></div><div class="step-parse">将需求拆分为独立开发任务,确定优先级和依赖关系</div></div><div class="step"><div class="step-num">4.</div><div class="step-cmd"><span class="cmd-name">speccore execute</span> <span class="cmd-args">--auto</span></div><div class="step-parse">按任务计划依次自动执行开发、测试和代码生成</div></div><div class="step"><div class="step-num">5.</div><div class="step-cmd"><span class="cmd-name">speccore verify</span> <span class="cmd-args">--ui</span></div><div class="step-parse">本地冒烟测试:自动登录 + 页面冒烟(默认 module 范围)</div></div><div class="step"><div class="step-num">6.</div><div class="step-cmd"><span class="cmd-name">speccore pr</span> <span class="cmd-args">--auto</span></div><div class="step-parse">代码提交后自动创建 Pull Request,完成交付</div></div></div><div class="confirm-btn">确认执行? (y/N) 或修改参数</div><div class="legend"><div class="legend-item"><span class="legend-dot required"></span> = 必选步骤</div><div class="legend-item"><span class="legend-dot generated"></span> = 已生成</div><div class="legend-item"><span class="legend-dot pending"></span> = 待执行</div><div class="legend-item">→ = 依赖传递</div></div><div class="back-link"><a href="speccore-ask-onboarding.html">← 返回 ask 引导页</a></div><div class="footer">由 SpecCore 驱动 · v8.3.347 · 2026-08-31</div></div></body></html>
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
.match-result{padding:10px 0}.match-summary{font-weight:600;font-size:14px;margin-bottom:12px}.match-detail{color:var(--muted);font-size:12px;line-height:1.6}
|
|
8
8
|
/* Pipeline */
|
|
9
9
|
.pipeline-title{font-weight:600;margin-bottom:16px}.pipeline-steps{display:flex;flex-direction:column;gap:10px}.pipe-step{display:flex;gap:14px;padding:12px 14px;background:rgba(99,102,241,.04);border-left:2px solid var(--purple);border-radius:0 8px 8px 0}.pipe-step .pipe-num{font-family:Orbitron;font-size:20px;font-weight:900;color:var(--purple);min-width:36px}.pipe-step .pipe-cmd{font-weight:600;color:var(--green)}.pipe-step .pipe-args{color:var(--muted);font-size:11px}.pipe-step .pipe-desc{color:var(--muted);font-size:10px;margin-top:4px}.pipe-step .pipe-dep{font-size:9px;color:var(--orange);margin-top:4px}.confirm-bar{text-align:center;padding:14px;margin-top:16px;background:rgba(99,102,241,.08);border:1px dashed rgba(99,102,241,.2);border-radius:8px;color:var(--purple);font-size:12px}
|
|
10
|
-
.footer{text-align:center;color:var(--muted);font-size:10px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 25% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes titleGlow{0%,100%{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15)}50%{text-shadow:0 0 30px rgba(14,165,233,.7),0 0 80px rgba(14,165,233,.3)}}h1,h2{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15);animation:titleGlow 3s ease-in-out infinite}</style></head><body><div class="scanlines"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><h1>SPECCORE ASK</h1><div class="query">"dashboard"</div><div class="badge">🎯 意图匹配</div><div class="match-result"><div class="match-summary">✅ 推荐: dashboard</div><div class="match-detail">🎯 推荐命令: <code>speccore dashboard<br>项目仪表盘:期次状态/进度/健康度,--scope</code> global 全量视图<br><br>用法: <code>speccore dashboard</code> [--scope global|iteration] [--export html] [--health] [--lifecycle]<br><br>示例:<br> $ <code>speccore dashboard<br></code> $ <code>speccore dashboard</code> --scope global --export html</div></div><div class="footer">由 SpecCore 驱动 v8.3.
|
|
10
|
+
.footer{text-align:center;color:var(--muted);font-size:10px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 25% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes titleGlow{0%,100%{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15)}50%{text-shadow:0 0 30px rgba(14,165,233,.7),0 0 80px rgba(14,165,233,.3)}}h1,h2{text-shadow:0 0 20px rgba(14,165,233,.4),0 0 60px rgba(14,165,233,.15);animation:titleGlow 3s ease-in-out infinite}</style></head><body><div class="scanlines"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><h1>SPECCORE ASK</h1><div class="query">"dashboard"</div><div class="badge">🎯 意图匹配</div><div class="match-result"><div class="match-summary">✅ 推荐: dashboard</div><div class="match-detail">🎯 推荐命令: <code>speccore dashboard<br>项目仪表盘:期次状态/进度/健康度,--scope</code> global 全量视图<br><br>用法: <code>speccore dashboard</code> [--scope global|iteration] [--export html] [--health] [--lifecycle]<br><br>示例:<br> $ <code>speccore dashboard<br></code> $ <code>speccore dashboard</code> --scope global --export html</div></div><div class="footer">由 SpecCore 驱动 v8.3.347 · 2026-08-31</div></div></body></html>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="zh-CN" data-theme="ocean"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>SpecCore Help</title><style>@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;600;700&display=swap');[data-theme="ocean"]{--cyan:#0ea5e9;--bg:#0b1929;--card:rgba(13,31,56,.95);--border:rgba(14,165,233,.15);--text:#bae6fd;--muted:#5b7fa5;--green:#14b8a6;--orange:#f97316;--purple:#6366f1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'JetBrains Mono',monospace;background:var(--bg);color:var(--text);min-height:100vh;padding:40px 20px}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:99;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.01) 2px,rgba(0,240,255,.01) 4px)}.card{max-width:960px;margin:0 auto;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:36px;position:relative;overflow:hidden}.card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX 3s linear infinite}.card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX-rev 3s linear infinite}@keyframes scanX{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes scanX-rev{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes scanY{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes scanY-rev{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}.vline{position:absolute;top:0;width:1px;bottom:0;pointer-events:none}.vline.l{left:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY-rev 3s linear infinite}.vline.r{right:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY 3s linear infinite}h1{font-family:'Orbitron',sans-serif;font-size:24px;font-weight:900;background:linear-gradient(135deg,var(--cyan),var(--purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:2px;margin-bottom:4px;animation:titleGlow 3s ease-in-out infinite}.sub{color:var(--muted);font-size:11px;margin-bottom:24px}.intro-card{padding:20px;margin-bottom:20px;background:linear-gradient(135deg,rgba(14,165,233,.08),rgba(99,102,241,.08));border:1px solid rgba(14,165,233,.2);border-radius:12px}.intro-title{font-size:16px;font-weight:700;color:var(--cyan);margin-bottom:12px}.intro-text{font-size:13px;line-height:1.6;color:var(--text);margin-bottom:16px}.highlight-box{display:flex;gap:16px;padding:16px;background:rgba(20,184,166,.08);border:1px solid rgba(20,184,166,.2);border-radius:10px}.highlight-icon{font-size:32px}.highlight-content{flex:1}.highlight-title{font-size:12px;font-weight:700;color:var(--green);margin-bottom:8px;text-transform:uppercase;letter-spacing:1px}.highlight-list{list-style:none;padding:0;margin:0}.highlight-list li{font-size:12px;color:var(--text);padding:4px 0;line-height:1.5}.highlight-list strong{color:var(--cyan)}.quick-start{padding:20px;margin:20px 0;background:rgba(249,115,22,.05);border:1px solid rgba(249,115,22,.15);border-radius:12px}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px}.header-icon{font-size:20px}.header-title{font-size:14px;font-weight:700;color:var(--orange);text-transform:uppercase;letter-spacing:1px}.step-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}.step-item{display:flex;gap:12px;padding:12px 16px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:10px;min-width:180px}.step-num{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--orange),#ea580c);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff;flex-shrink:0}.step-text{font-size:12px;line-height:1.5}.step-text code{display:inline-block;margin-top:4px;padding:2px 8px;background:rgba(249,115,22,.1);border-radius:4px;color:var(--orange);font-size:11px}.step-arrow{color:var(--muted);font-size:20px;font-weight:700}.cat{margin:16px 0;padding:16px;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.04);border-radius:12px;transition:all .3s}.cat:hover{border-color:rgba(14,165,233,.3);background:rgba(14,165,233,.03)}.cat-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.cat-icon{font-size:24px}.cat-info{flex:1}.cat-title{font-size:13px;font-weight:700;color:var(--cyan);margin-bottom:2px}.cat-desc{font-size:11px;color:var(--muted)}.cat-cmds{display:flex;flex-wrap:wrap;gap:8px}.cmd-pill{padding:4px 12px;border-radius:6px;font-size:11px;background:rgba(14,165,233,.08);color:var(--cyan);border:1px solid rgba(14,165,233,.15);transition:all .2s;cursor:pointer}.core-commands{padding:16px;border:1px solid var(--border);border-radius:12px;background:rgba(14,165,233,.04)}.core-commands .cmd-pill{font-size:12px;padding:6px 14px;background:rgba(20,184,166,.12);color:var(--green);border-color:rgba(20,184,166,.3)}.core-hint{margin-top:12px;font-size:12px;color:var(--muted)}.cmd-pill:hover{background:rgba(14,165,233,.15);border-color:rgba(14,165,233,.3);transform:translateY(-1px)}.cmd-detail{padding:8px 0}.cmd-desc{font-size:14px;margin-bottom:16px;color:var(--text);line-height:1.6}.param-list{margin:16px 0}.param{display:flex;gap:16px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.03)}.param-flag{color:var(--green);font-size:12px;min-width:180px;font-weight:600}.param-meaning{color:var(--muted);font-size:12px;line-height:1.5}.example-list{margin:16px 0}.section-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.tips-section{padding:20px;margin:20px 0;background:rgba(99,102,241,.05);border:1px solid rgba(99,102,241,.15);border-radius:12px}.tip-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:16px}.tip-card{padding:14px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:10px;display:flex;gap:12px;transition:all .3s}.tip-card:hover{border-color:rgba(99,102,241,.3);background:rgba(99,102,241,.05);transform:translateY(-2px)}.tip-icon{font-size:24px;flex-shrink:0}.tip-content{flex:1}.tip-title{font-size:12px;font-weight:700;color:var(--purple);margin-bottom:4px}.tip-text{font-size:11px;color:var(--muted);line-height:1.5}.tip-text code{display:inline-block;margin-top:4px;padding:2px 6px;background:rgba(99,102,241,.1);border-radius:4px;color:var(--purple);font-size:10px}code{display:block;background:rgba(14,165,233,.08);padding:6px 12px;border-radius:6px;color:var(--cyan);font-size:12px;margin:6px 0;transition:all .2s}code:hover{background:rgba(14,165,233,.12)}.params-section{padding:20px;margin:20px 0;background:rgba(14,165,233,.05);border:1px solid rgba(14,165,233,.15);border-radius:12px}.param-table{margin-top:16px}.param-row{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.03);align-items:center}.header-row{border-bottom:2px solid rgba(14,165,233,.3);font-weight:700}.param-col{flex:1;font-size:12px;line-height:1.5}.param-col.flag{min-width:120px;color:var(--green);font-weight:600}.param-col.meaning{flex:2;color:var(--text)}.param-col.example{flex:1.5;color:var(--muted)}.param-col code{display:inline-block;padding:2px 8px;background:rgba(14,165,233,.08);border-radius:4px;font-size:11px;margin:0}.footer{text-align:center;color:var(--muted);font-size:10px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 30% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}@keyframes titleGlow{0%,100%{filter:drop-shadow(0 0 20px rgba(14,165,233,.4)) drop-shadow(0 0 60px rgba(14,165,233,.15))}50%{filter:drop-shadow(0 0 30px rgba(14,165,233,.7)) drop-shadow(0 0 80px rgba(14,165,233,.3))}</style></head><body><div class="scanlines"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><h1>SPECCORE HELP</h1><div class="sub">SpecCore 命令参考 · v8.3.
|
|
1
|
+
<!DOCTYPE html><html lang="zh-CN" data-theme="ocean"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>SpecCore Help</title><style>@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;600;700&display=swap');[data-theme="ocean"]{--cyan:#0ea5e9;--bg:#0b1929;--card:rgba(13,31,56,.95);--border:rgba(14,165,233,.15);--text:#bae6fd;--muted:#5b7fa5;--green:#14b8a6;--orange:#f97316;--purple:#6366f1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'JetBrains Mono',monospace;background:var(--bg);color:var(--text);min-height:100vh;padding:40px 20px}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:99;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.01) 2px,rgba(0,240,255,.01) 4px)}.card{max-width:960px;margin:0 auto;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:36px;position:relative;overflow:hidden}.card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX 3s linear infinite}.card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX-rev 3s linear infinite}@keyframes scanX{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes scanX-rev{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes scanY{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes scanY-rev{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}.vline{position:absolute;top:0;width:1px;bottom:0;pointer-events:none}.vline.l{left:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY-rev 3s linear infinite}.vline.r{right:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY 3s linear infinite}h1{font-family:'Orbitron',sans-serif;font-size:24px;font-weight:900;background:linear-gradient(135deg,var(--cyan),var(--purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:2px;margin-bottom:4px;animation:titleGlow 3s ease-in-out infinite}.sub{color:var(--muted);font-size:11px;margin-bottom:24px}.intro-card{padding:20px;margin-bottom:20px;background:linear-gradient(135deg,rgba(14,165,233,.08),rgba(99,102,241,.08));border:1px solid rgba(14,165,233,.2);border-radius:12px}.intro-title{font-size:16px;font-weight:700;color:var(--cyan);margin-bottom:12px}.intro-text{font-size:13px;line-height:1.6;color:var(--text);margin-bottom:16px}.highlight-box{display:flex;gap:16px;padding:16px;background:rgba(20,184,166,.08);border:1px solid rgba(20,184,166,.2);border-radius:10px}.highlight-icon{font-size:32px}.highlight-content{flex:1}.highlight-title{font-size:12px;font-weight:700;color:var(--green);margin-bottom:8px;text-transform:uppercase;letter-spacing:1px}.highlight-list{list-style:none;padding:0;margin:0}.highlight-list li{font-size:12px;color:var(--text);padding:4px 0;line-height:1.5}.highlight-list strong{color:var(--cyan)}.quick-start{padding:20px;margin:20px 0;background:rgba(249,115,22,.05);border:1px solid rgba(249,115,22,.15);border-radius:12px}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px}.header-icon{font-size:20px}.header-title{font-size:14px;font-weight:700;color:var(--orange);text-transform:uppercase;letter-spacing:1px}.step-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}.step-item{display:flex;gap:12px;padding:12px 16px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:10px;min-width:180px}.step-num{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--orange),#ea580c);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff;flex-shrink:0}.step-text{font-size:12px;line-height:1.5}.step-text code{display:inline-block;margin-top:4px;padding:2px 8px;background:rgba(249,115,22,.1);border-radius:4px;color:var(--orange);font-size:11px}.step-arrow{color:var(--muted);font-size:20px;font-weight:700}.cat{margin:16px 0;padding:16px;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.04);border-radius:12px;transition:all .3s}.cat:hover{border-color:rgba(14,165,233,.3);background:rgba(14,165,233,.03)}.cat-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.cat-icon{font-size:24px}.cat-info{flex:1}.cat-title{font-size:13px;font-weight:700;color:var(--cyan);margin-bottom:2px}.cat-desc{font-size:11px;color:var(--muted)}.cat-cmds{display:flex;flex-wrap:wrap;gap:8px}.cmd-pill{padding:4px 12px;border-radius:6px;font-size:11px;background:rgba(14,165,233,.08);color:var(--cyan);border:1px solid rgba(14,165,233,.15);transition:all .2s;cursor:pointer}.core-commands{padding:16px;border:1px solid var(--border);border-radius:12px;background:rgba(14,165,233,.04)}.core-commands .cmd-pill{font-size:12px;padding:6px 14px;background:rgba(20,184,166,.12);color:var(--green);border-color:rgba(20,184,166,.3)}.core-hint{margin-top:12px;font-size:12px;color:var(--muted)}.cmd-pill:hover{background:rgba(14,165,233,.15);border-color:rgba(14,165,233,.3);transform:translateY(-1px)}.cmd-detail{padding:8px 0}.cmd-desc{font-size:14px;margin-bottom:16px;color:var(--text);line-height:1.6}.param-list{margin:16px 0}.param{display:flex;gap:16px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.03)}.param-flag{color:var(--green);font-size:12px;min-width:180px;font-weight:600}.param-meaning{color:var(--muted);font-size:12px;line-height:1.5}.example-list{margin:16px 0}.section-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.tips-section{padding:20px;margin:20px 0;background:rgba(99,102,241,.05);border:1px solid rgba(99,102,241,.15);border-radius:12px}.tip-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:16px}.tip-card{padding:14px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:10px;display:flex;gap:12px;transition:all .3s}.tip-card:hover{border-color:rgba(99,102,241,.3);background:rgba(99,102,241,.05);transform:translateY(-2px)}.tip-icon{font-size:24px;flex-shrink:0}.tip-content{flex:1}.tip-title{font-size:12px;font-weight:700;color:var(--purple);margin-bottom:4px}.tip-text{font-size:11px;color:var(--muted);line-height:1.5}.tip-text code{display:inline-block;margin-top:4px;padding:2px 6px;background:rgba(99,102,241,.1);border-radius:4px;color:var(--purple);font-size:10px}code{display:block;background:rgba(14,165,233,.08);padding:6px 12px;border-radius:6px;color:var(--cyan);font-size:12px;margin:6px 0;transition:all .2s}code:hover{background:rgba(14,165,233,.12)}.params-section{padding:20px;margin:20px 0;background:rgba(14,165,233,.05);border:1px solid rgba(14,165,233,.15);border-radius:12px}.param-table{margin-top:16px}.param-row{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.03);align-items:center}.header-row{border-bottom:2px solid rgba(14,165,233,.3);font-weight:700}.param-col{flex:1;font-size:12px;line-height:1.5}.param-col.flag{min-width:120px;color:var(--green);font-weight:600}.param-col.meaning{flex:2;color:var(--text)}.param-col.example{flex:1.5;color:var(--muted)}.param-col code{display:inline-block;padding:2px 8px;background:rgba(14,165,233,.08);border-radius:4px;font-size:11px;margin:0}.footer{text-align:center;color:var(--muted);font-size:10px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 30% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}@keyframes titleGlow{0%,100%{filter:drop-shadow(0 0 20px rgba(14,165,233,.4)) drop-shadow(0 0 60px rgba(14,165,233,.15))}50%{filter:drop-shadow(0 0 30px rgba(14,165,233,.7)) drop-shadow(0 0 80px rgba(14,165,233,.3))}</style></head><body><div class="scanlines"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><h1>SPECCORE HELP</h1><div class="sub">SpecCore 命令参考 · v8.3.347</div>
|
|
2
2
|
<div class="intro-card">
|
|
3
3
|
<div class="intro-title">🎯 SpecCore — SDD 开发方法论 CLI 工具</div>
|
|
4
4
|
<div class="intro-text">SpecCore 采用 <strong>Specification-Driven Development(规格驱动开发)</strong>方法论,通过标准化流程和 AI 辅助,实现从需求到交付的自动化流水线。</div>
|
|
@@ -47,106 +47,79 @@
|
|
|
47
47
|
<div class="core-commands">
|
|
48
48
|
<div class="section-header">
|
|
49
49
|
<span class="header-icon">⭐</span>
|
|
50
|
-
<span class="header-title"
|
|
50
|
+
<span class="header-title">核心命令(22 个)· 13 阶段流水线</span>
|
|
51
51
|
</div>
|
|
52
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore
|
|
53
|
-
<div class="core-hint">记不住命令?直接说人话:<code>speccore ask "我想..."</code></div>
|
|
52
|
+
<div class="cat-cmds"><span class="cmd-pill">speccore init</span><span class="cmd-pill">speccore doc2spec</span><span class="cmd-pill">speccore req-doc</span><span class="cmd-pill">speccore unitize</span><span class="cmd-pill">speccore analyze</span><span class="cmd-pill">speccore taskify</span><span class="cmd-pill">speccore plan</span><span class="cmd-pill">speccore execute</span><span class="cmd-pill">speccore verify</span><span class="cmd-pill">speccore pipeline</span><span class="cmd-pill">speccore pr</span><span class="cmd-pill">speccore done</span><span class="cmd-pill">speccore spec2doc</span><span class="cmd-pill">speccore iteration</span><span class="cmd-pill">speccore task</span><span class="cmd-pill">speccore ask</span><span class="cmd-pill">speccore run</span><span class="cmd-pill">speccore next</span><span class="cmd-pill">speccore dashboard</span><span class="cmd-pill">speccore status</span><span class="cmd-pill">speccore about</span><span class="cmd-pill">speccore help</span></div>
|
|
53
|
+
<div class="core-hint">记不住命令?直接说人话:<code>speccore ask "我想..."</code> · 低频/运维命令见 <code>speccore help --all</code></div>
|
|
54
54
|
</div>
|
|
55
55
|
|
|
56
56
|
<div class="section-header" style="margin-top:24px">
|
|
57
57
|
<span class="header-icon">📚</span>
|
|
58
|
-
<span class="header-title"
|
|
58
|
+
<span class="header-title">核心命令分类(完整清单见 help --all)</span>
|
|
59
59
|
</div>
|
|
60
60
|
<div class="cat">
|
|
61
61
|
<div class="cat-header">
|
|
62
|
-
<span class="cat-icon"
|
|
62
|
+
<span class="cat-icon">🏗️</span>
|
|
63
63
|
<div class="cat-info">
|
|
64
|
-
<div class="cat-title"
|
|
65
|
-
<div class="cat-desc"
|
|
64
|
+
<div class="cat-title">初始化与导入</div>
|
|
65
|
+
<div class="cat-desc">搭建项目、导入 PRD、口语化需求文档化</div>
|
|
66
66
|
</div>
|
|
67
67
|
</div>
|
|
68
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore
|
|
68
|
+
<div class="cat-cmds"><span class="cmd-pill">speccore init</span><span class="cmd-pill">speccore doc2spec</span><span class="cmd-pill">speccore req-doc</span></div>
|
|
69
69
|
</div><div class="cat">
|
|
70
70
|
<div class="cat-header">
|
|
71
|
-
<span class="cat-icon"
|
|
71
|
+
<span class="cat-icon">📋</span>
|
|
72
72
|
<div class="cat-info">
|
|
73
|
-
<div class="cat-title"
|
|
74
|
-
<div class="cat-desc"
|
|
73
|
+
<div class="cat-title">迭代与任务</div>
|
|
74
|
+
<div class="cat-desc">创建迭代、管理任务</div>
|
|
75
75
|
</div>
|
|
76
76
|
</div>
|
|
77
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore
|
|
77
|
+
<div class="cat-cmds"><span class="cmd-pill">speccore iteration</span><span class="cmd-pill">speccore task</span></div>
|
|
78
78
|
</div><div class="cat">
|
|
79
79
|
<div class="cat-header">
|
|
80
|
-
<span class="cat-icon"
|
|
80
|
+
<span class="cat-icon">🔍</span>
|
|
81
81
|
<div class="cat-info">
|
|
82
|
-
<div class="cat-title"
|
|
83
|
-
<div class="cat-desc"
|
|
82
|
+
<div class="cat-title">分析与计划</div>
|
|
83
|
+
<div class="cat-desc">AI 需求分析、任务拆分、生成执行计划</div>
|
|
84
84
|
</div>
|
|
85
85
|
</div>
|
|
86
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore
|
|
86
|
+
<div class="cat-cmds"><span class="cmd-pill">speccore analyze</span><span class="cmd-pill">speccore taskify</span><span class="cmd-pill">speccore plan</span></div>
|
|
87
87
|
</div><div class="cat">
|
|
88
88
|
<div class="cat-header">
|
|
89
|
-
<span class="cat-icon"
|
|
89
|
+
<span class="cat-icon">🔪</span>
|
|
90
90
|
<div class="cat-info">
|
|
91
|
-
<div class="cat-title"
|
|
92
|
-
<div class="cat-desc"
|
|
91
|
+
<div class="cat-title">切分与导出</div>
|
|
92
|
+
<div class="cat-desc">需求切分功能单元、Spec 导出 Word/PDF</div>
|
|
93
93
|
</div>
|
|
94
94
|
</div>
|
|
95
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore
|
|
95
|
+
<div class="cat-cmds"><span class="cmd-pill">speccore unitize</span><span class="cmd-pill">speccore spec2doc</span></div>
|
|
96
96
|
</div><div class="cat">
|
|
97
97
|
<div class="cat-header">
|
|
98
|
-
<span class="cat-icon"
|
|
98
|
+
<span class="cat-icon">⚡</span>
|
|
99
99
|
<div class="cat-info">
|
|
100
|
-
<div class="cat-title"
|
|
101
|
-
<div class="cat-desc"
|
|
100
|
+
<div class="cat-title">执行与交付</div>
|
|
101
|
+
<div class="cat-desc">自动执行、质量门禁、环境驱动部署、PR 与收尾</div>
|
|
102
102
|
</div>
|
|
103
103
|
</div>
|
|
104
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore
|
|
104
|
+
<div class="cat-cmds"><span class="cmd-pill">speccore execute</span><span class="cmd-pill">speccore verify</span><span class="cmd-pill">speccore pipeline</span><span class="cmd-pill">speccore pr</span><span class="cmd-pill">speccore done</span></div>
|
|
105
105
|
</div><div class="cat">
|
|
106
106
|
<div class="cat-header">
|
|
107
|
-
<span class="cat-icon"
|
|
107
|
+
<span class="cat-icon">💡</span>
|
|
108
108
|
<div class="cat-info">
|
|
109
|
-
<div class="cat-title"
|
|
110
|
-
<div class="cat-desc"
|
|
109
|
+
<div class="cat-title">智能入口</div>
|
|
110
|
+
<div class="cat-desc">自然语言交互、端到端流水线、仪表盘与状态</div>
|
|
111
111
|
</div>
|
|
112
112
|
</div>
|
|
113
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore
|
|
114
|
-
</div><div class="cat">
|
|
115
|
-
<div class="cat-header">
|
|
116
|
-
<span class="cat-icon">🔄</span>
|
|
117
|
-
<div class="cat-info">
|
|
118
|
-
<div class="cat-title">🔄 同步与变更管理</div>
|
|
119
|
-
<div class="cat-desc">需求变更追踪、任务回顾、操作历史查询</div>
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore change</span><span class="cmd-pill">speccore sync</span><span class="cmd-pill">speccore retro</span><span class="cmd-pill">speccore history</span></div>
|
|
123
|
-
</div><div class="cat">
|
|
124
|
-
<div class="cat-header">
|
|
125
|
-
<span class="cat-icon">📈</span>
|
|
126
|
-
<div class="cat-info">
|
|
127
|
-
<div class="cat-title">📊 查看与验证</div>
|
|
128
|
-
<div class="cat-desc">进度看板、知识图谱可视化、代码验证、源码索引</div>
|
|
129
|
-
</div>
|
|
130
|
-
</div>
|
|
131
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore dashboard</span><span class="cmd-pill">speccore validate</span><span class="cmd-pill">speccore track</span><span class="cmd-pill">speccore search</span><span class="cmd-pill">speccore knowledge</span><span class="cmd-pill">speccore code-index</span><span class="cmd-pill">speccore refresh</span><span class="cmd-pill">speccore reindex</span></div>
|
|
132
|
-
</div><div class="cat">
|
|
133
|
-
<div class="cat-header">
|
|
134
|
-
<span class="cat-icon">🛠️</span>
|
|
135
|
-
<div class="cat-info">
|
|
136
|
-
<div class="cat-title">🛠️ 智能开发助手</div>
|
|
137
|
-
<div class="cat-desc">无参智能续跑 + 语法糖(run develop / run smoke / run split to execute)+ 下一步指引</div>
|
|
138
|
-
</div>
|
|
139
|
-
</div>
|
|
140
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore run</span><span class="cmd-pill">speccore next</span></div>
|
|
141
|
-
</div><div class="cat">
|
|
113
|
+
<div class="cat-cmds"><span class="cmd-pill">speccore ask</span><span class="cmd-pill">speccore run</span><span class="cmd-pill">speccore next</span><span class="cmd-pill">speccore dashboard</span><span class="cmd-pill">speccore status</span><span class="cmd-pill">speccore about</span><span class="cmd-pill">speccore help</span></div>
|
|
114
|
+
</div><div class="cat" style="border-color:rgba(249,115,22,.25)">
|
|
142
115
|
<div class="cat-header">
|
|
143
116
|
<span class="cat-icon">🔧</span>
|
|
144
117
|
<div class="cat-info">
|
|
145
|
-
<div class="cat-title"
|
|
146
|
-
<div class="cat-desc"
|
|
118
|
+
<div class="cat-title">更多命令(低频/运维/内部编排)</div>
|
|
119
|
+
<div class="cat-desc">validate / change / sync 等 29 个命令功能保留,不占面板,完整清单终端运行</div>
|
|
147
120
|
</div>
|
|
148
121
|
</div>
|
|
149
|
-
<div class="cat-cmds"><span class="cmd-pill">speccore
|
|
122
|
+
<div class="cat-cmds"><span class="cmd-pill">speccore help --all</span></div>
|
|
150
123
|
</div>
|
|
151
124
|
<div class="params-section">
|
|
152
125
|
<div class="section-header">
|
|
@@ -238,4 +211,4 @@
|
|
|
238
211
|
</div>
|
|
239
212
|
</div>
|
|
240
213
|
</div>
|
|
241
|
-
<div class="footer">由 SpecCore 驱动 v8.3.
|
|
214
|
+
<div class="footer">由 SpecCore 驱动 v8.3.347 · 2026-10-26</div></div></body></html>
|
|
@@ -228,7 +228,7 @@ Iteration-xxx/<br>
|
|
|
228
228
|
<div class="method-cmd" style="font-size:9px">/spec-ask "全自动推进 my-iter"</div>
|
|
229
229
|
</div>
|
|
230
230
|
</div>
|
|
231
|
-
<div class="step-desc" style="margin-top:8px;font-size:10px">💡 <code>speccore run</code> 是流水线入口:无参即智能续跑(检测断点从第一个未完成阶段继续),也可按预设流水线或起止点自动执行。快捷语法糖(v8.3.290+):<code>speccore run develop</code>(preset 直呼)、<code>speccore run smoke</code>(单阶段快捷)、<code>speccore run split to execute</code>(阶段范围)——高频操作不必依赖 ask 引擎。</div>
|
|
231
|
+
<div class="step-desc" style="margin-top:8px;font-size:10px">💡 <code>speccore run</code> 是流水线入口:无参即智能续跑(检测断点从第一个未完成阶段继续),也可按预设流水线或起止点自动执行。快捷语法糖(v8.3.290+):<code>speccore run develop</code>(preset 直呼)、<code>speccore run smoke</code>(单阶段快捷)、<code>speccore run split-units to execute</code>(阶段范围)——高频操作不必依赖 ask 引擎。</div>
|
|
232
232
|
</div>
|
|
233
233
|
|
|
234
234
|
<div style="margin:16px 0 8px;font-size:13px;font-weight:700;color:var(--cyan)">📚 提示词库(快速上手)</div>
|