@deepstorm/cli 0.2.1 → 0.2.2
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/dist/build-registry.js +3 -3
- package/dist/cli.js +17 -14
- package/dist/registry.json +94 -1
- package/package.json +1 -1
package/dist/build-registry.js
CHANGED
|
@@ -125,11 +125,11 @@ function buildRegistry(cliDir) {
|
|
|
125
125
|
console.log(` \u26A0 ${pkg}/${skillName}: frontmatter \u89E3\u6790\u5931\u8D25\uFF0C\u8DF3\u8FC7`);
|
|
126
126
|
continue;
|
|
127
127
|
}
|
|
128
|
-
if (!fm.
|
|
129
|
-
console.log(` - ${pkg}/${skillName}: \u65E0
|
|
128
|
+
if (!fm.deepstorm) {
|
|
129
|
+
console.log(` - ${pkg}/${skillName}: \u65E0 deepstorm \u5B57\u6BB5\uFF0C\u8DF3\u8FC7\u6CE8\u518C`);
|
|
130
130
|
continue;
|
|
131
131
|
}
|
|
132
|
-
const df = fm.
|
|
132
|
+
const df = fm.deepstorm;
|
|
133
133
|
const entry = {
|
|
134
134
|
tool: df.tool,
|
|
135
135
|
configKey: df.configKey,
|
package/dist/cli.js
CHANGED
|
@@ -6609,7 +6609,7 @@ function buildMcpCapabilities(mcpCapabilities, installedMcpServers, mcpTools) {
|
|
|
6609
6609
|
return JSON.stringify(result);
|
|
6610
6610
|
}
|
|
6611
6611
|
function deriveVariableName(frontmatter) {
|
|
6612
|
-
const deepstorm = frontmatter.
|
|
6612
|
+
const deepstorm = frontmatter.deepstorm;
|
|
6613
6613
|
const tool = deepstorm?.tool;
|
|
6614
6614
|
if (tool && /^[a-z_]+$/.test(tool)) {
|
|
6615
6615
|
return `${tool}_capabilities`;
|
|
@@ -8116,6 +8116,9 @@ function registerTemplateCommand(program2, registry2) {
|
|
|
8116
8116
|
});
|
|
8117
8117
|
}
|
|
8118
8118
|
|
|
8119
|
+
// src/commands/update.ts
|
|
8120
|
+
var import_node_child_process = require("node:child_process");
|
|
8121
|
+
|
|
8119
8122
|
// src/utils/version.ts
|
|
8120
8123
|
var fs19 = __toESM(require("node:fs"));
|
|
8121
8124
|
var path17 = __toESM(require("node:path"));
|
|
@@ -8211,9 +8214,15 @@ async function updateCLI(fetchFn) {
|
|
|
8211
8214
|
console.log(`\u2714 \u5F53\u524D\u7248\u672C: v${result.current}`);
|
|
8212
8215
|
console.log(`\u2714 \u6700\u65B0\u7248\u672C: v${result.latest}`);
|
|
8213
8216
|
if (result.hasUpdate) {
|
|
8214
|
-
console.log("");
|
|
8215
|
-
|
|
8216
|
-
|
|
8217
|
+
console.log("\u2192 \u6B63\u5728\u81EA\u52A8\u66F4\u65B0...");
|
|
8218
|
+
try {
|
|
8219
|
+
(0, import_node_child_process.execSync)("npm install -g @deepstorm/cli@latest", { stdio: "inherit" });
|
|
8220
|
+
console.log(`
|
|
8221
|
+
\u2714 \u5DF2\u66F4\u65B0\u81F3 v${result.latest}`);
|
|
8222
|
+
} catch {
|
|
8223
|
+
console.log("\n\u26A0 \u81EA\u52A8\u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u6267\u884C\uFF1A");
|
|
8224
|
+
console.log(" npm install -g @deepstorm/cli@latest");
|
|
8225
|
+
}
|
|
8217
8226
|
} else {
|
|
8218
8227
|
console.log("\u2713 \u5DF2\u662F\u6700\u65B0\u7248\u672C");
|
|
8219
8228
|
}
|
|
@@ -8227,15 +8236,9 @@ function registerUpdateCommand(program2, registry2) {
|
|
|
8227
8236
|
updateCmd.option("--check", "\u4EC5\u68C0\u67E5 npm \u6700\u65B0\u7248\u672C").option("--cli", "\u66F4\u65B0 CLI \u81EA\u8EAB").option("--skills", "\u540C\u6B65 skill \u6A21\u677F\u5230\u672C\u5730").action(async (options) => {
|
|
8228
8237
|
const { check, cli, skills } = options;
|
|
8229
8238
|
if (!check && !cli && !skills) {
|
|
8230
|
-
|
|
8231
|
-
|
|
8232
|
-
|
|
8233
|
-
console.log("");
|
|
8234
|
-
upgradeTemplates(cliDir2, process.cwd(), Object.keys(registry2.skills));
|
|
8235
|
-
} else {
|
|
8236
|
-
console.log("");
|
|
8237
|
-
console.log("\u8DF3\u8FC7 skill \u540C\u6B65\uFF08\u7248\u672C\u68C0\u67E5\u5931\u8D25\u65F6\u4FDD\u7559\u73B0\u6709\u6A21\u677F\uFF09");
|
|
8238
|
-
}
|
|
8239
|
+
await updateCLI();
|
|
8240
|
+
console.log("");
|
|
8241
|
+
upgradeTemplates(cliDir2, process.cwd(), Object.keys(registry2.skills));
|
|
8239
8242
|
return;
|
|
8240
8243
|
}
|
|
8241
8244
|
if (check) {
|
|
@@ -8555,7 +8558,7 @@ async function uninstallDeepStorm(targetDir) {
|
|
|
8555
8558
|
|
|
8556
8559
|
// src/index.ts
|
|
8557
8560
|
var program = new import_commander.Command();
|
|
8558
|
-
program.name("deepstorm").description("DeepStorm CLI \u2014 \u4E00\u952E\u914D\u7F6E\u9879\u76EE\u5F00\u53D1\u73AF\u5883").version(getCliVersion());
|
|
8561
|
+
program.name("deepstorm").description("DeepStorm CLI \u2014 \u4E00\u952E\u914D\u7F6E\u9879\u76EE\u5F00\u53D1\u73AF\u5883").version(getCliVersion(), "-v, --version", "\u8F93\u51FA\u7248\u672C\u53F7");
|
|
8559
8562
|
function loadRegistry() {
|
|
8560
8563
|
const registryPath = path21.join(__dirname, "registry.json");
|
|
8561
8564
|
try {
|
package/dist/registry.json
CHANGED
|
@@ -807,7 +807,100 @@
|
|
|
807
807
|
"questions": []
|
|
808
808
|
}
|
|
809
809
|
},
|
|
810
|
-
"skills": {
|
|
810
|
+
"skills": {
|
|
811
|
+
"tide-discuss": {
|
|
812
|
+
"tool": "tide",
|
|
813
|
+
"name": "tide-discuss",
|
|
814
|
+
"description": "BMAD 多角色需求讨论 → PRD 自动生成 → 知识库推送 → 任务拆分 → Issue 创建。当用户讨论产品需求、新功能、改进建议时自动激活,引导用户通过结构化的 BMAD 工作流(分析师→产品经理→架构师→UX设计师→产品负责人)收敛需求并输出 PRD 文档。",
|
|
815
|
+
"hasTemplate": true
|
|
816
|
+
},
|
|
817
|
+
"reef-commit": {
|
|
818
|
+
"tool": "reef",
|
|
819
|
+
"name": "reef-commit",
|
|
820
|
+
"description": "根据当前变更和 OpenSpec 上下文,生成规范的提交信息并创建新提交。用户说「提交代码」「commit」「git push」「提交」「推送」等触发"
|
|
821
|
+
},
|
|
822
|
+
"reef-gen-backend": {
|
|
823
|
+
"tool": "reef",
|
|
824
|
+
"configKey": "reef.backend.language",
|
|
825
|
+
"name": "reef-gen-backend",
|
|
826
|
+
"description": "后端代码编写流程({{reef.backend.language.label}})。编写或生成后端代码时自动加载,编码规范详情引用 reef:reef-style-backend。",
|
|
827
|
+
"hasTemplate": true
|
|
828
|
+
},
|
|
829
|
+
"reef-gen-frontend": {
|
|
830
|
+
"tool": "reef",
|
|
831
|
+
"configKey": "reef.frontend.framework",
|
|
832
|
+
"name": "reef-gen-frontend",
|
|
833
|
+
"description": "前端代码编写流程({{reef.frontend.framework.label}})。编写或生成前端代码时自动加载,编码规范详情引用 reef:reef-style-frontend。",
|
|
834
|
+
"hasTemplate": true
|
|
835
|
+
},
|
|
836
|
+
"reef-harden": {
|
|
837
|
+
"tool": "reef",
|
|
838
|
+
"name": "reef-harden",
|
|
839
|
+
"description": "对 AI 生成的 spec、proposal、design、tasks 等 SDD 文档进行系统性加固。使用四道筛 + 反向 grill + Known Limitations 沉淀。当 AI 刚写完或用户想审查 spec/proposal/design/tasks 文档时触发,尤其当用户说\"加固spec\"、\"按四道筛过\"、\"补不做什么\"、\"补known limitation\" 或需要改进 SDD 文档质量时。"
|
|
840
|
+
},
|
|
841
|
+
"reef-pr": {
|
|
842
|
+
"tool": "reef",
|
|
843
|
+
"name": "reef-pr",
|
|
844
|
+
"description": "将当前分支的变更创建为 GitHub PR。读取 commits 和 OpenSpec 上下文,生成 PR 描述并提交。用户说「创建 PR」「发起 PR」「pull request」「提 PR」「提交 PR」时触发。"
|
|
845
|
+
},
|
|
846
|
+
"reef-review": {
|
|
847
|
+
"tool": "reef",
|
|
848
|
+
"name": "reef-review",
|
|
849
|
+
"description": "对当前分支变更执行前后端代码审查。自动检测变更范围,派发 Sub‑Agent 执行审查并生成结构化报告。",
|
|
850
|
+
"hasTemplate": true
|
|
851
|
+
},
|
|
852
|
+
"reef-scope": {
|
|
853
|
+
"tool": "reef",
|
|
854
|
+
"name": "reef-scope",
|
|
855
|
+
"description": "分支范围检查与拆分 — 在提交代码时验证分支是否涉及多个业务领域,以及自动拆分"
|
|
856
|
+
},
|
|
857
|
+
"reef-start": {
|
|
858
|
+
"tool": "reef",
|
|
859
|
+
"name": "reef-start",
|
|
860
|
+
"description": "从 Issue 跟踪系统或从零需求讨论启动开发生命周期。用户提供 Issue 编号时获取 Issue 详情和相关上下文(PRD 设计稿);无 Issue 时直接走 OpenSpec 自由讨论流程。通过 SDD 工作流生成高质量 spec 文档并进入 TDD 实现阶段。",
|
|
861
|
+
"hasTemplate": true
|
|
862
|
+
},
|
|
863
|
+
"reef-style-backend": {
|
|
864
|
+
"tool": "reef",
|
|
865
|
+
"configKey": "reef.backend.language",
|
|
866
|
+
"name": "reef-style-backend",
|
|
867
|
+
"description": "后端编码规范({{reef.backend.language.label}})。包含实体层次、DTO、Service/Controller/Repository 模式、MapStruct、多租户安全等完整规范。创建/修改后端代码时必须按本技能输出。",
|
|
868
|
+
"hasTemplate": true
|
|
869
|
+
},
|
|
870
|
+
"reef-style-frontend": {
|
|
871
|
+
"tool": "reef",
|
|
872
|
+
"configKey": "reef.frontend.framework",
|
|
873
|
+
"name": "reef-style-frontend",
|
|
874
|
+
"description": "前端编码规范({{reef.frontend.framework.label}})。创建/修改前端代码时必须按本技能输出。",
|
|
875
|
+
"hasTemplate": true
|
|
876
|
+
},
|
|
877
|
+
"reef-testcase": {
|
|
878
|
+
"tool": "reef",
|
|
879
|
+
"name": "reef-testcase",
|
|
880
|
+
"description": "基于 Jira Issue 生成结构化测试用例清单。从 Jira 功能描述和 PRD 上下文中提取测试场景,覆盖正常流程、边界条件、异常场景、验收标准四维。输出格式兼容 superpowers,可辅助生成更完备的单元测试。"
|
|
881
|
+
},
|
|
882
|
+
"sweep-init": {
|
|
883
|
+
"tool": "sweep",
|
|
884
|
+
"name": "sweep-init",
|
|
885
|
+
"description": "初始化 E2E 测试项目骨架。创建目录结构、根据 setup 配置生成对应测试框架配置、读取 MCP 配置、设置多环境变量,标志项目可被 flow-create 和 flow-run 使用。"
|
|
886
|
+
},
|
|
887
|
+
"sweep-plan": {
|
|
888
|
+
"tool": "sweep",
|
|
889
|
+
"name": "sweep-plan",
|
|
890
|
+
"description": "交互式生成 .flow.md 测试意图文档。从 Issue 或 PRD 提取验收标准,通过结构化对话覆盖功能流程、边界条件、异常场景,输出 Markdown 格式的测试流程。",
|
|
891
|
+
"hasTemplate": true
|
|
892
|
+
},
|
|
893
|
+
"sweep-run": {
|
|
894
|
+
"tool": "sweep",
|
|
895
|
+
"name": "sweep-run",
|
|
896
|
+
"description": "执行 .flow.md 测试意图文档。根据项目配置的 E2E 框架(如 Playwright),默认使用混合执行模式(Hybrid Execution):先通过预编译的 .flow.spec.ts 原生 Playwright 执行获得 ~20x 加速,失败后由 AI 驱动诊断和自动修复。支持交互式模块选择、直接参数指定、多环境切换、批量执行、多 Agent 并行。"
|
|
897
|
+
},
|
|
898
|
+
"atoll-ops": {
|
|
899
|
+
"tool": "atoll",
|
|
900
|
+
"name": "atoll-ops",
|
|
901
|
+
"description": "运维辅助 — 部署策略、监控查询、故障排查"
|
|
902
|
+
}
|
|
903
|
+
},
|
|
811
904
|
"mcpTools": {
|
|
812
905
|
"github": {
|
|
813
906
|
"domain": "code-hosting",
|