@captain_z/zsk 1.4.2 → 1.5.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 +23 -11
- package/dist/bin.js +174 -1
- package/dist/bin.js.map +1 -1
- package/dist/commands/add-flow.js +3 -8
- package/dist/commands/add-flow.js.map +1 -1
- package/dist/commands/add.d.ts +1 -0
- package/dist/commands/add.js +22 -6
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/check.js +10 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/demo.d.ts +31 -0
- package/dist/commands/demo.js +533 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/issue.d.ts +8 -0
- package/dist/commands/issue.js +170 -6
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/module.js +23 -2
- package/dist/commands/module.js.map +1 -1
- package/dist/commands/project-init.js +6 -2
- package/dist/commands/project-init.js.map +1 -1
- package/dist/commands/remove.js +1 -1
- package/dist/commands/remove.js.map +1 -1
- package/dist/core/config.d.ts +14 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/installer.d.ts +5 -0
- package/dist/core/installer.js +50 -6
- package/dist/core/installer.js.map +1 -1
- package/dist/core/skills.d.ts +3 -4
- package/dist/core/skills.js +34 -43
- package/dist/core/skills.js.map +1 -1
- package/dist/core/targets.js +1 -1
- package/dist/core/targets.js.map +1 -1
- package/package.json +2 -2
- package/schemas/module.schema.json +1 -1
- package/schemas/zsk-config.schema.json +122 -2
- package/templates/issue/default/issue.md +35 -2
- package/templates/module/frontend-module/acceptance.md +18 -0
- package/templates/module/frontend-module/archive.md +17 -0
- package/templates/module/frontend-module/commit.md +15 -0
- package/templates/module/frontend-module/demo-outline.md +59 -0
- package/templates/module/frontend-module/demo-report.md +23 -0
- package/templates/module/frontend-module/deploy.md +18 -0
- package/templates/module/frontend-module/design.md +12 -0
- package/templates/module/frontend-module/module.yaml +4 -1
- package/templates/module/frontend-module/proposal.md +7 -0
- package/templates/module/frontend-module/ready.md +12 -0
- package/templates/module/frontend-module/review.md +12 -0
- package/templates/module/frontend-module/scenarios/index.md +13 -0
- package/templates/module/frontend-module/scenarios/p0-happy-path.spec.ts +13 -0
- package/templates/module/frontend-module/smoke.md +21 -0
- package/templates/module/frontend-module/spec.md +14 -0
- package/templates/module/frontend-module/tasks.md +13 -0
- package/templates/module/frontend-module/verify.md +12 -0
- package/templates/project-init/.issues/README.md +17 -1
- package/templates/project-init/.issues/_taxonomy.md +35 -0
- package/templates/project-init/.issues/index.md +7 -0
- package/templates/project-init/.raws/README.md +2 -1
- package/templates/project-init/.raws/backend-repositories/index.md +12 -0
- package/templates/project-init/.raws/index.md +3 -0
- package/templates/project-init/.raws/issues/index.md +4 -0
- package/templates/project-init/.zsk/checkpoints/index.md +4 -0
- package/templates/project-init/.zsk/config.yaml +56 -1
- package/templates/project-init/.zsk/learning/index.md +14 -0
- package/templates/project-init/.zsk/learning/proposals/.gitkeep +1 -0
- package/templates/project-init/.zsk/resource-manifest.json +55 -0
- package/templates/project-init/.zsk/workflow-state.json +6 -0
- package/templates/project-init/project-config.md +154 -0
package/README.md
CHANGED
|
@@ -8,6 +8,7 @@ ZNorth Standard Kit CLI — `npx zsk` 一个命令装 / 刷新 / 移除一套 sk
|
|
|
8
8
|
# 装(默认命令):向导自适应新装 / 刷新 / 追加
|
|
9
9
|
npx @captain_z/zsk # 等同 `zsk add`
|
|
10
10
|
npx @captain_z/zsk add
|
|
11
|
+
npx @captain_z/zsk install # add 的别名;更贴近 npm/CI 语义
|
|
11
12
|
|
|
12
13
|
# 移除
|
|
13
14
|
npx @captain_z/zsk remove
|
|
@@ -22,6 +23,7 @@ npx @captain_z/zsk config setup
|
|
|
22
23
|
npx @captain_z/zsk config check
|
|
23
24
|
npx @captain_z/zsk module init -m <module-id>
|
|
24
25
|
npx @captain_z/zsk issue create -m <module-id>
|
|
26
|
+
npx @captain_z/zsk issue update -m <module-id> --id BUG-0001-api-gap --status Verified
|
|
25
27
|
npx @captain_z/zsk prep
|
|
26
28
|
npx @captain_z/zsk check
|
|
27
29
|
```
|
|
@@ -31,13 +33,15 @@ npx @captain_z/zsk check
|
|
|
31
33
|
| 命令 | 作用 | 默认 UX |
|
|
32
34
|
| --- | --- | --- |
|
|
33
35
|
| `add [<pattern>...]` | 装 / 刷新 / 追加。target 空 → 新装;有 manifest → 自动进刷新岔路 | 自适应 clack 向导,两级多选 |
|
|
36
|
+
| `install [<pattern>...]` | `add` 的别名;支持同样的 target、bundle、format 和冲突策略 | 非交互 / CI 更直观 |
|
|
34
37
|
| `remove [<pattern>...]` \| `rm` | 从有 `zsk-manifest.json` 的目录移除;手改文件自动备份 | 多选 + 强确认 |
|
|
35
38
|
| `list [--bundle=<n>] [--json]` | 浏览 bundle / skill 清单 | 非交互 |
|
|
36
|
-
| `init` | 脚手架 `.zsk/config.yaml` + `.raws/index.md` + `.raws/manifest.json` + `.raws/` 分类快照目录 + `docs/` + `.issues/` | 非破坏性,默认跳过已存在文件 |
|
|
39
|
+
| `init` | 脚手架 `.zsk/config.yaml` + `project-config.md` + `.raws/index.md` + `.raws/manifest.json` + `.raws/` 分类快照目录 + `docs/` + `.issues/` | 非破坏性,默认跳过已存在文件 |
|
|
37
40
|
| `config setup` | 指导 AI/人工填写 SRS、PRD、Figma、API、测试用例等资源来源 | 非交互提示 |
|
|
38
41
|
| `config check` | 校验 `.zsk/config.yaml` 与 `docs/{module}/module.yaml` | 非交互 |
|
|
39
42
|
| `module init -m <id>` | 从 package 模板生成 `docs/{module}` | 非交互 |
|
|
40
|
-
| `issue create -m <id>` | 从 package 模板生成 issue 目录、`issue.md`、`assets/index.md`、`debug-logs/index.md
|
|
43
|
+
| `issue create -m <id>` | 从 package 模板生成 issue 目录、`issue.md`、`assets/index.md`、`debug-logs/index.md`,并刷新模块/全局索引 | 非交互 |
|
|
44
|
+
| `issue update -m <id> --id <issue-dir> --status <s>` | 更新具体 issue 状态,并刷新 `.issues/{module}/index.md` 与 `.issues/index.md` | 非交互 |
|
|
41
45
|
| `prep` | 根据配置记录 `.raws/manifest.json`,为 AI skills 准备上下文 | 非交互 |
|
|
42
46
|
| `check` | 校验配置、测试资产映射、docs 证据边界、Documentation Feedback 记录 | 非交互 |
|
|
43
47
|
| `doctor` / `lint` | 校验(Phase 4 实现) | stub |
|
|
@@ -54,18 +58,20 @@ zsk check
|
|
|
54
58
|
职责边界:
|
|
55
59
|
|
|
56
60
|
- ZSK CLI:初始化模板、JSON Schema 配置提示、确定性路径和结构校验。
|
|
57
|
-
- AI skills
|
|
61
|
+
- AI skills:`zsk:prepare` 负责资源理解、模块识别、Figma/MCP 获取、Playwright CLI 优先验证、必要时 Browser Use / Computer Use、冲突分析、issue 编写;harness 负责每个 skill 的 I/O、工具/能力、脚本策略、完成产物、issue 索引同步和确认后的文档反哺。
|
|
58
62
|
|
|
59
63
|
生成结构:
|
|
60
64
|
|
|
61
65
|
```text
|
|
62
66
|
.zsk/
|
|
63
67
|
└── config.yaml
|
|
68
|
+
project-config.md
|
|
64
69
|
.raws/
|
|
65
70
|
├── index.md
|
|
66
71
|
├── manifest.json
|
|
67
72
|
├── requirements/index.md
|
|
68
73
|
├── api-contracts/index.md
|
|
74
|
+
├── backend-repositories/index.md
|
|
69
75
|
├── design-sources/index.md
|
|
70
76
|
├── design-assets/index.md
|
|
71
77
|
└── testing/index.md
|
|
@@ -73,7 +79,9 @@ docs/
|
|
|
73
79
|
├── SYSTEM-SPEC.md
|
|
74
80
|
└── _module-index.md
|
|
75
81
|
.issues/
|
|
76
|
-
|
|
82
|
+
├── README.md
|
|
83
|
+
├── index.md
|
|
84
|
+
└── {module}/index.md
|
|
77
85
|
```
|
|
78
86
|
|
|
79
87
|
Schemas 随 npm package 发布。`zsk init` / `zsk module init` 会用当前运行的 CLI 版本写入 versioned unpkg URL 作为编辑器补全提示;项目本地 `.zsk/schemas` 不参与校验。
|
|
@@ -86,7 +94,7 @@ Schemas 随 npm package 发布。`zsk init` / `zsk module init` 会用当前运
|
|
|
86
94
|
|
|
87
95
|
测试用例是一等资产:原始 QA/验收/发布测试用例可以是线上资源或本地文件,也可以快照到 `{paths.raws}`;模块派生场景和自动化映射放 `docs/{module}/` 的 `module.yaml` 和测试说明。AI coding 必须先从这些测试资产写或更新测试,再实现。
|
|
88
96
|
|
|
89
|
-
|
|
97
|
+
每个 skill/stage 完成后必须满足 harness completion contract:产物写到项目模板路径,完成声明链接 evidence,actionable issue 写入配置的 issue 根并刷新模块/全局索引。确认解决后,再把未覆盖或描述不足的行为反哺到 `docs/SYSTEM-SPEC.md`、模块 spec/design/tasks 或记录 no-update rationale。
|
|
90
98
|
|
|
91
99
|
## `zsk add` 向导分支
|
|
92
100
|
|
|
@@ -107,7 +115,7 @@ target-first → 预检 manifest
|
|
|
107
115
|
| Flag | 作用 |
|
|
108
116
|
| --- | --- |
|
|
109
117
|
| `--target <path>` | 目标目录(支持 `~` / 绝对 / 相对);非 TTY 必填 |
|
|
110
|
-
| `--skill <pattern>` | skill 过滤器,可重复;`'*'` = 全部,支持 glob(`zsk
|
|
118
|
+
| `--skill <pattern>` | skill 过滤器,可重复;`'*'` = 全部,支持 glob(`zsk:*mok*`) |
|
|
111
119
|
| `--command <pattern>` / `--agent <pattern>` / `--hook <pattern>` / `--mcp-server <pattern>` / `--prompt <pattern>` | 其他能力类型(语法就位,MVP 空集) |
|
|
112
120
|
| `--yes` | 跳过所有 confirm;非 TTY 必填 |
|
|
113
121
|
|
|
@@ -118,6 +126,7 @@ target-first → 预检 manifest
|
|
|
118
126
|
| `[<pattern>...]` 位置参 | bundle 名(跳套件选择)/ `zsk:<slug>` / glob(跳两屏) |
|
|
119
127
|
| `--on-conflict <mode>` | `skip` / `overwrite` / `backup`(默认 `backup`) |
|
|
120
128
|
| `--dry-run` | 打印计划,不落盘 |
|
|
129
|
+
| `--format <layout>` | `flat`(默认)或 `claude-plugin`;plugin 模式生成 `.claude-plugin/plugin.json`、`commands/` 和 `skills/` |
|
|
121
130
|
|
|
122
131
|
### flag 预填对应步骤
|
|
123
132
|
|
|
@@ -143,11 +152,14 @@ npx @captain_z/zsk add sdlc-only --target=~/.claude/skills --on-conflict=backup
|
|
|
143
152
|
# CI:全量刷新
|
|
144
153
|
npx @captain_z/zsk add --skill='*' --target=~/.claude/skills --on-conflict=backup --yes
|
|
145
154
|
|
|
146
|
-
#
|
|
147
|
-
npx @captain_z/zsk
|
|
155
|
+
# Claude plugin 本地目录(同类结构也可由仓库根 .claude-plugin marketplace 通过 /plugin 安装)
|
|
156
|
+
npx @captain_z/zsk install sdlc-only --target=./.claude-plugin --format=claude-plugin --yes
|
|
157
|
+
|
|
158
|
+
# 追加单颗 core skill
|
|
159
|
+
npx @captain_z/zsk add zsk:smoke --target=~/.claude/skills
|
|
148
160
|
|
|
149
161
|
# glob 装一组
|
|
150
|
-
npx @captain_z/zsk add 'zsk
|
|
162
|
+
npx @captain_z/zsk add 'zsk:*mok*' --target=~/.claude/skills
|
|
151
163
|
|
|
152
164
|
# 预览
|
|
153
165
|
npx @captain_z/zsk add frontend-project --target=~/.claude/skills --dry-run
|
|
@@ -156,10 +168,10 @@ npx @captain_z/zsk add frontend-project --target=~/.claude/skills --dry-run
|
|
|
156
168
|
npx @captain_z/zsk add --target=~/.claude/skills --yes
|
|
157
169
|
|
|
158
170
|
# 移除两颗
|
|
159
|
-
npx @captain_z/zsk remove --target=~/.claude/skills --skill='zsk:
|
|
171
|
+
npx @captain_z/zsk remove --target=~/.claude/skills --skill='zsk:smoke' --skill='zsk:defect' --yes
|
|
160
172
|
|
|
161
173
|
# 按 glob 移除
|
|
162
|
-
npx @captain_z/zsk remove --target=~/.claude/skills 'zsk
|
|
174
|
+
npx @captain_z/zsk remove --target=~/.claude/skills 'zsk:*mok*'
|
|
163
175
|
```
|
|
164
176
|
|
|
165
177
|
## `zsk-manifest.json` 契约
|
package/dist/bin.js
CHANGED
|
@@ -39,6 +39,36 @@ program
|
|
|
39
39
|
"backup",
|
|
40
40
|
]))
|
|
41
41
|
.option("--dry-run", "preview without writing")
|
|
42
|
+
.addOption(new Option("--format <layout>", "flat | claude-plugin").choices([
|
|
43
|
+
"flat",
|
|
44
|
+
"claude-plugin",
|
|
45
|
+
]))
|
|
46
|
+
.option("--skill <pattern>", "skill filter (repeatable; '*' for all, supports glob)", collect)
|
|
47
|
+
.option("--command <pattern>", "command filter (repeatable)", collect)
|
|
48
|
+
.option("--agent <pattern>", "agent filter (repeatable)", collect)
|
|
49
|
+
.option("--hook <pattern>", "hook filter (repeatable)", collect)
|
|
50
|
+
.option("--mcp-server <pattern>", "mcp server filter (repeatable)", collect)
|
|
51
|
+
.option("--prompt <pattern>", "prompt filter (repeatable)", collect)
|
|
52
|
+
.action(async (patterns, opts) => {
|
|
53
|
+
const { run } = await import("./commands/add.js");
|
|
54
|
+
await run(patterns, opts, VERSION);
|
|
55
|
+
});
|
|
56
|
+
program
|
|
57
|
+
.command("install")
|
|
58
|
+
.description("alias for add; install / refresh / append skills")
|
|
59
|
+
.argument("[pattern...]", "bundle name, zsk:<slug>, or glob")
|
|
60
|
+
.option("--target <path>", "install target directory")
|
|
61
|
+
.option("--yes", "non-interactive; defaults to refresh when already installed")
|
|
62
|
+
.addOption(new Option("--on-conflict <mode>", "skip | overwrite | backup").choices([
|
|
63
|
+
"skip",
|
|
64
|
+
"overwrite",
|
|
65
|
+
"backup",
|
|
66
|
+
]))
|
|
67
|
+
.option("--dry-run", "preview without writing")
|
|
68
|
+
.addOption(new Option("--format <layout>", "flat | claude-plugin").choices([
|
|
69
|
+
"flat",
|
|
70
|
+
"claude-plugin",
|
|
71
|
+
]))
|
|
42
72
|
.option("--skill <pattern>", "skill filter (repeatable; '*' for all, supports glob)", collect)
|
|
43
73
|
.option("--command <pattern>", "command filter (repeatable)", collect)
|
|
44
74
|
.option("--agent <pattern>", "agent filter (repeatable)", collect)
|
|
@@ -120,7 +150,7 @@ issueCommand
|
|
|
120
150
|
.description("create an issue folder from packaged templates")
|
|
121
151
|
.requiredOption("-m, --module <id>", "module id")
|
|
122
152
|
.option("--title <title>", "issue title used for the directory slug")
|
|
123
|
-
.option("--type <type>", "issue type", "bug")
|
|
153
|
+
.option("--type <type>", "issue type: bug, demo, smoke, review, defect, verify, acceptance", "bug")
|
|
124
154
|
.option("--severity <severity>", "issue severity", "P1")
|
|
125
155
|
.option("--target <path>", "project directory (default: cwd)")
|
|
126
156
|
.option("--overwrite", "overwrite existing files")
|
|
@@ -128,6 +158,19 @@ issueCommand
|
|
|
128
158
|
const { create } = await import("./commands/issue.js");
|
|
129
159
|
await create(opts);
|
|
130
160
|
});
|
|
161
|
+
issueCommand
|
|
162
|
+
.command("update")
|
|
163
|
+
.description("update an issue status and refresh module/global issue indexes")
|
|
164
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
165
|
+
.requiredOption("--id <id>", "issue directory name, for example BUG-0001-api-gap")
|
|
166
|
+
.requiredOption("--status <status>", "issue status, for example Open, Verified, Accepted, Closed")
|
|
167
|
+
.option("--note <note>", "status update note")
|
|
168
|
+
.option("--confirmed-at <date>", "confirmation date or timestamp")
|
|
169
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
170
|
+
.action(async (opts) => {
|
|
171
|
+
const { update } = await import("./commands/issue.js");
|
|
172
|
+
await update(opts);
|
|
173
|
+
});
|
|
131
174
|
issueCommand
|
|
132
175
|
.command("list")
|
|
133
176
|
.description("list module issues")
|
|
@@ -137,6 +180,136 @@ issueCommand
|
|
|
137
180
|
const { list } = await import("./commands/issue.js");
|
|
138
181
|
await list(opts);
|
|
139
182
|
});
|
|
183
|
+
const demoCommand = program
|
|
184
|
+
.command("demo")
|
|
185
|
+
.description("manage interruptible development demo sessions and evidence");
|
|
186
|
+
demoCommand
|
|
187
|
+
.command("start")
|
|
188
|
+
.description("start a module demo session")
|
|
189
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
190
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
191
|
+
.option("--note <note>", "session note")
|
|
192
|
+
.action(async (opts) => {
|
|
193
|
+
const { start } = await import("./commands/demo.js");
|
|
194
|
+
await start(opts);
|
|
195
|
+
});
|
|
196
|
+
demoCommand
|
|
197
|
+
.command("pause")
|
|
198
|
+
.description("pause a module demo session and persist the cursor")
|
|
199
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
200
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
201
|
+
.option("--note <note>", "pause reason")
|
|
202
|
+
.action(async (opts) => {
|
|
203
|
+
const { pause } = await import("./commands/demo.js");
|
|
204
|
+
await pause(opts);
|
|
205
|
+
});
|
|
206
|
+
demoCommand
|
|
207
|
+
.command("resume")
|
|
208
|
+
.description("resume a paused module demo session")
|
|
209
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
210
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
211
|
+
.option("--note <note>", "resume note")
|
|
212
|
+
.action(async (opts) => {
|
|
213
|
+
const { resume } = await import("./commands/demo.js");
|
|
214
|
+
await resume(opts);
|
|
215
|
+
});
|
|
216
|
+
demoCommand
|
|
217
|
+
.command("terminate")
|
|
218
|
+
.description("terminate a demo session without marking the module ready for test")
|
|
219
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
220
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
221
|
+
.option("--note <note>", "termination reason")
|
|
222
|
+
.action(async (opts) => {
|
|
223
|
+
const { terminate } = await import("./commands/demo.js");
|
|
224
|
+
await terminate(opts);
|
|
225
|
+
});
|
|
226
|
+
demoCommand
|
|
227
|
+
.command("complete")
|
|
228
|
+
.description("complete a demo session and update workflow state")
|
|
229
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
230
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
231
|
+
.option("--note <note>", "completion note")
|
|
232
|
+
.action(async (opts) => {
|
|
233
|
+
const { complete } = await import("./commands/demo.js");
|
|
234
|
+
await complete(opts);
|
|
235
|
+
});
|
|
236
|
+
demoCommand
|
|
237
|
+
.command("run")
|
|
238
|
+
.description("prepare a scripted, Playwright, Browser Use, Computer Use, or hybrid demo run")
|
|
239
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
240
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
241
|
+
.option("--playwright", "use Playwright automation lane")
|
|
242
|
+
.option("--computer-use", "use explicit Computer Use visual/system fallback; combine with --playwright for hybrid bridge")
|
|
243
|
+
.option("--hybrid", "use the configured decision tool, then Playwright for execution/recording")
|
|
244
|
+
.option("--note <note>", "run note")
|
|
245
|
+
.action(async (opts) => {
|
|
246
|
+
const { run } = await import("./commands/demo.js");
|
|
247
|
+
await run(opts);
|
|
248
|
+
});
|
|
249
|
+
demoCommand
|
|
250
|
+
.command("capture")
|
|
251
|
+
.description("record a demo evidence capture placeholder")
|
|
252
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
253
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
254
|
+
.option("--note <note>", "capture note")
|
|
255
|
+
.action(async (opts) => {
|
|
256
|
+
const { capture } = await import("./commands/demo.js");
|
|
257
|
+
await capture(opts);
|
|
258
|
+
});
|
|
259
|
+
const demoScenarioCommand = demoCommand
|
|
260
|
+
.command("scenario")
|
|
261
|
+
.description("manage reusable demo scenarios");
|
|
262
|
+
demoCommand
|
|
263
|
+
.command("mcp-config")
|
|
264
|
+
.description("print or write Playwright MCP server configuration")
|
|
265
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
266
|
+
.option("--write", "write to .zsk/mcp/playwright.json")
|
|
267
|
+
.action(async (opts) => {
|
|
268
|
+
const { mcpConfig } = await import("./commands/demo.js");
|
|
269
|
+
await mcpConfig(opts);
|
|
270
|
+
});
|
|
271
|
+
demoScenarioCommand
|
|
272
|
+
.command("list")
|
|
273
|
+
.description("show the configured scenario directory")
|
|
274
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
275
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
276
|
+
.action(async (opts) => {
|
|
277
|
+
const { scenarioList } = await import("./commands/demo.js");
|
|
278
|
+
await scenarioList(opts);
|
|
279
|
+
});
|
|
280
|
+
demoScenarioCommand
|
|
281
|
+
.command("record")
|
|
282
|
+
.description("record a scenario placeholder from demo observations")
|
|
283
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
284
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
285
|
+
.option("--note <note>", "scenario note")
|
|
286
|
+
.action(async (opts) => {
|
|
287
|
+
const { scenarioRecord } = await import("./commands/demo.js");
|
|
288
|
+
await scenarioRecord(opts);
|
|
289
|
+
});
|
|
290
|
+
demoScenarioCommand
|
|
291
|
+
.command("promote")
|
|
292
|
+
.description("promote the current demo session into a reusable scenario")
|
|
293
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
294
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
295
|
+
.option("--note <note>", "promotion note")
|
|
296
|
+
.action(async (opts) => {
|
|
297
|
+
const { scenarioPromote } = await import("./commands/demo.js");
|
|
298
|
+
await scenarioPromote(opts);
|
|
299
|
+
});
|
|
300
|
+
demoScenarioCommand
|
|
301
|
+
.command("generate")
|
|
302
|
+
.description("generate a Playwright scenario skeleton from test cases, structured page info, and Browser Use handoffs")
|
|
303
|
+
.requiredOption("-m, --module <id>", "module id")
|
|
304
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
305
|
+
.option("--test-case <path>", "project-relative test case file")
|
|
306
|
+
.option("--snapshot <path>", "project-relative Playwright MCP aria/accessibility snapshot file")
|
|
307
|
+
.option("--name <name>", "scenario/test name")
|
|
308
|
+
.option("--note <note>", "generation note")
|
|
309
|
+
.action(async (opts) => {
|
|
310
|
+
const { scenarioGenerate } = await import("./commands/demo.js");
|
|
311
|
+
await scenarioGenerate(opts);
|
|
312
|
+
});
|
|
140
313
|
program
|
|
141
314
|
.command("prep")
|
|
142
315
|
.description("prepare project context from .zsk/config.yaml and update raw manifest")
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,7 +63,7 @@ function buildBundleSummary(skills) {
|
|
|
63
63
|
export function buildSkillMultiselectOptions(groups) {
|
|
64
64
|
const seen = new Set();
|
|
65
65
|
const options = [];
|
|
66
|
-
for (const [
|
|
66
|
+
for (const [groupName, skills] of Object.entries(groups)) {
|
|
67
67
|
for (const skill of skills) {
|
|
68
68
|
if (seen.has(skill.value))
|
|
69
69
|
continue;
|
|
@@ -71,7 +71,7 @@ export function buildSkillMultiselectOptions(groups) {
|
|
|
71
71
|
options.push({
|
|
72
72
|
value: skill.value,
|
|
73
73
|
label: skill.label,
|
|
74
|
-
hint:
|
|
74
|
+
hint: groupName,
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -104,12 +104,7 @@ export function resolveGroupedSkillChoices(choices, groups) {
|
|
|
104
104
|
}
|
|
105
105
|
function formatSkillGroupLabel(groupName) {
|
|
106
106
|
const labels = {
|
|
107
|
-
|
|
108
|
-
frontend: "Web 前端",
|
|
109
|
-
quality: "质量与安全",
|
|
110
|
-
"design-handoff": "设计交付",
|
|
111
|
-
system: "系统文档",
|
|
112
|
-
meta: "元说明",
|
|
107
|
+
core: "Core 工作流",
|
|
113
108
|
missing: "未分类",
|
|
114
109
|
};
|
|
115
110
|
return labels[groupName] ?? groupName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-flow.js","sourceRoot":"","sources":["../../src/commands/add-flow.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"add-flow.js","sourceRoot":"","sources":["../../src/commands/add-flow.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/add.d.ts
CHANGED
package/dist/commands/add.js
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
// - Writes zsk-manifest.json on success so future runs can branch correctly.
|
|
8
8
|
import pc from "picocolors";
|
|
9
9
|
import { readFile, access } from "node:fs/promises";
|
|
10
|
-
import { join } from "node:path";
|
|
10
|
+
import { basename, join } from "node:path";
|
|
11
11
|
import { intro, outro, select, multiselect, cascadingGroupMultiselect, text, log, spinner, note, } from "../ui/prompts.js";
|
|
12
12
|
import { loadBundles } from "../core/bundles.js";
|
|
13
13
|
import { enumerateSkills, loadSkill, DOMAINS, } from "../core/skills.js";
|
|
14
14
|
import { TARGET_OPTIONS, resolvePath, } from "../core/targets.js";
|
|
15
|
-
import { install } from "../core/installer.js";
|
|
15
|
+
import { install, skillRelPath } from "../core/installer.js";
|
|
16
16
|
import { fileExists } from "../core/scaffolder.js";
|
|
17
17
|
import { readManifest, writeManifest, buildManifest, detectDrift, sha256File, } from "../core/manifest.js";
|
|
18
18
|
import { expandCapabilityFilters, classifyPattern, hasCapabilityFilter, } from "../core/capabilities.js";
|
|
@@ -98,6 +98,7 @@ export async function run(positional, opts, zskVersion) {
|
|
|
98
98
|
mode,
|
|
99
99
|
skills: await askRefreshScope(explicitManifest, drift, opts),
|
|
100
100
|
bundle: explicitManifest.bundle,
|
|
101
|
+
layout: inferInstallLayout(explicitTargetPath, opts),
|
|
101
102
|
};
|
|
102
103
|
}
|
|
103
104
|
else {
|
|
@@ -113,6 +114,7 @@ export async function run(positional, opts, zskVersion) {
|
|
|
113
114
|
mode,
|
|
114
115
|
skills: picked.skills,
|
|
115
116
|
bundle: picked.bundle ?? explicitManifest.bundle,
|
|
117
|
+
layout: inferInstallLayout(explicitTargetPath, opts),
|
|
116
118
|
};
|
|
117
119
|
}
|
|
118
120
|
}
|
|
@@ -147,6 +149,7 @@ export async function run(positional, opts, zskVersion) {
|
|
|
147
149
|
mode,
|
|
148
150
|
skills: await askRefreshScope(manifest, drift, opts),
|
|
149
151
|
bundle: manifest.bundle,
|
|
152
|
+
layout: inferInstallLayout(targetPath, opts),
|
|
150
153
|
};
|
|
151
154
|
}
|
|
152
155
|
else {
|
|
@@ -156,6 +159,7 @@ export async function run(positional, opts, zskVersion) {
|
|
|
156
159
|
mode,
|
|
157
160
|
skills: picked.skills,
|
|
158
161
|
bundle: manifest ? picked.bundle ?? manifest.bundle : picked.bundle,
|
|
162
|
+
layout: inferInstallLayout(targetPath, opts),
|
|
159
163
|
};
|
|
160
164
|
}
|
|
161
165
|
}
|
|
@@ -167,7 +171,7 @@ export async function run(positional, opts, zskVersion) {
|
|
|
167
171
|
note([
|
|
168
172
|
`[dry-run] 将处理 1 个安装位置`,
|
|
169
173
|
"",
|
|
170
|
-
`${pc.cyan(plan.targetPath)} · ${plan.mode} · ${plan.skills.length} 个 skill`,
|
|
174
|
+
`${pc.cyan(plan.targetPath)} · ${plan.mode} · ${plan.layout} · ${plan.skills.length} 个 skill`,
|
|
171
175
|
...plan.skills.map((name) => ` + ${name}`),
|
|
172
176
|
].join("\n"), "预览");
|
|
173
177
|
outro("完成 (dry-run)");
|
|
@@ -181,6 +185,8 @@ export async function run(positional, opts, zskVersion) {
|
|
|
181
185
|
result = await install({
|
|
182
186
|
skills: plan.skills,
|
|
183
187
|
target: plan.targetPath,
|
|
188
|
+
layout: plan.layout,
|
|
189
|
+
zskVersion,
|
|
184
190
|
onConflict,
|
|
185
191
|
dryRun: false,
|
|
186
192
|
});
|
|
@@ -191,7 +197,7 @@ export async function run(positional, opts, zskVersion) {
|
|
|
191
197
|
throw err;
|
|
192
198
|
}
|
|
193
199
|
// Step 6 — update manifest (merge with existing for append mode)
|
|
194
|
-
const records = await buildRecords(plan.skills, plan.targetPath, zskVersion);
|
|
200
|
+
const records = await buildRecords(plan.skills, plan.targetPath, plan.layout, zskVersion);
|
|
195
201
|
const mergedSkills = mergeSkillRecords(plan.mode === "append" ? plan.manifest?.skills ?? [] : [], records);
|
|
196
202
|
await writeManifest(plan.targetPath, buildManifest({
|
|
197
203
|
zskVersion,
|
|
@@ -421,12 +427,12 @@ async function askConflict(opts, mode) {
|
|
|
421
427
|
function isConflictMode(v) {
|
|
422
428
|
return v === "skip" || v === "overwrite" || v === "backup";
|
|
423
429
|
}
|
|
424
|
-
async function buildRecords(skillNames, targetPath, zskVersion) {
|
|
430
|
+
async function buildRecords(skillNames, targetPath, layout, zskVersion) {
|
|
425
431
|
const out = [];
|
|
426
432
|
for (const name of skillNames) {
|
|
427
433
|
try {
|
|
428
434
|
const skill = await loadSkill(name);
|
|
429
|
-
const relPath =
|
|
435
|
+
const relPath = skillRelPath(skill, layout);
|
|
430
436
|
const buf = await readFile(join(targetPath, relPath));
|
|
431
437
|
out.push({
|
|
432
438
|
name,
|
|
@@ -441,6 +447,16 @@ async function buildRecords(skillNames, targetPath, zskVersion) {
|
|
|
441
447
|
}
|
|
442
448
|
return out;
|
|
443
449
|
}
|
|
450
|
+
function inferInstallLayout(targetPath, opts) {
|
|
451
|
+
if (opts.format === "claude-plugin")
|
|
452
|
+
return "claude-plugin";
|
|
453
|
+
if (opts.format === "flat")
|
|
454
|
+
return "flat";
|
|
455
|
+
const base = basename(targetPath);
|
|
456
|
+
return base === ".claude-plugin" || base === "claude-plugin"
|
|
457
|
+
? "claude-plugin"
|
|
458
|
+
: "flat";
|
|
459
|
+
}
|
|
444
460
|
function mergeSkillRecords(existing, fresh) {
|
|
445
461
|
const map = new Map();
|
|
446
462
|
for (const e of existing)
|