@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EACL,KAAK,EACL,QAAQ,EACR,EAAE,EACF,MAAM,EACN,OAAO,EACP,MAAM,
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/core/skills.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const DOMAINS: readonly ["
|
|
1
|
+
declare const DOMAINS: readonly ["core"];
|
|
2
2
|
export type Domain = (typeof DOMAINS)[number];
|
|
3
3
|
export type Skill = {
|
|
4
4
|
name: string;
|
|
@@ -9,9 +9,8 @@ export type Skill = {
|
|
|
9
9
|
export declare function resolveSkillsRoot(): Promise<string>;
|
|
10
10
|
export declare function loadSkill(skillName: string): Promise<Skill>;
|
|
11
11
|
/**
|
|
12
|
-
* Enumerate every installable skill by walking the skills root directly.
|
|
13
|
-
* Returns names in `zsk:<slug>` form, sorted by
|
|
14
|
-
* groupings are stable across runs.
|
|
12
|
+
* Enumerate every installable core skill by walking the skills root directly.
|
|
13
|
+
* Returns names in `zsk:<slug>` form, sorted by slug.
|
|
15
14
|
*/
|
|
16
15
|
export declare function enumerateSkills(): Promise<Skill[]>;
|
|
17
16
|
export { DOMAINS };
|
package/dist/core/skills.js
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
// Skill resolution: zsk:<slug> → filesystem SKILL.md path +
|
|
1
|
+
// Skill resolution: zsk:<slug> → filesystem SKILL.md path + install metadata.
|
|
2
2
|
//
|
|
3
3
|
// Dev (monorepo): resolves via ../../../../capabilities/skills/
|
|
4
|
-
// Production: resolves via @captain_z/zsk-skills
|
|
4
|
+
// Production: resolves via @captain_z/zsk-skills package root
|
|
5
5
|
import { access, readdir } from "node:fs/promises";
|
|
6
6
|
import { dirname, resolve } from "node:path";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import { createRequire } from "node:module";
|
|
9
|
-
const DOMAINS = [
|
|
10
|
-
"sdlc",
|
|
11
|
-
"frontend",
|
|
12
|
-
"quality",
|
|
13
|
-
"design-handoff",
|
|
14
|
-
"system",
|
|
15
|
-
"meta",
|
|
16
|
-
];
|
|
9
|
+
const DOMAINS = ["core"];
|
|
17
10
|
let skillsRootCache = null;
|
|
18
11
|
export async function resolveSkillsRoot() {
|
|
19
12
|
if (skillsRootCache)
|
|
@@ -29,7 +22,7 @@ export async function resolveSkillsRoot() {
|
|
|
29
22
|
catch {
|
|
30
23
|
// fall through
|
|
31
24
|
}
|
|
32
|
-
// Production: @captain_z/zsk-skills package
|
|
25
|
+
// Production: @captain_z/zsk-skills package ships skill dirs at package root.
|
|
33
26
|
const require = createRequire(import.meta.url);
|
|
34
27
|
const pkgPath = require.resolve("@captain_z/zsk-skills/package.json");
|
|
35
28
|
const skillsDir = dirname(pkgPath);
|
|
@@ -39,50 +32,48 @@ export async function resolveSkillsRoot() {
|
|
|
39
32
|
export async function loadSkill(skillName) {
|
|
40
33
|
const slug = skillName.replace(/^zsk:/, "");
|
|
41
34
|
const root = await resolveSkillsRoot();
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return { name: skillName, domain, slug, file };
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
// try next domain
|
|
50
|
-
}
|
|
35
|
+
const file = resolve(root, slug, "SKILL.md");
|
|
36
|
+
try {
|
|
37
|
+
await access(file);
|
|
38
|
+
return { name: skillName, domain: "core", slug, file };
|
|
51
39
|
}
|
|
52
|
-
|
|
40
|
+
catch {
|
|
41
|
+
// fall through
|
|
42
|
+
}
|
|
43
|
+
throw new Error(`Core skill not found: ${skillName}`);
|
|
53
44
|
}
|
|
54
45
|
/**
|
|
55
|
-
* Enumerate every installable skill by walking the skills root directly.
|
|
56
|
-
* Returns names in `zsk:<slug>` form, sorted by
|
|
57
|
-
* groupings are stable across runs.
|
|
46
|
+
* Enumerate every installable core skill by walking the skills root directly.
|
|
47
|
+
* Returns names in `zsk:<slug>` form, sorted by slug.
|
|
58
48
|
*/
|
|
59
49
|
export async function enumerateSkills() {
|
|
60
50
|
const root = await resolveSkillsRoot();
|
|
61
51
|
const out = [];
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
52
|
+
const seen = new Set();
|
|
53
|
+
let entries;
|
|
54
|
+
try {
|
|
55
|
+
entries = await readdir(root, { withFileTypes: true });
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
entries = [];
|
|
59
|
+
}
|
|
60
|
+
for (const e of entries) {
|
|
61
|
+
if (!e.isDirectory())
|
|
62
|
+
continue;
|
|
63
|
+
const file = resolve(root, e.name, "SKILL.md");
|
|
65
64
|
try {
|
|
66
|
-
|
|
65
|
+
await access(file);
|
|
67
66
|
}
|
|
68
67
|
catch {
|
|
69
|
-
continue; //
|
|
70
|
-
}
|
|
71
|
-
for (const e of entries) {
|
|
72
|
-
if (!e.isDirectory())
|
|
73
|
-
continue;
|
|
74
|
-
const file = resolve(domainDir, e.name, "SKILL.md");
|
|
75
|
-
try {
|
|
76
|
-
await access(file);
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
continue; // directory without SKILL.md → not a skill
|
|
80
|
-
}
|
|
81
|
-
out.push({ name: `zsk:${e.name}`, domain, slug: e.name, file });
|
|
68
|
+
continue; // directory without SKILL.md → not a skill
|
|
82
69
|
}
|
|
70
|
+
const name = `zsk:${e.name}`;
|
|
71
|
+
if (seen.has(name))
|
|
72
|
+
continue;
|
|
73
|
+
seen.add(name);
|
|
74
|
+
out.push({ name, domain: "core", slug: e.name, file });
|
|
83
75
|
}
|
|
84
|
-
out.sort((a, b) =>
|
|
85
|
-
a.slug.localeCompare(b.slug));
|
|
76
|
+
out.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
86
77
|
return out;
|
|
87
78
|
}
|
|
88
79
|
export { DOMAINS };
|
package/dist/core/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/core/targets.js
CHANGED
|
@@ -18,7 +18,7 @@ export const TARGET_OPTIONS = [
|
|
|
18
18
|
{
|
|
19
19
|
kind: "claude-plugin",
|
|
20
20
|
label: "./.claude-plugin/",
|
|
21
|
-
hint: "Claude 插件形态(生成
|
|
21
|
+
hint: "Claude 插件形态(生成 plugin.json + commands/ + skills/)",
|
|
22
22
|
resolve: () => resolve(process.cwd(), ".claude-plugin"),
|
|
23
23
|
},
|
|
24
24
|
{
|
package/dist/core/targets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/core/targets.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,0DAA0D;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAiBhD,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC;KACpD;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/core/targets.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,0DAA0D;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAiBhD,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC;KACpD;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,mDAAmD;QACzD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC;KACnD;IACD;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC;KACvD;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB;CACF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@captain_z/zsk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.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",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"commander": "^12.1.0",
|
|
21
21
|
"picocolors": "^1.1.1",
|
|
22
22
|
"yaml": "^2.7.0",
|
|
23
|
-
"@captain_z/zsk-skills": "1.
|
|
23
|
+
"@captain_z/zsk-skills": "1.5.1"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/node": "^22.10.0",
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
"toolName": {
|
|
202
202
|
"description": "Known runtime/design verification tool.",
|
|
203
203
|
"type": "string",
|
|
204
|
-
"enum": ["computer_use", "browser_use", "figma_mcp", "script", "manual", "skill"]
|
|
204
|
+
"enum": ["computer_use", "browser_use", "playwright", "playwright_cli", "playwright_mcp", "figma_mcp", "script", "manual", "skill"]
|
|
205
205
|
},
|
|
206
206
|
"metadata": {
|
|
207
207
|
"description": "Explicit extension point for project-specific metadata.",
|
|
@@ -104,6 +104,105 @@
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
|
+
"automation": {
|
|
108
|
+
"description": "Harness automation defaults for workflow stages.",
|
|
109
|
+
"type": "object",
|
|
110
|
+
"additionalProperties": false,
|
|
111
|
+
"properties": {
|
|
112
|
+
"smoke": {
|
|
113
|
+
"$ref": "#/$defs/commandStage"
|
|
114
|
+
},
|
|
115
|
+
"deploy": {
|
|
116
|
+
"$ref": "#/$defs/commandStage"
|
|
117
|
+
},
|
|
118
|
+
"demo": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"additionalProperties": false,
|
|
121
|
+
"properties": {
|
|
122
|
+
"defaultMode": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"enum": ["manual", "script", "playwright", "computer-use", "hybrid"]
|
|
125
|
+
},
|
|
126
|
+
"baseUrl": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"minLength": 1
|
|
129
|
+
},
|
|
130
|
+
"command": {
|
|
131
|
+
"type": "string",
|
|
132
|
+
"minLength": 1
|
|
133
|
+
},
|
|
134
|
+
"evidenceDir": {
|
|
135
|
+
"$ref": "#/$defs/pathRef"
|
|
136
|
+
},
|
|
137
|
+
"scenarioDir": {
|
|
138
|
+
"$ref": "#/$defs/pathRef"
|
|
139
|
+
},
|
|
140
|
+
"playwright": {
|
|
141
|
+
"type": "object",
|
|
142
|
+
"additionalProperties": false,
|
|
143
|
+
"properties": {
|
|
144
|
+
"config": {
|
|
145
|
+
"$ref": "#/$defs/pathRef"
|
|
146
|
+
},
|
|
147
|
+
"project": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"minLength": 1
|
|
150
|
+
},
|
|
151
|
+
"cli": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"minLength": 1
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"computerUse": {
|
|
158
|
+
"type": "object",
|
|
159
|
+
"additionalProperties": false,
|
|
160
|
+
"properties": {
|
|
161
|
+
"enabled": {
|
|
162
|
+
"type": "boolean"
|
|
163
|
+
},
|
|
164
|
+
"role": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"const": "understand-and-decide"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
"bridge": {
|
|
171
|
+
"type": "object",
|
|
172
|
+
"additionalProperties": false,
|
|
173
|
+
"properties": {
|
|
174
|
+
"enabled": {
|
|
175
|
+
"type": "boolean"
|
|
176
|
+
},
|
|
177
|
+
"decisionTool": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"enum": ["browser_use", "computer_use", "playwright_mcp"]
|
|
180
|
+
},
|
|
181
|
+
"executionTool": {
|
|
182
|
+
"type": "string",
|
|
183
|
+
"enum": ["playwright"]
|
|
184
|
+
},
|
|
185
|
+
"planFile": {
|
|
186
|
+
"$ref": "#/$defs/pathRef"
|
|
187
|
+
},
|
|
188
|
+
"executionFile": {
|
|
189
|
+
"$ref": "#/$defs/pathRef"
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"metadata": {
|
|
194
|
+
"$ref": "#/$defs/metadata"
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"verify": {
|
|
199
|
+
"$ref": "#/$defs/commandStage"
|
|
200
|
+
},
|
|
201
|
+
"metadata": {
|
|
202
|
+
"$ref": "#/$defs/metadata"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
107
206
|
"sync": {
|
|
108
207
|
"description": "Optional deterministic or AI-assisted raw resource sync configuration.",
|
|
109
208
|
"type": "object",
|
|
@@ -124,12 +223,33 @@
|
|
|
124
223
|
"toolName": {
|
|
125
224
|
"description": "Known tool or capability name.",
|
|
126
225
|
"type": "string",
|
|
127
|
-
"enum": ["computer_use", "browser_use", "figma_mcp", "script", "manual", "skill"]
|
|
226
|
+
"enum": ["computer_use", "browser_use", "playwright", "playwright_cli", "playwright_mcp", "figma_mcp", "script", "manual", "skill"]
|
|
227
|
+
},
|
|
228
|
+
"commandStage": {
|
|
229
|
+
"description": "Automation command list for a workflow stage.",
|
|
230
|
+
"type": "object",
|
|
231
|
+
"additionalProperties": false,
|
|
232
|
+
"properties": {
|
|
233
|
+
"command": {
|
|
234
|
+
"type": "string",
|
|
235
|
+
"minLength": 1
|
|
236
|
+
},
|
|
237
|
+
"commands": {
|
|
238
|
+
"type": "array",
|
|
239
|
+
"items": {
|
|
240
|
+
"type": "string",
|
|
241
|
+
"minLength": 1
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"metadata": {
|
|
245
|
+
"$ref": "#/$defs/metadata"
|
|
246
|
+
}
|
|
247
|
+
}
|
|
128
248
|
},
|
|
129
249
|
"sourceType": {
|
|
130
250
|
"description": "Resource role.",
|
|
131
251
|
"type": "string",
|
|
132
|
-
"enum": ["srs", "prd", "design", "api_contract", "test_case", "design_asset", "vendor_doc", "manual"]
|
|
252
|
+
"enum": ["srs", "prd", "design", "api_contract", "backend_repo", "test_case", "design_asset", "vendor_doc", "manual"]
|
|
133
253
|
},
|
|
134
254
|
"sourceRef": {
|
|
135
255
|
"description": "Resource source reference.",
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
# __ISSUE_ID__-__ISSUE_SLUG__
|
|
2
2
|
|
|
3
|
+
## 问题类型
|
|
4
|
+
|
|
5
|
+
__ISSUE_TYPE__
|
|
6
|
+
|
|
3
7
|
## 问题级别
|
|
4
8
|
|
|
5
9
|
__SEVERITY__
|
|
6
10
|
|
|
11
|
+
## 严重性理由
|
|
12
|
+
|
|
13
|
+
- 用户/业务影响:
|
|
14
|
+
- 阻塞范围:
|
|
15
|
+
- 是否有 workaround:
|
|
16
|
+
|
|
7
17
|
## 模块
|
|
8
18
|
|
|
9
19
|
`__MODULE_ID__`
|
|
@@ -22,7 +32,7 @@ __SEVERITY__
|
|
|
22
32
|
|
|
23
33
|
1.
|
|
24
34
|
|
|
25
|
-
##
|
|
35
|
+
## 实际结果(当前现状)
|
|
26
36
|
|
|
27
37
|
|
|
28
38
|
## 预期结果
|
|
@@ -36,10 +46,33 @@ __SEVERITY__
|
|
|
36
46
|
## 影响范围
|
|
37
47
|
|
|
38
48
|
|
|
39
|
-
##
|
|
49
|
+
## 根因分析
|
|
50
|
+
|
|
51
|
+
- 初步根因:
|
|
52
|
+
- 置信度:
|
|
53
|
+
- 受影响代码/配置/资源:
|
|
54
|
+
- 排除过的原因:
|
|
55
|
+
|
|
56
|
+
## 修复路线
|
|
57
|
+
|
|
58
|
+
- 路由:Coding / Spec 更新 / Design 更新 / 测试数据 / 环境 / 无效问题
|
|
59
|
+
- Owner:
|
|
60
|
+
- 回归保护:测试 / 场景 / lint / checklist / 豁免
|
|
61
|
+
|
|
62
|
+
## Documentation Feedback
|
|
63
|
+
|
|
64
|
+
- 需要反哺的文档:
|
|
65
|
+
- [ ] `docs/{module}/spec.md`
|
|
66
|
+
- [ ] `docs/{module}/design.md`
|
|
67
|
+
- [ ] `docs/{module}/tasks.md`
|
|
68
|
+
- [ ] `docs/SYSTEM-SPEC.md`
|
|
69
|
+
- [ ] `.zsk/learning/proposals`
|
|
70
|
+
- 更新内容或 no-update rationale:
|
|
71
|
+
- 反哺时机:修复通过 verify 且经用户/产品确认后执行
|
|
40
72
|
|
|
41
73
|
|
|
42
74
|
## 状态
|
|
43
75
|
|
|
44
76
|
- 状态:Open
|
|
45
77
|
- 复测:
|
|
78
|
+
- 确认时间:
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# __MODULE_NAME__ Acceptance
|
|
2
|
+
|
|
3
|
+
## Verdict
|
|
4
|
+
|
|
5
|
+
- Result: NOT_STARTED
|
|
6
|
+
- Accepted by:
|
|
7
|
+
- Date:
|
|
8
|
+
|
|
9
|
+
## Evidence Summary
|
|
10
|
+
|
|
11
|
+
| Source | Conclusion | Link |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
|
|
14
|
+
## Documentation Feedback
|
|
15
|
+
|
|
16
|
+
- No-update rationale:
|
|
17
|
+
- Created from the ZSK module template; no acceptance has been performed yet.
|
|
18
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# __MODULE_NAME__ Archive
|
|
2
|
+
|
|
3
|
+
## Closure
|
|
4
|
+
|
|
5
|
+
| Item | Link |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
|
|
8
|
+
## Learning Proposals
|
|
9
|
+
|
|
10
|
+
| Finding | Target | Evidence |
|
|
11
|
+
| --- | --- | --- |
|
|
12
|
+
|
|
13
|
+
## Documentation Feedback
|
|
14
|
+
|
|
15
|
+
- No-update rationale:
|
|
16
|
+
- Created from the ZSK module template; archive has not run yet.
|
|
17
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# __MODULE_NAME__ Commit
|
|
2
|
+
|
|
3
|
+
## Commit Evidence
|
|
4
|
+
|
|
5
|
+
| Item | Evidence |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| Review gate | |
|
|
8
|
+
| Smoke gate | |
|
|
9
|
+
| Commit | |
|
|
10
|
+
|
|
11
|
+
## Documentation Feedback
|
|
12
|
+
|
|
13
|
+
- No-update rationale:
|
|
14
|
+
- Created from the ZSK module template; no commit evidence has been captured yet.
|
|
15
|
+
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# __MODULE_NAME__ Demo Outline
|
|
2
|
+
|
|
3
|
+
## Demo Flow
|
|
4
|
+
|
|
5
|
+
Use this section as the speaking order. The audience should be able to follow the demo from top to bottom without reading any appendix.
|
|
6
|
+
|
|
7
|
+
| Step | Show | Function / Business Point | Scenario | Source Alignment | Playwright Case | Presenter Line | Expected Visible Result | Next |
|
|
8
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
9
|
+
| 1 | Starting state and primary goal | | | PRD/SRS + Spec + Task + Test | `scenarios/<case>.spec.ts` | | | 2 |
|
|
10
|
+
| 2 | Core happy path / main value | | | PRD/SRS + Spec + Task + Test | `scenarios/<case>.spec.ts` | | | 3 |
|
|
11
|
+
| 3 | Required branch / role / validation / edge | | | PRD/SRS + Spec + Task + Test | `scenarios/<case>.spec.ts` | | | Final |
|
|
12
|
+
| Final | Final state, evidence, and known gaps | | | PRD/SRS + Spec + Task + Test | | summarize evidence and known gaps | | close |
|
|
13
|
+
|
|
14
|
+
## Opening
|
|
15
|
+
|
|
16
|
+
- Audience:
|
|
17
|
+
- One-sentence goal:
|
|
18
|
+
- Starting state:
|
|
19
|
+
- Primary user journey:
|
|
20
|
+
- What this demo proves:
|
|
21
|
+
|
|
22
|
+
## Coverage Alignment
|
|
23
|
+
|
|
24
|
+
Every required function point in the PRD/SRS should appear here, either as a demo step or as a known gap.
|
|
25
|
+
|
|
26
|
+
| Function / Business Point | PRD / SRS Need | Spec / Design Contract | Task Scope | Test Case / Assertion | Demo Step | Status |
|
|
27
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
28
|
+
| | | | | | 1 | covered |
|
|
29
|
+
| | | | | | 2 | covered |
|
|
30
|
+
| | | | | | 3 | covered |
|
|
31
|
+
|
|
32
|
+
## Rehearsal Checklist
|
|
33
|
+
|
|
34
|
+
| Demo Step | Browser Use Handoff | Playwright Case | Rehearsed | Evidence | Ready |
|
|
35
|
+
| --- | --- | --- | --- | --- | --- |
|
|
36
|
+
| 1 | | | no | trace/report/screenshot | no |
|
|
37
|
+
| 2 | | | no | trace/report/screenshot | no |
|
|
38
|
+
| 3 | | | no | trace/report/screenshot | no |
|
|
39
|
+
|
|
40
|
+
## Pause Rules
|
|
41
|
+
|
|
42
|
+
- Pause if login/session state is lost.
|
|
43
|
+
- Pause if the UI no longer matches the prepared Playwright case.
|
|
44
|
+
- Pause if a P0/P1 function point cannot be shown.
|
|
45
|
+
- Do not improvise new clicks during the external demo; record the blocker and return to Demo Prep.
|
|
46
|
+
|
|
47
|
+
## Appendix: Prep Sources
|
|
48
|
+
|
|
49
|
+
| Source | Path / Link | Used For |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
| SRS / PRD | | user goal and scope |
|
|
52
|
+
| Spec / AC | | observable pass criteria |
|
|
53
|
+
| Test cases | | scenario steps and expected result |
|
|
54
|
+
| Browser Use handoff | | login state, visible target, candidate locators |
|
|
55
|
+
|
|
56
|
+
## Documentation Feedback
|
|
57
|
+
|
|
58
|
+
- No-update rationale:
|
|
59
|
+
- Created from the ZSK module template; no demo outline has been generated yet.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# __MODULE_NAME__ Demo Report
|
|
2
|
+
|
|
3
|
+
## Session
|
|
4
|
+
|
|
5
|
+
- Session id:
|
|
6
|
+
- Status: NOT_STARTED
|
|
7
|
+
- Mode:
|
|
8
|
+
|
|
9
|
+
## Coverage
|
|
10
|
+
|
|
11
|
+
| Function Point | FR/AC | Scenario | Result | Evidence | Issues |
|
|
12
|
+
| --- | --- | --- | --- | --- | --- |
|
|
13
|
+
|
|
14
|
+
## Reusable Scenarios
|
|
15
|
+
|
|
16
|
+
| Scenario | Source | Reuse Target | Evidence |
|
|
17
|
+
| --- | --- | --- | --- |
|
|
18
|
+
|
|
19
|
+
## Documentation Feedback
|
|
20
|
+
|
|
21
|
+
- No-update rationale:
|
|
22
|
+
- Created from the ZSK module template; no demo has been performed yet.
|
|
23
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# __MODULE_NAME__ Deploy
|
|
2
|
+
|
|
3
|
+
## Deployment
|
|
4
|
+
|
|
5
|
+
| Environment | URL | Version | Result | Evidence |
|
|
6
|
+
| --- | --- | --- | --- | --- |
|
|
7
|
+
|
|
8
|
+
## Rollback
|
|
9
|
+
|
|
10
|
+
- Owner:
|
|
11
|
+
- Command:
|
|
12
|
+
- Notes:
|
|
13
|
+
|
|
14
|
+
## Documentation Feedback
|
|
15
|
+
|
|
16
|
+
- No-update rationale:
|
|
17
|
+
- Created from the ZSK module template; no deployment has been performed yet.
|
|
18
|
+
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# __MODULE_NAME__ Design
|
|
2
2
|
|
|
3
|
+
## Playwright Locator And State Strategy
|
|
4
|
+
|
|
5
|
+
| Scenario | Page / Route | Preferred Locator Strategy | State Coverage | API / Mock | Auth / Storage | Evidence |
|
|
6
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
7
|
+
| P0 happy path | | getByRole / getByLabel / getByTestId | loading / success / error | | | screenshot + trace |
|
|
8
|
+
|
|
9
|
+
Guidelines:
|
|
10
|
+
|
|
11
|
+
- Prefer user-facing locators: `getByRole`, `getByLabel`, `getByPlaceholder`, `getByTestId`.
|
|
12
|
+
- Add implementation tasks for missing accessible names, labels, or stable test ids.
|
|
13
|
+
- Define auth/storage reuse before demo so Playwright can run repeatably.
|
|
14
|
+
|
|
3
15
|
## Documentation Feedback
|
|
4
16
|
|
|
5
17
|
- No-update rationale:
|
|
@@ -9,6 +9,8 @@ sources: {}
|
|
|
9
9
|
runtime:
|
|
10
10
|
url: http://localhost:3000
|
|
11
11
|
tools:
|
|
12
|
+
- playwright_mcp
|
|
13
|
+
- playwright
|
|
12
14
|
- computer_use
|
|
13
15
|
- browser_use
|
|
14
16
|
|
|
@@ -18,7 +20,8 @@ tests:
|
|
|
18
20
|
automated:
|
|
19
21
|
unit: []
|
|
20
22
|
integration: []
|
|
21
|
-
e2e:
|
|
23
|
+
e2e:
|
|
24
|
+
- __DOCS_OUTPUT__/scenarios
|
|
22
25
|
tdd_required: true
|
|
23
26
|
|
|
24
27
|
outputs:
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# __MODULE_NAME__ Ready
|
|
2
|
+
|
|
3
|
+
## Gate
|
|
4
|
+
|
|
5
|
+
| Issue | Fix Evidence | Deployment | Ready |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
|
|
8
|
+
## Documentation Feedback
|
|
9
|
+
|
|
10
|
+
- No-update rationale:
|
|
11
|
+
- Created from the ZSK module template; no fixes have been marked ready for verify yet.
|
|
12
|
+
|