@captain_z/zsk 1.4.1 → 1.4.3

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
@@ -33,7 +33,7 @@ npx @captain_z/zsk check
33
33
  | `add [<pattern>...]` | 装 / 刷新 / 追加。target 空 → 新装;有 manifest → 自动进刷新岔路 | 自适应 clack 向导,两级多选 |
34
34
  | `remove [<pattern>...]` \| `rm` | 从有 `zsk-manifest.json` 的目录移除;手改文件自动备份 | 多选 + 强确认 |
35
35
  | `list [--bundle=<n>] [--json]` | 浏览 bundle / skill 清单 | 非交互 |
36
- | `init` | 脚手架 `.zsk/config.yaml` + `.raws/index.md` + `.raws/manifest.json` + `.raws/` 分类快照目录 + `docs/` + `.issues/` | 非破坏性,默认跳过已存在文件 |
36
+ | `init` | 脚手架 `.zsk/config.yaml` + `project-config.md` + `.raws/index.md` + `.raws/manifest.json` + `.raws/` 分类快照目录 + `docs/` + `.issues/` | 非破坏性,默认跳过已存在文件 |
37
37
  | `config setup` | 指导 AI/人工填写 SRS、PRD、Figma、API、测试用例等资源来源 | 非交互提示 |
38
38
  | `config check` | 校验 `.zsk/config.yaml` 与 `docs/{module}/module.yaml` | 非交互 |
39
39
  | `module init -m <id>` | 从 package 模板生成 `docs/{module}` | 非交互 |
@@ -61,6 +61,7 @@ zsk check
61
61
  ```text
62
62
  .zsk/
63
63
  └── config.yaml
64
+ project-config.md
64
65
  .raws/
65
66
  ├── index.md
66
67
  ├── manifest.json
@@ -76,7 +77,7 @@ docs/
76
77
  └── README.md
77
78
  ```
78
79
 
79
- Schemas 随 npm package 发布,并通过 versioned unpkg URL 提供编辑器补全;项目本地 `.zsk/schemas` 不参与校验。
80
+ Schemas 随 npm package 发布。`zsk init` / `zsk module init` 会用当前运行的 CLI 版本写入 versioned unpkg URL 作为编辑器补全提示;项目本地 `.zsk/schemas` 不参与校验。
80
81
 
81
82
  `zsk config check` 做 schema 和路径边界校验:raw snapshot、模块文档、issue 和运行证据都必须落在 `.zsk/config.yaml` 配置的路径内。
82
83
 
@@ -3,6 +3,7 @@ import { resolve } from "node:path";
3
3
  import { resolvePath } from "../core/targets.js";
4
4
  import { checkProjectConfig, readProjectConfig } from "../core/config.js";
5
5
  import { scaffoldTemplate } from "../core/scaffolder.js";
6
+ import { readPackageVersion, schemaUrl } from "../core/version.js";
6
7
  export async function init(opts = {}) {
7
8
  const target = opts.target ? resolvePath(opts.target) : process.cwd();
8
9
  const moduleId = opts.module;
@@ -23,9 +24,13 @@ export async function init(opts = {}) {
23
24
  const issueRoot = config.paths?.issues ?? ".issues";
24
25
  const moduleName = opts.name ?? moduleId;
25
26
  const destination = resolve(target, docsRoot, moduleId);
27
+ const packageVersion = await readPackageVersion();
26
28
  const result = await scaffoldTemplate(`module/${opts.template ?? "frontend-module"}`, destination, {
27
29
  overwrite: Boolean(opts.overwrite),
28
30
  variables: {
31
+ ZSK_VERSION: packageVersion,
32
+ ZSK_CONFIG_SCHEMA_URL: schemaUrl(packageVersion, "zsk-config.schema.json"),
33
+ ZSK_MODULE_SCHEMA_URL: schemaUrl(packageVersion, "module.schema.json"),
29
34
  MODULE_ID: moduleId,
30
35
  MODULE_NAME: moduleName,
31
36
  DOCS_OUTPUT: `${docsRoot}/${moduleId}`,
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/commands/module.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,MAAM,uBAAuB,CAAC;AAUzD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAA0B,EAAE;IACrD,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,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACrD,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC;IACtE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,iBAAiB,EAAE,EAAE,WAAW,EAAE;QACjG,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAClC,SAAS,EAAE;YACT,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,GAAG,QAAQ,IAAI,QAAQ,EAAE;YACtC,aAAa,EAAE,GAAG,SAAS,IAAI,QAAQ,EAAE;SAC1C;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,qBAAqB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/commands/module.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import pc from "picocolors";
7
7
  import { intro, outro, confirm, log, spinner, note } from "../ui/prompts.js";
8
8
  import { resolvePath } from "../core/targets.js";
9
9
  import { scaffoldTemplate, fileExists } from "../core/scaffolder.js";
10
+ import { readPackageVersion, schemaUrl } from "../core/version.js";
10
11
  import { join } from "node:path";
11
12
  export async function run(opts = {}) {
12
13
  const target = opts.target ? resolvePath(opts.target) : process.cwd();
@@ -16,11 +17,13 @@ export async function run(opts = {}) {
16
17
  log.info(`目标:${pc.cyan(target)}`);
17
18
  }
18
19
  const existingConfig = await fileExists(join(target, ".zsk", "config.yaml"));
20
+ const existingProjectConfig = await fileExists(join(target, "project-config.md"));
19
21
  const existingRaws = await fileExists(join(target, ".raws"));
20
22
  const existingIssues = await fileExists(join(target, ".issues"));
21
23
  const existingDocs = await fileExists(join(target, "docs"));
22
24
  const summaryPre = [
23
25
  `.zsk/config.yaml: ${existingConfig ? pc.yellow("已存在(跳过)") : pc.green("将创建")}`,
26
+ `project-config.md: ${existingProjectConfig ? pc.yellow("已存在(跳过)") : pc.green("将创建")}`,
24
27
  `.raws/: ${existingRaws ? pc.yellow("已存在(跳过内部文件)") : pc.green("将创建")}`,
25
28
  `.issues/: ${existingIssues ? pc.yellow("已存在(跳过内部文件)") : pc.green("将创建")}`,
26
29
  `docs/: ${existingDocs ? pc.yellow("已存在(跳过内部文件)") : pc.green("将创建")}`,
@@ -35,8 +38,14 @@ export async function run(opts = {}) {
35
38
  }
36
39
  const s = interactive ? spinner() : null;
37
40
  s?.start("scaffold 项目文件");
41
+ const packageVersion = await readPackageVersion();
38
42
  const result = await scaffoldTemplate("project-init", target, {
39
43
  overwrite: Boolean(opts.overwrite),
44
+ variables: {
45
+ ZSK_VERSION: packageVersion,
46
+ ZSK_CONFIG_SCHEMA_URL: schemaUrl(packageVersion, "zsk-config.schema.json"),
47
+ ZSK_MODULE_SCHEMA_URL: schemaUrl(packageVersion, "module.schema.json"),
48
+ },
40
49
  });
41
50
  s?.stop("scaffold 完成");
42
51
  const summary = [
@@ -49,8 +58,9 @@ export async function run(opts = {}) {
49
58
  "",
50
59
  `${pc.bold("下一步:")}`,
51
60
  `1. 编辑 ${pc.cyan(".zsk/config.yaml")},把 ${pc.yellow("<project-name>")} 改成项目名`,
52
- `2. SRS / PRD / Figma / Modao / API / 测试用例来源交给 AI,或运行 ${pc.cyan("zsk config setup")} 辅助填写 sources`,
53
- `3. ${pc.cyan("zsk prep")} 准备上下文;需要模块时运行 ${pc.cyan("zsk module init -m <module-id>")}`,
61
+ `2. 编辑 ${pc.cyan("project-config.md")},补齐项目技术栈、脚本、资源入口和 AI 查表锚点`,
62
+ `3. SRS / PRD / Figma / Modao / API / 测试用例来源交给 AI,或运行 ${pc.cyan("zsk config setup")} 辅助填写 sources`,
63
+ `4. 跑 ${pc.cyan("zsk prep")} 准备上下文;需要模块时运行 ${pc.cyan("zsk module init -m <module-id>")}`,
54
64
  ].join("\n");
55
65
  if (interactive) {
56
66
  note(summary + nextSteps, "bootstrap 摘要");
@@ -1 +1 @@
1
- {"version":3,"file":"project-init.js","sourceRoot":"","sources":["../../src/commands/project-init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-init.js","sourceRoot":"","sources":["../../src/commands/project-init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function readPackageVersion(): Promise<string>;
2
+ export declare function schemaUrl(version: string, schemaName: string): string;
@@ -0,0 +1,26 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { createRequire } from "node:module";
3
+ import { dirname, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ export async function readPackageVersion() {
6
+ const thisDir = dirname(fileURLToPath(import.meta.url));
7
+ const devPackageJson = resolve(thisDir, "../../package.json");
8
+ try {
9
+ const pkg = JSON.parse(await readFile(devPackageJson, "utf8"));
10
+ if (typeof pkg.version === "string" && pkg.version.length > 0)
11
+ return pkg.version;
12
+ }
13
+ catch {
14
+ // Fall through to the installed package path.
15
+ }
16
+ const require = createRequire(import.meta.url);
17
+ const pkgPath = require.resolve("@captain_z/zsk/package.json");
18
+ const pkg = JSON.parse(await readFile(pkgPath, "utf8"));
19
+ if (typeof pkg.version === "string" && pkg.version.length > 0)
20
+ return pkg.version;
21
+ return "0.0.0";
22
+ }
23
+ export function schemaUrl(version, schemaName) {
24
+ return `https://unpkg.com/@captain_z/zsk@${version}/schemas/${schemaName}`;
25
+ }
26
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAA0B,CAAC;QACxF,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAA0B,CAAC;IACjF,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAClF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,UAAkB;IAC3D,OAAO,oCAAoC,OAAO,YAAY,UAAU,EAAE,CAAC;AAC7E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@captain_z/zsk",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
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.4.1"
23
+ "@captain_z/zsk-skills": "1.4.3"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/node": "^22.10.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://unpkg.com/@captain_z/zsk@1.3.0/schemas/module.schema.json",
3
+ "$id": "https://unpkg.com/@captain_z/zsk/schemas/module.schema.json",
4
4
  "title": "ZSK Module Config",
5
5
  "description": "Module-level resource, runtime, test, and output mapping for ZSK workflows.",
6
6
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://unpkg.com/@captain_z/zsk@1.3.0/schemas/zsk-config.schema.json",
3
+ "$id": "https://unpkg.com/@captain_z/zsk/schemas/zsk-config.schema.json",
4
4
  "title": "ZSK Project Config",
5
5
  "description": "Project-level configuration for ZSK resource origins, workspace paths, tools, and module index locations.",
6
6
  "type": "object",
@@ -1,4 +1,4 @@
1
- # yaml-language-server: $schema=https://unpkg.com/@captain_z/zsk@1.3.0/schemas/module.schema.json
1
+ # yaml-language-server: $schema=__ZSK_MODULE_SCHEMA_URL__
2
2
 
3
3
  module:
4
4
  id: __MODULE_ID__
@@ -1,4 +1,4 @@
1
- # yaml-language-server: $schema=https://unpkg.com/@captain_z/zsk@1.3.0/schemas/zsk-config.schema.json
1
+ # yaml-language-server: $schema=__ZSK_CONFIG_SCHEMA_URL__
2
2
 
3
3
  project:
4
4
  name: "<project-name>"
@@ -0,0 +1,152 @@
1
+ ---
2
+ meta:
3
+ project_name: "<project-name>"
4
+ project_type: "<project-type>"
5
+ project_role: "<project-role>"
6
+ created: "<YYYY-MM-DD>"
7
+ maintainers: []
8
+
9
+ config:
10
+ machine_config: ".zsk/config.yaml"
11
+ system_spec: "docs/SYSTEM-SPEC.md"
12
+
13
+ paths:
14
+ raws_root: ".raws"
15
+ raws_index: ".raws/index.md"
16
+ raws_manifest: ".raws/manifest.json"
17
+ requirements_index: ".raws/requirements/index.md"
18
+ api_contracts_index: ".raws/api-contracts/index.md"
19
+ design_sources_index: ".raws/design-sources/index.md"
20
+ design_assets_index: ".raws/design-assets/index.md"
21
+ testing_index: ".raws/testing/index.md"
22
+ docs_root: "docs"
23
+ module_index: "docs/_module-index.md"
24
+ issues_root: ".issues"
25
+ issues_index: ".issues/README.md"
26
+
27
+ source_registry:
28
+ canonical: ".zsk/config.yaml#sources"
29
+ local_snapshot_root: ".raws"
30
+ generated_manifest: ".raws/manifest.json"
31
+
32
+ modules:
33
+ root: "docs"
34
+ index: "docs/_module-index.md"
35
+ module_config: "docs/{module}/module.yaml"
36
+ module_docs: "docs/{module}/proposal.md | spec.md | design.md | tasks.md | verification.md"
37
+ module_issues: ".issues/{module}"
38
+
39
+ scripts:
40
+ install: "<install command>"
41
+ dev: "<dev command>"
42
+ build: "<build command>"
43
+ lint: "<lint command>"
44
+ type_check: "<typecheck command>"
45
+ test: "<test command>"
46
+ format: "<format command>"
47
+
48
+ stack:
49
+ framework: "<framework>"
50
+ language: "<language>"
51
+ language_strict: true
52
+ build_tool: "<build-tool>"
53
+ css: "<css-stack>"
54
+ ui_lib: "<ui-library>"
55
+ test_framework: "<test-framework>"
56
+
57
+ quality:
58
+ documentation_feedback_required: true
59
+ runtime_evidence_root: ".issues"
60
+ raw_snapshot_root: ".raws"
61
+ docs_runtime_artifacts_forbidden: true
62
+
63
+ examples:
64
+ module_id: "sample-module"
65
+ issue_id: "BUG-0001"
66
+ ---
67
+
68
+ # Project Config — <project-name>
69
+
70
+ > **定位**:项目级 AI 配置与机械查表锚点。
71
+ > **维护方式**:与 [docs/SYSTEM-SPEC.md](./docs/SYSTEM-SPEC.md) 和 [.zsk/config.yaml](./.zsk/config.yaml) 同步维护。
72
+ > **适用范围**:`.zsk/`、`.raws/`、`docs/`、`.issues/` 和项目代码。
73
+ > **当前结论**:本文件面向人和 AI;机器校验以 `.zsk/config.yaml` 为准。
74
+
75
+ ---
76
+
77
+ ## 1. 配置入口
78
+
79
+ | 文件 | 定位 | 维护方式 |
80
+ |---|---|---|
81
+ | `.zsk/config.yaml` | 机器可读配置:路径、sources、tools、module root | 由 AI/人工编辑,`zsk config check` 校验 |
82
+ | `project-config.md` | 人读项目配置:技术栈、脚本、路径、约束查表 | 与系统规约同步维护 |
83
+ | `docs/SYSTEM-SPEC.md` | 项目级规则、事实源优先级、质量门禁 | 稳定约束变更时更新 |
84
+
85
+ ## 2. 资源入口
86
+
87
+ | 资源 | 统一入口 | 机器索引 / 配置 | 说明 |
88
+ |---|---|---|---|
89
+ | Raw facts | `.raws/index.md` | `.raws/manifest.json` | 上游事实与本地快照导航 |
90
+ | Requirements | `.raws/requirements/index.md` | `.zsk/config.yaml#sources` | SRS、PRD、验收说明 |
91
+ | API contracts | `.raws/api-contracts/index.md` | `.zsk/config.yaml#sources` | OpenAPI、后端仓库、接口契约 |
92
+ | Design sources | `.raws/design-sources/index.md` | `.zsk/config.yaml#sources` | Figma、Modao、MCP、设计交付源 |
93
+ | Design assets | `.raws/design-assets/index.md` | `.zsk/config.yaml#sources` | token、图片、图标、截图、静态设计资产 |
94
+ | Testing assets | `.raws/testing/index.md` | `.zsk/config.yaml#sources` + `docs/{module}/module.yaml` | QA、验收、发布测试用例 |
95
+ | Issues / evidence | `.issues/README.md` | `.zsk/config.yaml#paths.issues` | bug、截图、日志、复测证据 |
96
+
97
+ ## 3. `.raws` / `docs` / `.issues` 边界
98
+
99
+ | 目录 | 存放内容 | 不应存放 |
100
+ |---|---|---|
101
+ | `.raws/` | 上游事实、外部资源快照、原始测试资产 | 本地运行截图、debug log、失败验证证据 |
102
+ | `docs/` | 模块 proposal/spec/design/tasks/verification、系统规约 | 运行时证据、HAR、控制台日志 |
103
+ | `.issues/` | 本地缺陷、验证证据、截图、debug log、复测记录 | 上游 SRS/API/Figma 原文快照 |
104
+
105
+ ## 4. Module 文档如何引用资源
106
+
107
+ 模块文档优先通过相对路径引用资源:
108
+
109
+ ```md
110
+ > 原始需求:`.raws/requirements/{file}`
111
+ > API 契约:`.raws/api-contracts/{service}/contracts/{contract}.md`
112
+ > 设计来源:`.raws/design-sources/{module}/`
113
+ > 设计资产:`.raws/design-assets/{module}/`
114
+ > 测试资产:`.raws/testing/{case-file}`
115
+ > 本地问题:`.issues/{module}/BUG-0001-short-slug/issue.md`
116
+ ```
117
+
118
+ 模块级映射写入 `docs/{module}/module.yaml`,项目级来源写入 `.zsk/config.yaml#sources`。
119
+
120
+ ## 5. Coding 约束查表
121
+
122
+ | 维度 | 当前项目值 | 说明 |
123
+ |---|---|---|
124
+ | Framework | `<framework>` | 从项目实际依赖填写 |
125
+ | Language | `<language>` | TypeScript / Java / Go / etc. |
126
+ | Build | `<build command>` | 与 package manager 保持一致 |
127
+ | Test | `<test command>` | CI 和本地验收都应可复用 |
128
+ | UI / Runtime verification | `computer_use / browser_use` | 具体工具以 `.zsk/config.yaml#tools` 为准 |
129
+
130
+ ## 6. 冲突处理顺序
131
+
132
+ 1. 用户明确指令 / 仓库 `AGENTS.md`
133
+ 2. `docs/SYSTEM-SPEC.md`
134
+ 3. `project-config.md`
135
+ 4. `.zsk/config.yaml`
136
+ 5. `.raws/` 中的上游事实源
137
+ 6. `docs/{module}/proposal.md|spec.md|design.md|tasks.md`
138
+ 7. 通用 skills / 模板
139
+
140
+ 如果两个上游事实源冲突,不要静默选择。应在 `.issues/{module}/` 记录冲突,并在模块 `spec.md` 或 `design.md` 的 Documentation Feedback 中写明处理结果。
141
+
142
+ ## 7. 维护清单
143
+
144
+ 项目硬约束新增或调整时,至少同步检查:
145
+
146
+ - [ ] `.zsk/config.yaml`
147
+ - [ ] `project-config.md`
148
+ - [ ] `docs/SYSTEM-SPEC.md`
149
+ - [ ] `.raws/index.md` 与相关分类 `index.md`
150
+ - [ ] 受影响模块的 `docs/{module}/module.yaml`
151
+ - [ ] 受影响模块的 `docs/{module}/spec.md` / `design.md`
152
+ - [ ] 必要时新增或更新 `.issues/{module}/BUG-xxxx/issue.md`