@captain_z/zsk 0.1.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,8 +36,8 @@ npx @captain_z/zsk project-init
36
36
  target-first → 预检 manifest
37
37
  ├─ 有 manifest → 刷新 / 追加 / 退出
38
38
  │ ↳ 刷新:全部官方变更(跳过手改) / 含手改强刷(备份)
39
- └─ 空 target → 套件 vs 自选(两级多选)
40
- groupMultiselect 按领域分组;套件预勾选
39
+ └─ 空 target → skill 包多选 → skill 多选
40
+ 可同时勾选多个预设包;也可叠加自选 skill
41
41
  ```
42
42
 
43
43
  完整 UX 见 [ARCHITECTURE.md §6.4](../../ARCHITECTURE.md#64-zsk-add-自适应-clack-向导)。
@@ -65,8 +65,8 @@ target-first → 预检 manifest
65
65
 
66
66
  | Flag 给了 | 跳过哪一步 |
67
67
  | --- | --- |
68
- | `--target` | "装到哪里?" |
69
- | `<pattern>` = bundle 名 | 1 屏(直接进 groupMultiselect,预勾选) |
68
+ | `--target` | "选择安装位置(可多选)" |
69
+ | `<pattern>` = bundle 名 | 跳过 skill 包选择;直接按 bundle 预选 skill |
70
70
  | `<pattern>` = `zsk:...` / glob | 两屏都跳过,pattern 匹配即装 |
71
71
  | `--skill='*'` | 整个"装什么"两屏跳过(= 该类型全装) |
72
72
  | `--on-conflict` | "冲突策略" |
@@ -0,0 +1,33 @@
1
+ import type { Bundles } from "../core/bundles.js";
2
+ export declare const MANUAL_PATH_CHOICE: "__manual_path__";
3
+ export declare const DEFAULT_BUNDLE = "frontend-project";
4
+ export type PromptOption<T extends string> = {
5
+ value: T;
6
+ label: string;
7
+ hint?: string;
8
+ };
9
+ export type ExistingTargetAction = "append" | "refresh" | "exit";
10
+ export type PlanMode = "new" | "append" | "refresh" | "exit";
11
+ export type SkillMode = "bundle" | "custom";
12
+ type TargetLike = {
13
+ kind: string;
14
+ label: string;
15
+ };
16
+ export declare function isMaintenanceRun(args: {
17
+ targetProvided: boolean;
18
+ hasManifest: boolean;
19
+ hasExplicitPicks: boolean;
20
+ }): boolean;
21
+ export declare function buildTargetPromptModel<T extends TargetLike>(targets: T[], hints: Record<string, string>): {
22
+ presetOptions: Array<PromptOption<Exclude<T["kind"], "custom">>>;
23
+ manualPathOption: PromptOption<typeof MANUAL_PATH_CHOICE>;
24
+ };
25
+ export declare function buildSkillModeOptions(bundles: Bundles, availableSkillCount: number): PromptOption<SkillMode>[];
26
+ export declare function buildBundleOptions(bundles: Bundles): PromptOption<string>[];
27
+ export declare function resolvePlanMode(args: {
28
+ hasManifest: boolean;
29
+ hasExplicitPicks: boolean;
30
+ requestedAction?: ExistingTargetAction;
31
+ }): PlanMode;
32
+ export declare function inferBundleName(selectedBundleName: string | null, selectedSkills: string[], bundles: Bundles, availableSkills: string[]): string | null;
33
+ export {};
@@ -0,0 +1,80 @@
1
+ export const MANUAL_PATH_CHOICE = "__manual_path__";
2
+ export const DEFAULT_BUNDLE = "frontend-project";
3
+ export function isMaintenanceRun(args) {
4
+ return args.targetProvided && args.hasManifest && !args.hasExplicitPicks;
5
+ }
6
+ export function buildTargetPromptModel(targets, hints) {
7
+ const presetOptions = targets
8
+ .filter((target) => target.kind !== "custom")
9
+ .map((target) => ({
10
+ value: target.kind,
11
+ label: target.label,
12
+ hint: hints[target.kind],
13
+ }));
14
+ return {
15
+ presetOptions,
16
+ manualPathOption: {
17
+ value: MANUAL_PATH_CHOICE,
18
+ label: "手动输入路径...",
19
+ hint: hints.custom,
20
+ },
21
+ };
22
+ }
23
+ export function buildSkillModeOptions(bundles, availableSkillCount) {
24
+ const bundleCount = Object.values(bundles).filter((bundle) => bundle.skills.length > 0).length;
25
+ return [
26
+ {
27
+ value: "bundle",
28
+ label: "预设 bundle",
29
+ hint: `先选 1 个预设,再微调其中的 skill(${bundleCount} 个可选)`,
30
+ },
31
+ {
32
+ value: "custom",
33
+ label: "按 skill 自选",
34
+ hint: `按领域分组浏览 ${availableSkillCount} 颗`,
35
+ },
36
+ ];
37
+ }
38
+ export function buildBundleOptions(bundles) {
39
+ return Object.entries(bundles)
40
+ .filter(([, bundle]) => bundle.skills.length > 0)
41
+ .map(([name, bundle]) => ({
42
+ value: name,
43
+ label: name,
44
+ hint: `${bundle.skills.length} · ${bundle.hint}`,
45
+ }))
46
+ .sort((left, right) => {
47
+ if (left.value === DEFAULT_BUNDLE)
48
+ return -1;
49
+ if (right.value === DEFAULT_BUNDLE)
50
+ return 1;
51
+ return left.value.localeCompare(right.value);
52
+ });
53
+ }
54
+ export function resolvePlanMode(args) {
55
+ if (!args.hasManifest)
56
+ return "new";
57
+ if (args.hasExplicitPicks)
58
+ return "append";
59
+ return args.requestedAction ?? "exit";
60
+ }
61
+ export function inferBundleName(selectedBundleName, selectedSkills, bundles, availableSkills) {
62
+ if (!selectedBundleName)
63
+ return null;
64
+ const bundle = bundles[selectedBundleName];
65
+ if (!bundle)
66
+ return null;
67
+ const expected = bundleToAvailable(bundle, availableSkills);
68
+ return sameMembers(selectedSkills, expected) ? selectedBundleName : null;
69
+ }
70
+ function bundleToAvailable(bundle, availableSkills) {
71
+ const set = new Set(availableSkills);
72
+ return bundle.skills.filter((skill) => set.has(skill));
73
+ }
74
+ function sameMembers(left, right) {
75
+ if (left.length !== right.length)
76
+ return false;
77
+ const rightSet = new Set(right);
78
+ return left.every((value) => rightSet.has(value));
79
+ }
80
+ //# sourceMappingURL=add-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-flow.js","sourceRoot":"","sources":["../../src/commands/add-flow.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,14 @@
1
1
  // `zsk add` — adaptive install wizard.
2
2
  //
3
- // ARCHITECTURE.md §6.4:
4
- // - Target-first; pre-check manifest to label each target in the prompt.
5
- // - Branch A (installed): refresh / append / exit + refresh scope.
6
- // - Branch B (empty): preset bundle vs cherry-pick groupMultiselect by domain.
7
- // - Flag preloading skips the corresponding clack step.
3
+ // Interactive flow:
4
+ // - Default path is payload-first: pick skills/bundle, then pick one target.
5
+ // - Explicit existing target + no payload enters maintenance mode (refresh/append).
6
+ // - "手动输入路径..." and "按 skill 自选" are actions, not fake multiselect items.
8
7
  // - Writes zsk-manifest.json on success so future runs can branch correctly.
9
8
  import pc from "picocolors";
10
9
  import { readFile, access } from "node:fs/promises";
11
10
  import { join } from "node:path";
12
- import { intro, outro, select, groupMultiselect, text, confirm, log, spinner, note, } from "../ui/prompts.js";
11
+ import { intro, outro, select, groupMultiselect, text, log, spinner, note, } from "../ui/prompts.js";
13
12
  import { loadBundles } from "../core/bundles.js";
14
13
  import { enumerateSkills, loadSkill, DOMAINS, } from "../core/skills.js";
15
14
  import { TARGET_OPTIONS, resolvePath, } from "../core/targets.js";
@@ -17,6 +16,7 @@ import { install } from "../core/installer.js";
17
16
  import { fileExists } from "../core/scaffolder.js";
18
17
  import { readManifest, writeManifest, buildManifest, detectDrift, sha256File, } from "../core/manifest.js";
19
18
  import { expandCapabilityFilters, classifyPattern, hasCapabilityFilter, } from "../core/capabilities.js";
19
+ import { DEFAULT_BUNDLE, MANUAL_PATH_CHOICE, buildBundleOptions, buildSkillModeOptions, buildTargetPromptModel, inferBundleName, isMaintenanceRun, resolvePlanMode, } from "./add-flow.js";
20
20
  export async function run(positional, opts, zskVersion) {
21
21
  intro(`${pc.bold("zsk")} · add`);
22
22
  const isTTY = Boolean(process.stdout.isTTY);
@@ -43,109 +43,153 @@ export async function run(positional, opts, zskVersion) {
43
43
  process.exit(1);
44
44
  }
45
45
  }
46
- // Step 0 — offer project-init when project-config.md missing (interactive only)
47
- if (isTTY && !opts.yes) {
48
- await maybeOfferProjectInit();
49
- }
50
- // Step 1 — target (flag preloads)
51
46
  const bundles = await loadBundles();
52
- const targetPath = await selectTarget(opts, bundles);
53
- // Step 2 — read manifest → branch A vs B
54
- const manifest = await readManifest(targetPath);
55
- const drift = manifest ? await detectDrift(targetPath, manifest) : [];
56
47
  const filters = capabilityFiltersFromOptions(opts);
57
48
  const allSkills = await enumerateSkills();
58
49
  const allSkillNames = allSkills.map((s) => s.name);
59
50
  // Resolve positional into bundle or skill pattern (if any)
60
- const bundleFromArg = positional.find((p) => classifyPattern(p, Object.keys(bundles)) === "bundle");
51
+ const bundlePatternsFromArgs = positional.filter((p) => classifyPattern(p, Object.keys(bundles)) === "bundle");
61
52
  const skillPatternsFromArgs = positional.filter((p) => classifyPattern(p, Object.keys(bundles)) !== "bundle");
62
- let pickedSkills = [];
63
- let chosenBundle = null;
64
- let mode = "new";
65
53
  const hasExplicitPicks = positional.length > 0 || hasCapabilityFilter(filters);
66
- if (manifest) {
67
- // Explicit pattern/filter → user wants to install/reinstall those specific
68
- // skills, not a blanket refresh. Treat as append against the full pool
69
- // (existing entries merge + conflict policy takes over per-file).
70
- const action = hasExplicitPicks
71
- ? "append"
72
- : await askExistingAction(manifest, drift, opts);
73
- if (action === "exit") {
54
+ const explicitTargetPath = opts.target ? resolvePath(opts.target) : null;
55
+ const explicitManifest = explicitTargetPath
56
+ ? await readManifest(explicitTargetPath).catch(() => null)
57
+ : null;
58
+ const maintenanceRun = isMaintenanceRun({
59
+ targetProvided: Boolean(explicitTargetPath),
60
+ hasManifest: Boolean(explicitManifest),
61
+ hasExplicitPicks,
62
+ });
63
+ let sharedPickedPromise;
64
+ async function getSharedPicked() {
65
+ sharedPickedPromise ??= pickSkills({
66
+ bundles,
67
+ availableSkills: allSkillNames,
68
+ bundlePatternsFromArgs,
69
+ skillPatternsFromArgs,
70
+ filters,
71
+ opts,
72
+ });
73
+ return sharedPickedPromise;
74
+ }
75
+ let plan;
76
+ if (maintenanceRun && explicitTargetPath && explicitManifest) {
77
+ const drift = await detectDrift(explicitTargetPath, explicitManifest);
78
+ const action = await askExistingAction(explicitManifest, drift, opts, false);
79
+ const mode = resolvePlanMode({
80
+ hasManifest: true,
81
+ hasExplicitPicks,
82
+ requestedAction: action,
83
+ });
84
+ if (mode === "exit") {
74
85
  outro("取消");
75
86
  return;
76
87
  }
77
- if (action === "refresh") {
78
- mode = "refresh";
79
- pickedSkills = await askRefreshScope(manifest, drift, opts);
80
- chosenBundle = manifest.bundle;
88
+ if (mode === "refresh") {
89
+ plan = {
90
+ targetPath: explicitTargetPath,
91
+ manifest: explicitManifest,
92
+ mode,
93
+ skills: await askRefreshScope(explicitManifest, drift, opts),
94
+ bundle: explicitManifest.bundle,
95
+ };
81
96
  }
82
97
  else {
83
- mode = "append";
84
- const picked = await pickSkills({
85
- bundles,
86
- availableSkills: allSkillNames,
87
- allSkills,
88
- bundleFromArg,
89
- skillPatternsFromArgs,
90
- filters,
91
- opts,
92
- });
93
- pickedSkills = picked.skills;
94
- chosenBundle = picked.bundle ?? manifest.bundle;
98
+ const picked = await getSharedPicked();
99
+ if (picked.skills.length === 0) {
100
+ log.warn("未选任何 skill,退出。");
101
+ outro("bye");
102
+ return;
103
+ }
104
+ plan = {
105
+ targetPath: explicitTargetPath,
106
+ manifest: explicitManifest,
107
+ mode,
108
+ skills: picked.skills,
109
+ bundle: picked.bundle ?? explicitManifest.bundle,
110
+ };
95
111
  }
96
112
  }
97
113
  else {
98
- mode = "new";
99
- const picked = await pickSkills({
100
- bundles,
101
- availableSkills: allSkillNames,
102
- allSkills,
103
- bundleFromArg,
104
- skillPatternsFromArgs,
105
- filters,
106
- opts,
114
+ const picked = await getSharedPicked();
115
+ if (picked.skills.length === 0) {
116
+ log.warn("未选任何 skill,退出。");
117
+ outro("bye");
118
+ return;
119
+ }
120
+ const targetPath = explicitTargetPath ?? await selectTarget();
121
+ const manifest = explicitTargetPath && explicitTargetPath === targetPath
122
+ ? explicitManifest
123
+ : await readManifest(targetPath);
124
+ const drift = manifest ? await detectDrift(targetPath, manifest) : [];
125
+ const action = manifest && !hasExplicitPicks
126
+ ? await askExistingAction(manifest, drift, opts, true)
127
+ : undefined;
128
+ const mode = resolvePlanMode({
129
+ hasManifest: Boolean(manifest),
130
+ hasExplicitPicks,
131
+ requestedAction: action,
107
132
  });
108
- pickedSkills = picked.skills;
109
- chosenBundle = picked.bundle;
110
- }
111
- if (pickedSkills.length === 0) {
112
- log.warn("未选任何 skill,退出。");
113
- outro("bye");
114
- return;
133
+ if (mode === "exit") {
134
+ outro("取消");
135
+ return;
136
+ }
137
+ if (mode === "refresh" && manifest) {
138
+ plan = {
139
+ targetPath,
140
+ manifest,
141
+ mode,
142
+ skills: await askRefreshScope(manifest, drift, opts),
143
+ bundle: manifest.bundle,
144
+ };
145
+ }
146
+ else {
147
+ plan = {
148
+ targetPath,
149
+ manifest,
150
+ mode,
151
+ skills: picked.skills,
152
+ bundle: manifest ? picked.bundle ?? manifest.bundle : picked.bundle,
153
+ };
154
+ }
115
155
  }
116
156
  // Step 3 — conflict policy (flag preloads; refresh + drift defaults to backup)
117
- const onConflict = await askConflict(opts, mode);
157
+ const onConflict = await askConflict(opts, plan.mode === "refresh" ? "refresh" : "append");
118
158
  const dryRun = Boolean(opts.dryRun);
119
159
  // Step 4 — dry-run preview short-circuit
120
160
  if (dryRun) {
121
- const lines = pickedSkills.map((n) => ` + ${n}`).join("\n");
122
- note(`[dry-run] 将写入 ${pickedSkills.length} 个 skill → ${pc.cyan(targetPath)}\n${lines}`, "预览");
161
+ note([
162
+ `[dry-run] 将处理 1 个安装位置`,
163
+ "",
164
+ `${pc.cyan(plan.targetPath)} · ${plan.mode} · ${plan.skills.length} 个 skill`,
165
+ ...plan.skills.map((name) => ` + ${name}`),
166
+ ].join("\n"), "预览");
123
167
  outro("完成 (dry-run)");
124
168
  return;
125
169
  }
126
170
  // Step 5 — execute install
127
171
  const s = spinner();
128
- s.start(`${mode === "refresh" ? "刷新" : "安装"} ${pickedSkills.length} skill → ${targetPath}`);
172
+ s.start(`${plan.mode === "refresh" ? "刷新" : "安装"} ${plan.skills.length} skill → ${plan.targetPath}`);
129
173
  let result;
130
174
  try {
131
175
  result = await install({
132
- skills: pickedSkills,
133
- target: targetPath,
176
+ skills: plan.skills,
177
+ target: plan.targetPath,
134
178
  onConflict,
135
179
  dryRun: false,
136
180
  });
137
- s.stop(mode === "refresh" ? "刷新完成" : "安装完成");
181
+ s.stop(plan.mode === "refresh" ? "刷新完成" : "安装完成");
138
182
  }
139
183
  catch (err) {
140
184
  s.stop("失败");
141
185
  throw err;
142
186
  }
143
187
  // Step 6 — update manifest (merge with existing for append mode)
144
- const records = await buildRecords(pickedSkills, targetPath, zskVersion);
145
- const mergedSkills = mergeSkillRecords(mode === "append" ? manifest?.skills ?? [] : [], records);
146
- await writeManifest(targetPath, buildManifest({
188
+ const records = await buildRecords(plan.skills, plan.targetPath, zskVersion);
189
+ const mergedSkills = mergeSkillRecords(plan.mode === "append" ? plan.manifest?.skills ?? [] : [], records);
190
+ await writeManifest(plan.targetPath, buildManifest({
147
191
  zskVersion,
148
- bundle: chosenBundle,
192
+ bundle: plan.bundle,
149
193
  skills: mergedSkills,
150
194
  }));
151
195
  // Step 7 — summary
@@ -160,12 +204,13 @@ export async function run(positional, opts, zskVersion) {
160
204
  ]
161
205
  .filter(Boolean)
162
206
  .join("\n");
163
- note(summary, mode === "refresh" ? "刷新摘要" : "安装摘要");
207
+ note(summary, `${plan.mode === "refresh" ? "刷新摘要" : "安装摘要"} · ${plan.targetPath}`);
164
208
  if (result.errors.length > 0) {
165
209
  for (const err of result.errors)
166
210
  log.error(`${err.skill}: ${err.message}`);
167
211
  }
168
- outro(`完成 · 运行 ${pc.cyan("zsk doctor")} 校验`);
212
+ await maybeRemindProjectInit();
213
+ outro(`完成 · 已处理 1 个安装位置 · 运行 ${pc.cyan("zsk doctor")} 校验`);
169
214
  }
170
215
  // ---- helpers ----------------------------------------------------------------
171
216
  function hasAnySource(positional, opts) {
@@ -187,60 +232,47 @@ function capabilityFiltersFromOptions(opts) {
187
232
  prompt: opts.prompt ?? [],
188
233
  };
189
234
  }
190
- async function maybeOfferProjectInit() {
235
+ async function maybeRemindProjectInit() {
191
236
  const cwd = process.cwd();
192
237
  const has = await fileExists(join(cwd, "project-config.md"));
193
238
  if (has)
194
239
  return;
195
- log.warn(`当前目录缺 ${pc.cyan("project-config.md")}(skill ${pc.yellow("{{config.*}}")} 解析源)`);
196
- const wantsBootstrap = await confirm("先跑 zsk project-init 创建 project-config.md + .raws/ + CLAUDE.md?", true);
197
- if (wantsBootstrap) {
198
- const { run: runProjectInit } = await import("./project-init.js");
199
- await runProjectInit({ target: cwd, yes: true });
200
- log.step("项目 bootstrap 完成,继续 skill 安装…");
201
- }
240
+ log.info(`当前目录仍缺 ${pc.cyan("project-config.md")};如需填充 ${pc.yellow("{{config.*}}")},稍后运行 ${pc.cyan("zsk project-init")}`);
202
241
  }
203
- async function selectTarget(opts, bundles) {
204
- if (opts.target)
205
- return resolvePath(opts.target);
242
+ async function selectTarget() {
206
243
  // pre-check each preset for manifest status to show in the label
207
- const precheck = await Promise.all(TARGET_OPTIONS.map(async (t) => {
208
- if (t.kind === "custom")
209
- return { kind: t.kind, hint: t.hint };
210
- const path = t.resolve();
244
+ const hints = {};
245
+ await Promise.all(TARGET_OPTIONS.map(async (target) => {
246
+ if (target.kind === "custom") {
247
+ hints.custom = target.hint;
248
+ return;
249
+ }
250
+ const path = target.resolve();
211
251
  const manifest = await readManifest(path).catch(() => null);
212
252
  if (manifest) {
213
- const bLabel = manifest.bundle
214
- ? `${manifest.bundle} v${manifest.zskVersion}`
215
- : `custom v${manifest.zskVersion}`;
216
- return {
217
- kind: t.kind,
218
- hint: `${t.hint} · 已装 ${manifest.skills.length} 颗 ${bLabel}`,
219
- };
253
+ hints[target.kind] = `${target.hint} · 已装 ${manifest.skills.length} 颗`;
254
+ return;
220
255
  }
221
256
  const exists = await directoryNonEmpty(path);
222
- return {
223
- kind: t.kind,
224
- hint: exists ? `${t.hint} · 目录存在(非 zsk 管理)` : `${t.hint} · 空`,
225
- };
257
+ hints[target.kind] = exists
258
+ ? `${target.hint} · 非 zsk 管理`
259
+ : `${target.hint} · 空`;
226
260
  }));
227
- const targetKind = await select("装到哪里?", TARGET_OPTIONS.map((t, i) => ({
228
- value: t.kind,
229
- label: `${t.label.padEnd(24)} ${pc.dim(precheck[i]?.hint ?? t.hint)}`,
230
- })));
231
- if (targetKind === "custom") {
232
- const input = await text("自定义路径(支持 ~ / 相对 / 绝对)", {
261
+ const model = buildTargetPromptModel(TARGET_OPTIONS, hints);
262
+ const targetChoice = await select("安装到哪里?", [...model.presetOptions, model.manualPathOption]);
263
+ if (targetChoice === MANUAL_PATH_CHOICE) {
264
+ const input = await text("自定义安装路径(支持 ~ / 相对 / 绝对)", {
233
265
  placeholder: "./zsk-skills",
234
- validate: (v) => (v.trim().length === 0 ? "路径不能为空" : undefined),
266
+ validate: (value) => (value.trim().length === 0 ? "路径不能为空" : undefined),
235
267
  });
236
268
  return resolvePath(input);
237
269
  }
238
- const opt = TARGET_OPTIONS.find((t) => t.kind === targetKind);
239
- if (!opt)
240
- throw new Error(`unknown target kind: ${targetKind}`);
241
- return opt.resolve();
270
+ const option = TARGET_OPTIONS.find((target) => target.kind === targetChoice);
271
+ if (!option)
272
+ throw new Error(`unknown target kind: ${targetChoice}`);
273
+ return option.resolve();
242
274
  }
243
- async function askExistingAction(manifest, drift, opts) {
275
+ async function askExistingAction(manifest, drift, opts, selectionPrepared) {
244
276
  const modifiedCount = drift.filter((d) => d.kind === "modified").length;
245
277
  const missingCount = drift.filter((d) => d.kind === "missing").length;
246
278
  if (opts.yes)
@@ -254,11 +286,14 @@ async function askExistingAction(manifest, drift, opts) {
254
286
  .filter(Boolean)
255
287
  .join(" ");
256
288
  log.info(`当前状态:${label}`);
257
- return select("接下来?", [
258
- { value: "refresh", label: "刷新到最新(按 manifest 重装)" },
259
- { value: "append", label: "追加其他 skill" },
289
+ return select(selectionPrepared ? "这个安装位置已经由 zsk 管理,接下来?" : "接下来?", [
290
+ {
291
+ value: "append",
292
+ label: selectionPrepared ? "把本次选择追加进去" : "追加其他 skill",
293
+ },
294
+ { value: "refresh", label: "按 manifest 刷新已装内容" },
260
295
  { value: "exit", label: "退出" },
261
- ], "refresh");
296
+ ], selectionPrepared ? "append" : "refresh");
262
297
  }
263
298
  async function askRefreshScope(manifest, drift, opts) {
264
299
  const modifiedNames = new Set(drift.filter((d) => d.kind === "modified").map((d) => d.name));
@@ -284,7 +319,7 @@ async function askRefreshScope(manifest, drift, opts) {
284
319
  return manifest.skills.map((s) => s.name).filter((n) => !modifiedNames.has(n));
285
320
  }
286
321
  async function pickSkills(args) {
287
- const { bundles, availableSkills, allSkills, bundleFromArg, skillPatternsFromArgs, filters, opts } = args;
322
+ const { bundles, availableSkills, bundlePatternsFromArgs, skillPatternsFromArgs, filters, opts, } = args;
288
323
  // Priority 1 — capability filters (--skill='*' / --skill='zsk:spec' / glob)
289
324
  const filterMatched = expandCapabilityFilters(filters.skill ?? [], availableSkills);
290
325
  if (filterMatched.length > 0 || Object.values(filters).some((v) => v?.length)) {
@@ -292,57 +327,56 @@ async function pickSkills(args) {
292
327
  // Non-skill filters currently resolve to empty sets (see §3).
293
328
  return { skills: filterMatched, bundle: null };
294
329
  }
295
- // Priority 2 — positional skill/glob patterns
296
- if (skillPatternsFromArgs.length > 0) {
330
+ // Priority 2 — positional bundle(s) / skill-glob patterns
331
+ if (bundlePatternsFromArgs.length > 0 || skillPatternsFromArgs.length > 0) {
297
332
  const matched = expandCapabilityFilters(skillPatternsFromArgs, availableSkills);
298
- if (matched.length === 0) {
299
- log.error(`未匹配到任何 skill:${skillPatternsFromArgs.join(", ")}`);
333
+ const selected = uniqueStrings([
334
+ ...bundlePatternsFromArgs.flatMap((name) => {
335
+ const bundle = bundles[name];
336
+ return bundle ? bundleToAvailable(bundle, availableSkills) : [];
337
+ }),
338
+ ...matched,
339
+ ]);
340
+ if (selected.length === 0) {
341
+ log.error(`未匹配到任何 skill:${[
342
+ ...bundlePatternsFromArgs,
343
+ ...skillPatternsFromArgs,
344
+ ].join(", ")}`);
300
345
  return { skills: [], bundle: null };
301
346
  }
302
- return { skills: matched, bundle: null };
303
- }
304
- // Priority 3 — positional bundle
305
- if (bundleFromArg) {
306
- const bundle = bundles[bundleFromArg];
307
- if (!bundle)
308
- return { skills: [], bundle: null };
309
- const pool = bundleToAvailable(bundle, availableSkills);
310
- const selected = opts.yes
311
- ? pool
312
- : await groupMultiselect(`本次要装的 skill(${pool.length}/${bundle.skills.length})`, await groupByDomain(pool), pool);
313
- return { skills: selected, bundle: bundleFromArg };
347
+ return {
348
+ skills: selected,
349
+ bundle: bundlePatternsFromArgs.length === 1
350
+ ? inferBundleName(bundlePatternsFromArgs[0] ?? null, selected, bundles, availableSkills)
351
+ : null,
352
+ };
314
353
  }
315
- // Priority 4 — interactive two-level pick
316
- return interactiveTwoLevelPick(bundles, availableSkills, allSkills);
354
+ // Priority 3 — interactive two-level pick
355
+ return interactiveTwoLevelPick(bundles, availableSkills);
317
356
  }
318
357
  function bundleToAvailable(bundle, available) {
319
358
  const set = new Set(available);
320
359
  return bundle.skills.filter((s) => set.has(s));
321
360
  }
322
- async function interactiveTwoLevelPick(bundles, availableSkills, allSkills) {
323
- // Level 1 preset bundle vs cherry-pick
324
- const presetEntries = Object.entries(bundles).filter(([, b]) => b.skills.length > 0);
325
- const level1 = await select("装什么?", [
326
- ...presetEntries.map(([name, b]) => ({
327
- value: name,
328
- label: `${pc.cyan(name.padEnd(32))} ${pc.dim(`${b.skills.length} · ${b.hint}`)}`,
329
- })),
330
- {
331
- value: "__cherry__",
332
- label: `${pc.cyan("挑单颗 / 几颗 skill".padEnd(32))} ${pc.dim(`按领域分组浏览 ${availableSkills.length} 颗`)}`,
333
- },
334
- ], presetEntries.find(([n]) => n === "frontend-project")?.[0] ?? presetEntries[0]?.[0]);
335
- if (level1 === "__cherry__") {
336
- const selected = await groupMultiselect("本次要装的 skill(Space 切换 · a 全选 · A 全不选 · Enter 确认)", await groupByDomain(availableSkills), []);
337
- return { skills: selected, bundle: null };
361
+ async function interactiveTwoLevelPick(bundles, availableSkills) {
362
+ const skillMode = await select("你要安装什么?", buildSkillModeOptions(bundles, availableSkills.length), "bundle");
363
+ if (skillMode === "bundle") {
364
+ const bundleOptions = buildBundleOptions(bundles);
365
+ const initialBundle = bundleOptions.some((option) => option.value === DEFAULT_BUNDLE)
366
+ ? DEFAULT_BUNDLE
367
+ : bundleOptions[0]?.value;
368
+ const selectedBundle = await select("选择一个 bundle", bundleOptions, initialBundle);
369
+ const defaultSkills = bundleToAvailable(bundles[selectedBundle], availableSkills);
370
+ const selected = await groupMultiselect("本次要安装哪些 skill?(可多选)", await groupByDomain(availableSkills), defaultSkills);
371
+ return {
372
+ skills: selected,
373
+ bundle: inferBundleName(selectedBundle, selected, bundles, availableSkills),
374
+ };
338
375
  }
339
- // preset bundle chosen → defaults prefilled
340
- const bundle = bundles[level1];
341
- if (!bundle)
342
- return { skills: [], bundle: null };
343
- const pool = bundleToAvailable(bundle, availableSkills);
344
- const selected = await groupMultiselect(`本次要装的 skill(默认全选;可取消个别)`, await groupByDomain(pool), pool);
345
- return { skills: selected, bundle: level1 };
376
+ return {
377
+ skills: await groupMultiselect("本次要安装哪些 skill?(可多选)", await groupByDomain(availableSkills), []),
378
+ bundle: null,
379
+ };
346
380
  }
347
381
  async function groupByDomain(skillNames) {
348
382
  const groups = {};
@@ -415,4 +449,7 @@ async function directoryNonEmpty(p) {
415
449
  return false;
416
450
  }
417
451
  }
452
+ function uniqueStrings(values) {
453
+ return [...new Set(values)].sort((a, b) => a.localeCompare(b));
454
+ }
418
455
  //# sourceMappingURL=add.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@captain_z/zsk",
3
- "version": "0.1.0",
3
+ "version": "1.0.1",
4
4
  "description": "ZNorth Standard Kit — CLI installer for zsk skill bundles (npx @captain_z/zsk add)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -18,7 +18,7 @@
18
18
  "commander": "^12.1.0",
19
19
  "picocolors": "^1.1.1",
20
20
  "yaml": "^2.7.0",
21
- "@captain_z/zsk-skills": "0.1.0"
21
+ "@captain_z/zsk-skills": "1.0.1"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^22.10.0",