@captain_z/zsk 1.0.2 → 1.1.0
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 +38 -3
- package/dist/bin.js +40 -1
- package/dist/bin.js.map +1 -1
- package/dist/commands/check.d.ts +4 -0
- package/dist/commands/check.js +157 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.js +18 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/prep.d.ts +4 -0
- package/dist/commands/prep.js +27 -0
- package/dist/commands/prep.js.map +1 -0
- package/dist/commands/project-init.js +12 -11
- package/dist/commands/project-init.js.map +1 -1
- package/dist/core/config.d.ts +35 -0
- package/dist/core/config.js +191 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/raw-manifest.d.ts +21 -0
- package/dist/core/raw-manifest.js +53 -0
- package/dist/core/raw-manifest.js.map +1 -0
- package/package.json +3 -2
- package/templates/project-init/.issues/README.md +26 -0
- package/templates/project-init/.issues/_templates/issue.md +44 -0
- package/templates/project-init/.raws/README.md +15 -12
- package/templates/project-init/.raws/api-contracts/README.md +13 -0
- package/templates/project-init/.raws/design-assets/README.md +16 -0
- package/templates/project-init/.raws/manifest.json +4 -0
- package/templates/project-init/.raws/testing/README.md +10 -0
- package/templates/project-init/.zsk/schemas/module.schema.json +203 -0
- package/templates/project-init/.zsk/schemas/zsk-config.schema.json +246 -0
- package/templates/project-init/SYSTEM-SPEC.md +55 -0
- package/templates/project-init/docs/_module-index.md +7 -0
- package/templates/project-init/docs/_module-template/module.yaml +32 -0
- package/templates/project-init/docs/system/README.md +12 -0
- package/templates/project-init/zsk.config.yaml +50 -0
package/README.md
CHANGED
|
@@ -16,8 +16,10 @@ npx @captain_z/zsk remove
|
|
|
16
16
|
npx @captain_z/zsk list
|
|
17
17
|
npx @captain_z/zsk list --json
|
|
18
18
|
|
|
19
|
-
#
|
|
20
|
-
npx @captain_z/zsk
|
|
19
|
+
# 项目知识工作区(非破坏性)
|
|
20
|
+
npx @captain_z/zsk init
|
|
21
|
+
npx @captain_z/zsk prep
|
|
22
|
+
npx @captain_z/zsk check
|
|
21
23
|
```
|
|
22
24
|
|
|
23
25
|
## 命令一览
|
|
@@ -27,9 +29,42 @@ npx @captain_z/zsk project-init
|
|
|
27
29
|
| `add [<pattern>...]` | 装 / 刷新 / 追加。target 空 → 新装;有 manifest → 自动进刷新岔路 | 自适应 clack 向导,两级多选 |
|
|
28
30
|
| `remove [<pattern>...]` \| `rm` | 从有 `zsk-manifest.json` 的目录移除;手改文件自动备份 | 多选 + 强确认 |
|
|
29
31
|
| `list [--bundle=<n>] [--json]` | 浏览 bundle / skill 清单 | 非交互 |
|
|
30
|
-
| `
|
|
32
|
+
| `init` | 脚手架 `SYSTEM-SPEC.md` + `zsk.config.yaml` + `.raws/` + `docs/` + `.issues/` | 非破坏性,默认跳过已存在文件 |
|
|
33
|
+
| `project-init` | `init` 的兼容别名,仍保留旧 `project-config.md` 模板 | 非破坏性 |
|
|
34
|
+
| `config check` | 校验 `zsk.config.yaml` 与 `docs/{module}/module.yaml` | 非交互 |
|
|
35
|
+
| `prep` | 根据配置记录 `.raws/manifest.json`,为 AI skills 准备上下文 | 非交互 |
|
|
36
|
+
| `check` | 校验配置、测试资产映射、docs 证据边界、Documentation Feedback 记录 | 非交互 |
|
|
31
37
|
| `doctor` / `lint` | 校验(Phase 4 实现) | stub |
|
|
32
38
|
|
|
39
|
+
## 项目知识工作区命令
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
zsk init
|
|
43
|
+
zsk config check
|
|
44
|
+
zsk prep
|
|
45
|
+
zsk check
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
职责边界:
|
|
49
|
+
|
|
50
|
+
- ZSK CLI:初始化模板、JSON Schema 配置提示、确定性路径和结构校验。
|
|
51
|
+
- AI skills:资源理解、模块识别、Figma/MCP 获取、Computer Use / Browser Use 验证、冲突分析、issue 编写。
|
|
52
|
+
|
|
53
|
+
生成结构:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
SYSTEM-SPEC.md
|
|
57
|
+
zsk.config.yaml
|
|
58
|
+
.zsk/schemas/
|
|
59
|
+
.raws/
|
|
60
|
+
docs/
|
|
61
|
+
.issues/
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
测试用例是一等资产:原始 QA/验收/发布测试用例放 `.raws/testing/`,模块派生场景和自动化映射放 `docs/{module}/`。AI coding 必须先从这些测试资产写或更新测试,再实现。
|
|
65
|
+
|
|
66
|
+
每个阶段必须做 Documentation Feedback:把对话中确认的决策、约束、例外和验证结果反哺到 `SYSTEM-SPEC.md`、`docs/{module}/` 或 `.issues/{module}/`,否则阶段不算完成。
|
|
67
|
+
|
|
33
68
|
## `zsk add` 向导分支
|
|
34
69
|
|
|
35
70
|
```
|
package/dist/bin.js
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
// add [pattern...] adaptive install wizard (replaces init + install)
|
|
10
10
|
// remove [pattern...] multi-select removal (replaces uninstall)
|
|
11
11
|
// list browse bundles / installed skills
|
|
12
|
+
// init scaffold knowledge workspace
|
|
12
13
|
// project-init scaffold project-config.md + .raws/ + CLAUDE.md
|
|
14
|
+
// config check validate zsk.config.yaml and module.yaml files
|
|
13
15
|
// doctor, lint scaffold stubs
|
|
14
16
|
import { Command, Option } from "commander";
|
|
15
17
|
import { intro, outro, log } from "@clack/prompts";
|
|
@@ -63,9 +65,19 @@ program
|
|
|
63
65
|
await run(patterns, opts, VERSION);
|
|
64
66
|
});
|
|
65
67
|
// ---- project-init -----------------------------------------------------------
|
|
68
|
+
program
|
|
69
|
+
.command("init")
|
|
70
|
+
.description("scaffold SYSTEM-SPEC.md + zsk.config.yaml + .raws/ + .issues/ + docs/ (non-destructive)")
|
|
71
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
72
|
+
.option("--yes", "non-interactive mode")
|
|
73
|
+
.option("--overwrite", "overwrite existing files (destructive)")
|
|
74
|
+
.action(async (opts) => {
|
|
75
|
+
const { run } = await import("./commands/project-init.js");
|
|
76
|
+
await run(opts);
|
|
77
|
+
});
|
|
66
78
|
program
|
|
67
79
|
.command("project-init")
|
|
68
|
-
.description("
|
|
80
|
+
.description("backward-compatible alias for init")
|
|
69
81
|
.option("--target <path>", "project directory (default: cwd)")
|
|
70
82
|
.option("--yes", "non-interactive mode")
|
|
71
83
|
.option("--overwrite", "overwrite existing files (destructive)")
|
|
@@ -73,6 +85,33 @@ program
|
|
|
73
85
|
const { run } = await import("./commands/project-init.js");
|
|
74
86
|
await run(opts);
|
|
75
87
|
});
|
|
88
|
+
const configCommand = program
|
|
89
|
+
.command("config")
|
|
90
|
+
.description("validate and inspect ZSK project configuration");
|
|
91
|
+
configCommand
|
|
92
|
+
.command("check")
|
|
93
|
+
.description("validate zsk.config.yaml and docs/{module}/module.yaml")
|
|
94
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
95
|
+
.action(async (opts) => {
|
|
96
|
+
const { check } = await import("./commands/config.js");
|
|
97
|
+
await check(opts);
|
|
98
|
+
});
|
|
99
|
+
program
|
|
100
|
+
.command("prep")
|
|
101
|
+
.description("prepare project context from zsk.config.yaml and update .raws/manifest.json")
|
|
102
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
103
|
+
.action(async (opts) => {
|
|
104
|
+
const { run } = await import("./commands/prep.js");
|
|
105
|
+
await run(opts);
|
|
106
|
+
});
|
|
107
|
+
program
|
|
108
|
+
.command("check")
|
|
109
|
+
.description("check project knowledge workspace structure and deterministic gates")
|
|
110
|
+
.option("--target <path>", "project directory (default: cwd)")
|
|
111
|
+
.action(async (opts) => {
|
|
112
|
+
const { run } = await import("./commands/check.js");
|
|
113
|
+
await run(opts);
|
|
114
|
+
});
|
|
76
115
|
// ---- list -------------------------------------------------------------------
|
|
77
116
|
program
|
|
78
117
|
.command("list")
|
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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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
import { readFile, readdir } from "node:fs/promises";
|
|
3
|
+
import { extname, join, resolve } from "node:path";
|
|
4
|
+
import YAML from "yaml";
|
|
5
|
+
import { resolvePath } from "../core/targets.js";
|
|
6
|
+
import { checkProjectConfig, findModuleConfigFiles, formatConfigIssues, readProjectConfig, } from "../core/config.js";
|
|
7
|
+
const RUNTIME_ARTIFACT_EXTS = new Set([
|
|
8
|
+
".log",
|
|
9
|
+
".png",
|
|
10
|
+
".jpg",
|
|
11
|
+
".jpeg",
|
|
12
|
+
".gif",
|
|
13
|
+
".webp",
|
|
14
|
+
".har",
|
|
15
|
+
".mp4",
|
|
16
|
+
".mov",
|
|
17
|
+
".zip",
|
|
18
|
+
]);
|
|
19
|
+
const STAGE_DOCS_REQUIRING_FEEDBACK = [
|
|
20
|
+
"proposal.md",
|
|
21
|
+
"spec.md",
|
|
22
|
+
"design.md",
|
|
23
|
+
"tasks.md",
|
|
24
|
+
"verification.md",
|
|
25
|
+
"review.md",
|
|
26
|
+
"archive.md",
|
|
27
|
+
];
|
|
28
|
+
export async function run(opts = {}) {
|
|
29
|
+
const target = opts.target ? resolvePath(opts.target) : process.cwd();
|
|
30
|
+
const configCheck = await checkProjectConfig(target);
|
|
31
|
+
const issues = [];
|
|
32
|
+
if (!configCheck.ok) {
|
|
33
|
+
console.error(pc.red("✗ zsk check failed: config check failed"));
|
|
34
|
+
console.error(formatConfigIssues(configCheck.issues));
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
const config = await readProjectConfig(target);
|
|
38
|
+
const moduleFiles = await findModuleConfigFiles(target, config);
|
|
39
|
+
const moduleConfigs = await readModuleConfigs(moduleFiles);
|
|
40
|
+
await checkRawTestingMapped(target, config.paths?.raws ?? ".raws", moduleConfigs, issues);
|
|
41
|
+
await checkDocsArtifacts(target, config.paths?.docs ?? "docs", issues);
|
|
42
|
+
await checkDocumentationFeedback(target, moduleConfigs, issues);
|
|
43
|
+
if (issues.length > 0) {
|
|
44
|
+
console.error(pc.red("✗ zsk check failed"));
|
|
45
|
+
for (const issue of issues)
|
|
46
|
+
console.error(`${issue.file}: ${issue.message}`);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
console.log(pc.green("✓ zsk check passed"));
|
|
50
|
+
console.log(pc.dim(`checked ${moduleFiles.length} module config(s)`));
|
|
51
|
+
console.log(pc.dim("Semantic checks requiring Figma, Computer Use, or cross-source reasoning are delegated to AI skills."));
|
|
52
|
+
}
|
|
53
|
+
async function readModuleConfigs(files) {
|
|
54
|
+
const result = [];
|
|
55
|
+
for (const file of files) {
|
|
56
|
+
const parsed = YAML.parse(await readFile(file, "utf8"));
|
|
57
|
+
result.push({ file, config: (parsed ?? {}) });
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
async function checkRawTestingMapped(target, rawsPath, modules, issues) {
|
|
62
|
+
const testingRoot = resolve(target, rawsPath, "testing");
|
|
63
|
+
const rawFiles = (await collectFiles(testingRoot)).filter((file) => !file.endsWith("/README.md"));
|
|
64
|
+
if (rawFiles.length === 0)
|
|
65
|
+
return;
|
|
66
|
+
const mapped = new Set();
|
|
67
|
+
for (const mod of modules) {
|
|
68
|
+
for (const p of mod.config.tests?.raw_cases ?? [])
|
|
69
|
+
mapped.add(resolve(target, p));
|
|
70
|
+
for (const p of mod.config.sources?.testing ?? [])
|
|
71
|
+
mapped.add(resolve(target, p));
|
|
72
|
+
}
|
|
73
|
+
for (const file of rawFiles) {
|
|
74
|
+
if (mapped.has(file))
|
|
75
|
+
continue;
|
|
76
|
+
issues.push({
|
|
77
|
+
file,
|
|
78
|
+
message: "raw test case is not mapped to any module.yaml tests.raw_cases or sources.testing entry",
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function checkDocsArtifacts(target, docsPath, issues) {
|
|
83
|
+
const docsRoot = resolve(target, docsPath);
|
|
84
|
+
const files = await collectFiles(docsRoot);
|
|
85
|
+
for (const file of files) {
|
|
86
|
+
const ext = extname(file).toLowerCase();
|
|
87
|
+
const name = file.toLowerCase();
|
|
88
|
+
const isEvidence = RUNTIME_ARTIFACT_EXTS.has(ext) ||
|
|
89
|
+
name.includes("debug-log") ||
|
|
90
|
+
name.includes("debug-logs") ||
|
|
91
|
+
name.includes("evidence") ||
|
|
92
|
+
name.includes("failed-verification") ||
|
|
93
|
+
name.includes("console.log") ||
|
|
94
|
+
([".txt", ".json"].includes(ext) &&
|
|
95
|
+
/debug|evidence|console|screenshot|failed-verification/.test(name));
|
|
96
|
+
if (!isEvidence)
|
|
97
|
+
continue;
|
|
98
|
+
issues.push({
|
|
99
|
+
file,
|
|
100
|
+
message: "runtime evidence belongs in .issues/, not docs/",
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async function checkDocumentationFeedback(target, modules, issues) {
|
|
105
|
+
for (const mod of modules) {
|
|
106
|
+
const docsDir = mod.config.outputs?.docs ? resolve(target, mod.config.outputs.docs) : null;
|
|
107
|
+
if (!docsDir)
|
|
108
|
+
continue;
|
|
109
|
+
const candidates = STAGE_DOCS_REQUIRING_FEEDBACK.map((name) => join(docsDir, name));
|
|
110
|
+
const existing = [];
|
|
111
|
+
for (const file of candidates) {
|
|
112
|
+
try {
|
|
113
|
+
existing.push({ file, content: await readFile(file, "utf8") });
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Optional until the module exists.
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (existing.length === 0)
|
|
120
|
+
continue;
|
|
121
|
+
for (const item of existing) {
|
|
122
|
+
if (hasDocumentationFeedback(item.content))
|
|
123
|
+
continue;
|
|
124
|
+
issues.push({
|
|
125
|
+
file: item.file,
|
|
126
|
+
message: "stage doc should include Documentation Feedback with updates, or an explicit no-update rationale",
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function hasDocumentationFeedback(content) {
|
|
132
|
+
const marker = content.match(/^##+\s+Documentation Feedback\b([\s\S]*)$/im);
|
|
133
|
+
if (!marker)
|
|
134
|
+
return false;
|
|
135
|
+
const body = (marker[1] ?? "").trim();
|
|
136
|
+
if (body.length === 0)
|
|
137
|
+
return false;
|
|
138
|
+
return /no[- ]update|无需更新|无更新|not applicable|N\/A/i.test(body) || /-\s+\[[ x]\]/i.test(body) || /\|/.test(body);
|
|
139
|
+
}
|
|
140
|
+
async function collectFiles(root) {
|
|
141
|
+
try {
|
|
142
|
+
const entries = await readdir(root, { withFileTypes: true });
|
|
143
|
+
const files = [];
|
|
144
|
+
for (const entry of entries) {
|
|
145
|
+
const path = join(root, entry.name);
|
|
146
|
+
if (entry.isDirectory())
|
|
147
|
+
files.push(...(await collectFiles(path)));
|
|
148
|
+
if (entry.isFile())
|
|
149
|
+
files.push(path);
|
|
150
|
+
}
|
|
151
|
+
return files;
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
import { resolvePath } from "../core/targets.js";
|
|
3
|
+
import { checkProjectConfig, formatConfigIssues } from "../core/config.js";
|
|
4
|
+
export async function check(opts = {}) {
|
|
5
|
+
const target = opts.target ? resolvePath(opts.target) : process.cwd();
|
|
6
|
+
const result = await checkProjectConfig(target);
|
|
7
|
+
if (result.ok) {
|
|
8
|
+
console.log(pc.green("✓ zsk config check passed"));
|
|
9
|
+
if (result.moduleFiles.length > 0) {
|
|
10
|
+
console.log(pc.dim(`validated ${result.moduleFiles.length} module config(s)`));
|
|
11
|
+
}
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
console.error(pc.red("✗ zsk config check failed"));
|
|
15
|
+
console.error(formatConfigIssues(result.issues));
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAM3E,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAA2B,EAAE;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,WAAW,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { resolvePath } from "../core/targets.js";
|
|
4
|
+
import { checkProjectConfig, readProjectConfig } from "../core/config.js";
|
|
5
|
+
import { describeResource, updateRawManifest } from "../core/raw-manifest.js";
|
|
6
|
+
export async function run(opts = {}) {
|
|
7
|
+
const target = opts.target ? resolvePath(opts.target) : process.cwd();
|
|
8
|
+
const configCheck = await checkProjectConfig(target);
|
|
9
|
+
if (!configCheck.ok) {
|
|
10
|
+
console.error(pc.red("✗ zsk prep stopped: config check failed"));
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const config = await readProjectConfig(target);
|
|
14
|
+
const sourceEntries = Object.entries(config.sources ?? {});
|
|
15
|
+
const records = [];
|
|
16
|
+
for (const [provider, source] of sourceEntries) {
|
|
17
|
+
if (!source)
|
|
18
|
+
continue;
|
|
19
|
+
records.push(await describeResource(target, provider, source));
|
|
20
|
+
}
|
|
21
|
+
const raws = config.paths?.raws ?? ".raws";
|
|
22
|
+
await updateRawManifest(resolve(target, raws, "manifest.json"), records);
|
|
23
|
+
console.log(pc.green("✓ zsk prep completed"));
|
|
24
|
+
console.log(pc.dim(`recorded ${records.length} raw resource(s)`));
|
|
25
|
+
console.log(pc.dim("AI-assisted module discovery is handled by skills using zsk.config.yaml and docs/{module}/module.yaml."));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=prep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prep.js","sourceRoot":"","sources":["../../src/commands/prep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAY9E,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAoB,EAAE;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACtE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAExD,CAAC;IACF,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,OAAO,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO,CAAC;IAC3C,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;IAEzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAC,CAAC;AAChI,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
// `zsk project-init` — scaffold project
|
|
1
|
+
// `zsk init` / `zsk project-init` — scaffold project knowledge files into
|
|
2
2
|
// the current (or given) project directory. Non-destructive by default:
|
|
3
3
|
// existing files are skipped.
|
|
4
4
|
//
|
|
5
|
-
// Similar to Claude Code's /init but project-level
|
|
6
|
-
// and .raws/ templates; optionally a CLAUDE.md pointer).
|
|
5
|
+
// Similar to Claude Code's /init but project-level.
|
|
7
6
|
import pc from "picocolors";
|
|
8
7
|
import { intro, outro, confirm, log, spinner, note } from "../ui/prompts.js";
|
|
9
8
|
import { resolvePath } from "../core/targets.js";
|
|
@@ -16,13 +15,15 @@ export async function run(opts = {}) {
|
|
|
16
15
|
intro(`${pc.bold("zsk")} · 项目 bootstrap`);
|
|
17
16
|
log.info(`目标:${pc.cyan(target)}`);
|
|
18
17
|
}
|
|
19
|
-
const existingConfig = await fileExists(join(target, "
|
|
18
|
+
const existingConfig = await fileExists(join(target, "zsk.config.yaml"));
|
|
20
19
|
const existingRaws = await fileExists(join(target, ".raws"));
|
|
21
|
-
const
|
|
20
|
+
const existingIssues = await fileExists(join(target, ".issues"));
|
|
21
|
+
const existingDocs = await fileExists(join(target, "docs"));
|
|
22
22
|
const summaryPre = [
|
|
23
|
-
`
|
|
24
|
-
`.raws/:
|
|
25
|
-
|
|
23
|
+
`zsk.config.yaml: ${existingConfig ? pc.yellow("已存在(跳过)") : pc.green("将创建")}`,
|
|
24
|
+
`.raws/: ${existingRaws ? pc.yellow("已存在(跳过内部文件)") : pc.green("将创建")}`,
|
|
25
|
+
`.issues/: ${existingIssues ? pc.yellow("已存在(跳过内部文件)") : pc.green("将创建")}`,
|
|
26
|
+
`docs/: ${existingDocs ? pc.yellow("已存在(跳过内部文件)") : pc.green("将创建")}`,
|
|
26
27
|
].join("\n");
|
|
27
28
|
if (interactive) {
|
|
28
29
|
note(summaryPre, "计划");
|
|
@@ -47,9 +48,9 @@ export async function run(opts = {}) {
|
|
|
47
48
|
const nextSteps = [
|
|
48
49
|
"",
|
|
49
50
|
`${pc.bold("下一步:")}`,
|
|
50
|
-
`1. 编辑 ${pc.cyan("
|
|
51
|
-
`2. 填 ${pc.cyan(".raws/SRS.md")} 与 ${pc.cyan(".raws/FIGMA-INDEX.md")}(或按需删除)`,
|
|
52
|
-
`3. 跑 ${pc.cyan("
|
|
51
|
+
`1. 编辑 ${pc.cyan("zsk.config.yaml")},把 ${pc.yellow("<project-name>")} 改成项目名`,
|
|
52
|
+
`2. 填 ${pc.cyan(".raws/SRS.md")}、${pc.cyan(".raws/testing/")} 与 ${pc.cyan(".raws/FIGMA-INDEX.md")}(或按需删除)`,
|
|
53
|
+
`3. 跑 ${pc.cyan("zsk prep")} 准备模块上下文,再跑 ${pc.cyan("zsk check")} 检查`,
|
|
53
54
|
].join("\n");
|
|
54
55
|
if (interactive) {
|
|
55
56
|
note(summary + nextSteps, "bootstrap 摘要");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-init.js","sourceRoot":"","sources":["../../src/commands/project-init.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"project-init.js","sourceRoot":"","sources":["../../src/commands/project-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type ConfigCheckIssue = {
|
|
2
|
+
file: string;
|
|
3
|
+
path: string;
|
|
4
|
+
message: string;
|
|
5
|
+
};
|
|
6
|
+
export type ConfigCheckResult = {
|
|
7
|
+
ok: boolean;
|
|
8
|
+
issues: ConfigCheckIssue[];
|
|
9
|
+
project: unknown;
|
|
10
|
+
moduleFiles: string[];
|
|
11
|
+
};
|
|
12
|
+
type SourceConfig = {
|
|
13
|
+
kind?: string;
|
|
14
|
+
path?: string;
|
|
15
|
+
output?: string;
|
|
16
|
+
};
|
|
17
|
+
type ProjectConfig = {
|
|
18
|
+
paths?: {
|
|
19
|
+
raws?: string;
|
|
20
|
+
docs?: string;
|
|
21
|
+
issues?: string;
|
|
22
|
+
};
|
|
23
|
+
sources?: Record<string, SourceConfig | undefined>;
|
|
24
|
+
modules?: {
|
|
25
|
+
root?: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export declare function checkProjectConfig(target: string): Promise<ConfigCheckResult>;
|
|
29
|
+
export declare function readProjectConfig(target: string): Promise<ProjectConfig>;
|
|
30
|
+
export declare function findModuleConfigFiles(root: string, projectConfig: ProjectConfig): Promise<string[]>;
|
|
31
|
+
export declare function formatConfigIssues(issues: ConfigCheckIssue[]): string;
|
|
32
|
+
export declare function pathStat(path: string): Promise<{
|
|
33
|
+
size: number;
|
|
34
|
+
} | null>;
|
|
35
|
+
export {};
|