@cyning/harness 0.3.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/AGENTS.md +20 -0
- package/CHANGELOG.md +127 -0
- package/README.md +133 -0
- package/bin/harness.js +7 -0
- package/ci/samples/README.md +42 -0
- package/ci/samples/pytest.yml.example +49 -0
- package/ci/samples/quality.yml.example +56 -0
- package/coding_wiki/templates/README.md +11 -0
- package/coding_wiki/templates/context.md +11 -0
- package/coding_wiki/templates/stable.md +19 -0
- package/coding_wiki/templates/volatile.md +15 -0
- package/docs/ARCHITECTURE.md +71 -0
- package/docs/DESIGN_ONTOLOGY_v1_zh.md +9 -0
- package/docs/HARNESS_GRAPH_MODEL_design_v0_zh.md +6 -0
- package/docs/HARNESS_GRAPH_MODEL_dialogue_archive_v1_zh.md +8 -0
- package/docs/ONBOARDING.md +126 -0
- package/docs/P0_V0.2_GAP.md +6 -0
- package/docs/README.md +38 -0
- package/docs/methodology/AUDIT_doc_consistency_2026-06-15_zh.md +69 -0
- package/docs/methodology/DOCUMENT_MAP_v1_zh.md +122 -0
- package/docs/methodology/README.md +147 -0
- package/docs/methodology/ROADMAP_v1_zh.md +136 -0
- package/docs/methodology/execution/P0_V0.2_GAP.md +93 -0
- package/docs/methodology/execution/PILOT_EVIDENCE_B2_v1_zh.md +132 -0
- package/docs/methodology/execution/README.md +12 -0
- package/docs/methodology/graph/HARNESS_GRAPH_MODEL_design_v0_zh.md +258 -0
- package/docs/methodology/graph/HARNESS_GRAPH_MODEL_dialogue_archive_v1_zh.md +132 -0
- package/docs/methodology/graph/README.md +22 -0
- package/docs/methodology/pointers/ADOPTION_METHODOLOGY_v1_zh.md +8 -0
- package/docs/methodology/pointers/ADOPTION_TARGET_STATE_v1_zh.md +6 -0
- package/docs/methodology/pointers/ASSESSMENT_etclovg_v1_zh.md +5 -0
- package/docs/methodology/pointers/ASSESSMENT_ink_v1_zh.md +5 -0
- package/docs/methodology/pointers/GUIDANCE_distribution_v1_zh.md +6 -0
- package/docs/methodology/pointers/HARNESS_V2_PLAN_v1_zh.md +8 -0
- package/docs/methodology/pointers/PILOT_kimi_code_fork_v1_zh.md +6 -0
- package/docs/methodology/pointers/POINTER_cyning_harness_repo_v1_zh.md +6 -0
- package/docs/methodology/pointers/README.md +40 -0
- package/docs/methodology/pointers/SDD_HAT_FLOW_v1_zh.md +8 -0
- package/docs/methodology/pointers/STRATEGY_MASTER_v1_zh.md +8 -0
- package/docs/methodology/pointers/STRATEGY_ONTOLOGY_v1_zh.md +9 -0
- package/docs/methodology/product/DESIGN_ONTOLOGY_v1_zh.md +719 -0
- package/docs/methodology/product/README.md +25 -0
- package/docs/methodology/prompts/PROMPT_article_theory_roundtable_v1_zh.md +127 -0
- package/docs/methodology/prompts/PROMPT_doc_consistency_audit_v1_zh.md +131 -0
- package/docs/methodology/prompts/PROMPT_feasibility_review_b_evidence_v1_zh.md +86 -0
- package/docs/methodology/prompts/README.md +10 -0
- package/docs/methodology/reviews/PROCESS_track_b_evidence_audit_2026-06-15_v1_zh.md +101 -0
- package/docs/methodology/reviews/README.md +9 -0
- package/docs/methodology/reviews/REVIEW_B3_pilot_evidence_and_sdd_compliance_bench_v1_zh.md +154 -0
- package/docs/methodology/reviews/REVIEW_B9_agent_shell_parallel_v1_zh.md +158 -0
- package/examples/demo_checkout/ACCEPTANCE.md +80 -0
- package/examples/demo_checkout/README.md +41 -0
- package/examples/demo_checkout/task_demo_p0_golden_v1.md +101 -0
- package/examples/oss-fork/README.md +139 -0
- package/examples/oss-fork/kimi-code/00_main.ai.md +23 -0
- package/examples/oss-fork/kimi-code/00_main.md +38 -0
- package/examples/oss-fork/kimi-code/01_struct.md +39 -0
- package/examples/oss-fork/kimi-code/02_version.md +6 -0
- package/examples/oss-fork/kimi-code/10_flow_cli_session.md +22 -0
- package/examples/oss-fork/kimi-code/README.md +15 -0
- package/golden/POINTER_gold_epic_serial.md +93 -0
- package/golden/README.md +30 -0
- package/graph/stubs/README.md +6 -0
- package/graph/templates/00_main.ai.md +28 -0
- package/graph/templates/00_main.md +52 -0
- package/graph/templates/01_struct.md +38 -0
- package/graph/templates/10_flow_MAIN.ai.md +43 -0
- package/graph/templates/10_flow_MAIN.md +47 -0
- package/graph/templates/99_mermaid_protocol.md +100 -0
- package/graph/templates/README.md +34 -0
- package/harness/README.md +18 -0
- package/harness/invokes/README.md +22 -0
- package/harness/invokes/TEMPLATE_invoke.md +59 -0
- package/harness/prompts/10-requirements.md +42 -0
- package/harness/prompts/22-task-audit.md +67 -0
- package/harness/prompts/30-execute-code.md +50 -0
- package/harness/prompts/FRAGMENT_30_gate_verify_v1_zh.md +30 -0
- package/harness/prompts/FRAGMENT_30_invoke_block_v1_zh.md +27 -0
- package/harness/prompts/README.md +28 -0
- package/harness/prompts/TEMPLATE_30_gate_stop.md +34 -0
- package/harness/templates/FRAGMENT_task_domain_infer_v1_zh.md +16 -0
- package/harness/templates/README.md +48 -0
- package/harness/templates/TASK_TEMPLATE.md +111 -0
- package/harness/templates/TASK_done_README.md +75 -0
- package/harness/templates/TASK_epic.md +101 -0
- package/harness/templates/TASK_graph_bootstrap.md +113 -0
- package/harness/templates/VIEW_done_by_domain.md +66 -0
- package/harness/templates/VIEW_done_thin_pointer.md +16 -0
- package/ide/adapters/AGENTS.md.fragment.example +31 -0
- package/ide/adapters/CLAUDE.md.fragment.example +30 -0
- package/ide/adapters/README.md +46 -0
- package/ide/adapters/cursor-harness-starter.mdc.example +37 -0
- package/lib/cli.js +180 -0
- package/lib/manifest.js +38 -0
- package/lib/paths.js +36 -0
- package/lib/run.js +33 -0
- package/package.json +37 -0
- package/schema/manifest.v1.schema.json +37 -0
- package/standards/POINTER_workspace_truth_v1_zh.md +57 -0
- package/standards/README.md +35 -0
- package/standards/SOURCES_v1_zh.md +49 -0
- package/standards/TEMPLATE_CODING_BASELINE_L1_v1_zh.md +88 -0
- package/standards/TEMPLATE_CODING_BASELINE_L2_backend_v1_zh.md +75 -0
- package/standards/TEMPLATE_CODING_BASELINE_L2_frontend_v1_zh.md +76 -0
- package/wizard/ONBOARDING_wizard_v1_zh.md +112 -0
- package/wizard/README.md +213 -0
- package/wizard/adopt-existing.sh +37 -0
- package/wizard/bootstrap-oss-fork-meta.sh +177 -0
- package/wizard/gate-check.sh +118 -0
- package/wizard/harness-sync.sh +237 -0
- package/wizard/install.sh +206 -0
- package/wizard/lib/common.sh +247 -0
- package/wizard/lib/manifest.sh +110 -0
- package/wizard/profiles/fullstack-node-py.json +21 -0
- package/wizard/profiles/harness-only.json +19 -0
- package/wizard/profiles/ios-cursor.json +19 -0
- package/wizard/profiles/issue-scan-presets.json +51 -0
- package/wizard/profiles/oss-fork-meta.json +17 -0
- package/wizard/scan-upstream-issues.sh +287 -0
- package/wizard/templates/FRAGMENT_rethink_backfill_task_v1_zh.md +44 -0
- package/wizard/templates/POINTER_PILOT_adoption_workspace.md +23 -0
- package/wizard/templates/TASK_TEMPLATE_upstream_pr_v1.md +164 -0
- package/wizard/templates/task_graph_bootstrap_v1.md +53 -0
- package/wizard/uninstall.sh +218 -0
- package/wizard/upgrade.sh +164 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://cyning.dev/schemas/cyning-harness/manifest.v1.json",
|
|
4
|
+
"title": "cyning-harness VersionManifest",
|
|
5
|
+
"description": "业务仓钉住的产品包版本与接入参数(本体 VersionManifest · v0.3+)",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["version", "preset", "ide"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"version": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "已同步的产品包 semver(或 git describe)"
|
|
13
|
+
},
|
|
14
|
+
"preset": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "AdoptedProfile preset 名"
|
|
17
|
+
},
|
|
18
|
+
"ide": {
|
|
19
|
+
"type": "array",
|
|
20
|
+
"items": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"enum": ["cursor", "claude", "agents"]
|
|
23
|
+
},
|
|
24
|
+
"uniqueItems": true,
|
|
25
|
+
"description": "启用的 IDE 轨"
|
|
26
|
+
},
|
|
27
|
+
"from_version": {
|
|
28
|
+
"type": ["string", "null"],
|
|
29
|
+
"description": "upgrade 前版本;init 时为 null"
|
|
30
|
+
},
|
|
31
|
+
"upgraded_at": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"format": "date-time",
|
|
34
|
+
"description": "最近一次 install/upgrade 写入时间(UTC ISO8601)"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# POINTER · 工作区编码规范真值(Ink · 不复制全文)
|
|
2
|
+
|
|
3
|
+
| 项 | 内容 |
|
|
4
|
+
| --- | --- |
|
|
5
|
+
| **状态** | `active` |
|
|
6
|
+
| **日期** | 2026-06-09 |
|
|
7
|
+
| **性质** | **只读指针**;Starter 交付 TEMPLATE,Ink 维护 L1/L2 **active** 条文 |
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 纪律(D-M2-04)
|
|
12
|
+
|
|
13
|
+
| 规则 | 说明 |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| **禁止双维护** | 不得将 Ink `docs/standards/` L1/L2 **全文**复制进 `cyning-harness` 产品仓 |
|
|
16
|
+
| **嵌入用户仓** | 从本目录 **TEMPLATE_*** 复制生成用户仓 `docs/standards/`;按需 **POINTER** 回链 Ink |
|
|
17
|
+
| **冲突** | task + 图谱 + PROJECT_CONFIG > 用户仓已嵌入 L1/L2 > 本 POINTER |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Ink 工作区真值(金样 · 只读)
|
|
22
|
+
|
|
23
|
+
> 路径相对 **cyning-ink-workspace**(本地常名 `Projects/`)。无访问权限时仅用本仓 TEMPLATE。
|
|
24
|
+
|
|
25
|
+
| 资产 | 路径 | 状态 |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| **L1 基线** | `docs/standards/CODING_BASELINE_L1_v1_zh.md` | `active` · R1 2026-06-09 |
|
|
28
|
+
| **L2 前端** | `ai-ink-brain/docs/standards/CODING_FRONTEND_L2_v1_zh.md` | `active` |
|
|
29
|
+
| **L2 后端** | `ai-ink-brain-api-python/docs/standards/CODING_BACKEND_L2_v1_zh.md` | `active` |
|
|
30
|
+
| **外部参考** | `docs/standards/SOURCES_编码规范外部参考_v1_zh.md` | `draft` |
|
|
31
|
+
| **改进大纲** | `docs/standards/00_OUTLINE_工程编码规范改进_v1_zh.md` | 规划 |
|
|
32
|
+
| **Harness 衔接** | `docs/harness/guides/GUIDANCE_standards_in_harness_starter_m2_v1_zh.md` | M2 打包真值 |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 治理仓(可选 · 私有)
|
|
37
|
+
|
|
38
|
+
| 仓 | 用途 |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| [`cyning-ai-coding-governance`](https://github.com/Cyning12/cyning-ai-coding-governance) | 方法论 · L3/L2/L1 整合导读 · 对比研究 |
|
|
41
|
+
|
|
42
|
+
本地镜像(若有):`Projects/ai_coding_governance/methodology/`
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## M2 金样来源(后续 T6)
|
|
47
|
+
|
|
48
|
+
- 编码规范 Epic:`ai-ink-brain-api-python/docs/tasks/active/task_standards_backend_api_modularization_manifest_v1.md`
|
|
49
|
+
- 过程 invoke:工作区 `docs/harness/invokes/by-task/`(**不**复制进产品仓)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 修订记录
|
|
54
|
+
|
|
55
|
+
| 日期 | 说明 |
|
|
56
|
+
| --- | --- |
|
|
57
|
+
| 2026-06-09 | M2 T2:TEMPLATE + POINTER 首版 |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# standards · 编码规范模板
|
|
2
|
+
|
|
3
|
+
按语言栈从本目录复制到用户仓 **`docs/standards/`**。
|
|
4
|
+
|
|
5
|
+
## v0.1 已交付(T2 · M2)
|
|
6
|
+
|
|
7
|
+
| 模板 | 状态 | 嵌入后文件名 |
|
|
8
|
+
|------|------|--------------|
|
|
9
|
+
| [`TEMPLATE_CODING_BASELINE_L1_v1_zh.md`](./TEMPLATE_CODING_BASELINE_L1_v1_zh.md) | ✅ | `CODING_BASELINE_L1_v1_zh.md` |
|
|
10
|
+
| [`TEMPLATE_CODING_BASELINE_L2_frontend_v1_zh.md`](./TEMPLATE_CODING_BASELINE_L2_frontend_v1_zh.md) | ✅ | `CODING_FRONTEND_L2_v1_zh.md` |
|
|
11
|
+
| [`TEMPLATE_CODING_BASELINE_L2_backend_v1_zh.md`](./TEMPLATE_CODING_BASELINE_L2_backend_v1_zh.md) | ✅ | `CODING_BACKEND_L2_v1_zh.md` |
|
|
12
|
+
| [`SOURCES_v1_zh.md`](./SOURCES_v1_zh.md) | ✅ | `SOURCES_编码规范外部参考_v1_zh.md` |
|
|
13
|
+
| [`POINTER_workspace_truth_v1_zh.md`](./POINTER_workspace_truth_v1_zh.md) | ✅ | 可选保留 POINTER(不复制 Ink 全文) |
|
|
14
|
+
|
|
15
|
+
## 嵌入步骤
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
mkdir -p docs/standards
|
|
19
|
+
cp standards/TEMPLATE_CODING_BASELINE_L1_v1_zh.md docs/standards/CODING_BASELINE_L1_v1_zh.md
|
|
20
|
+
# 按栈复制 L2 模板并重命名;填写「本仓落地」列
|
|
21
|
+
cp standards/SOURCES_v1_zh.md docs/standards/SOURCES_编码规范外部参考_v1_zh.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## task 字段
|
|
25
|
+
|
|
26
|
+
`code_quality_bar: strict | recommended | not_applicable`
|
|
27
|
+
|
|
28
|
+
- **strict**:22/30 须对照 L2 条文 ID
|
|
29
|
+
- **recommended**:M2 文档演练默认
|
|
30
|
+
- **not_applicable**:纯文档 task 须附一行理由
|
|
31
|
+
|
|
32
|
+
## 关联
|
|
33
|
+
|
|
34
|
+
- Onboarding:[`docs/ONBOARDING.md`](../docs/ONBOARDING.md) §4
|
|
35
|
+
- Harness 衔接:工作区 `GUIDANCE_standards_in_harness_starter_m2_v1_zh.md` §3(POINTER,非复制)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 编码规范 — 外部参考模板(v1)
|
|
2
|
+
|
|
3
|
+
> **用途**:复制为 `docs/standards/SOURCES_编码规范外部参考_v1_zh.md`。
|
|
4
|
+
> **纪律**:**引用不搬运** — 正文不进仓,只保留采纳条款与本仓落地路径。
|
|
5
|
+
|
|
6
|
+
| 项 | 内容 |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| **状态** | `draft` |
|
|
9
|
+
| **关联 L1** | `CODING_BASELINE_L1_v1_zh.md` |
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. 引用纪律
|
|
14
|
+
|
|
15
|
+
1. **引用不搬运**:下表「来源 URL」为真值入口;修订时更新 **版本锚点**。
|
|
16
|
+
2. **采纳须可执行**:「本仓落地」须指向 **文件路径、CI job 或命令**。
|
|
17
|
+
3. **冲突**:与 task、`_tech_graph`、`PROJECT_CONFIG` 冲突时,以本仓真值为准。
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 2. 映射表(嵌入时填写)
|
|
22
|
+
|
|
23
|
+
| ID | 来源 | 版本锚点 | 采纳条款(摘要) | 本仓落地 |
|
|
24
|
+
| --- | --- | --- | --- | --- |
|
|
25
|
+
| REF-GOOG-CL | [Google Eng Practices — CLs](https://google.github.io/eng-practices/review/developer/) | YYYY-MM | 小步 CL、附测试说明 | PR Test plan;L1 §4 |
|
|
26
|
+
| REF-GOOG-CR | [Google Code Review](https://google.github.io/eng-practices/review/) | YYYY-MM | 可读性、非风格吹毛求疵 | 22 审查关注 B-01/B-02 |
|
|
27
|
+
| REF-PEP8 | [PEP 8](https://peps.python.org/pep-0008/) | Py x.y | 格式、命名 | _后端:ruff.toml_ |
|
|
28
|
+
| REF-GOOG-TS | [Google TS Style](https://google.github.io/styleguide/tsguide.html) | YYYY-MM | strict、禁 any | _前端:tsconfig + ESLint_ |
|
|
29
|
+
| REF-OWASP-API | [OWASP API Top 10](https://owasp.org/www-project-api-security/) | 2023 | 注入、鉴权 | B-11 |
|
|
30
|
+
| _REF-…_ | _待增_ | | | |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 3. 按 L1 条文回查
|
|
35
|
+
|
|
36
|
+
| L1 条文 | 主要 REF |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| B-01~B-07 | REF-GOOG-CL, REF-GOOG-CR |
|
|
39
|
+
| B-08 | REF-GOOG-TS, REF-PEP8 |
|
|
40
|
+
| B-10 | REF-GOOG-CL |
|
|
41
|
+
| B-11 | REF-OWASP-API |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 4. 修订记录
|
|
46
|
+
|
|
47
|
+
| 版本 | 日期 | 说明 |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| v1.0 | YYYY-MM-DD | 从 cyning-harness SOURCES 模板嵌入 |
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# 编码基线 L1 模板(语言无关 · v1)
|
|
2
|
+
|
|
3
|
+
> **用途**:复制到用户仓 `docs/standards/CODING_BASELINE_L1_v1_zh.md` 并按栈裁剪。
|
|
4
|
+
> **纪律**:本文件为 **脚手架模板**;Ink 工作区真值见 [`POINTER_workspace_truth_v1_zh.md`](./POINTER_workspace_truth_v1_zh.md) — **禁止** 将真值全文复制进产品仓分发包。
|
|
5
|
+
|
|
6
|
+
| 项 | 内容 |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| **状态** | `draft` — 嵌入后改 `active` 并人签 |
|
|
9
|
+
| **版本** | v1.0 |
|
|
10
|
+
| **日期** | YYYY-MM-DD |
|
|
11
|
+
| **维护** | 本仓 `docs/standards/` |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. 适用范围
|
|
16
|
+
|
|
17
|
+
| 适用 | 不适用 |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| 本仓 **业务代码** 新增/修改 | 纯文档 task(`test_strategy: not_applicable` 且无代码) |
|
|
20
|
+
| Agent 与人类 PR | 第三方 vendored(除非 task 明示) |
|
|
21
|
+
|
|
22
|
+
**优先级**:**task + `_tech_graph` + PROJECT_CONFIG** > 本 L1 > 外部参考([`SOURCES_v1_zh.md`](./SOURCES_v1_zh.md))> 个人习惯。
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. 条文(B-01~B-12 · 填写真值)
|
|
27
|
+
|
|
28
|
+
> 每条保留 **ID**;L2 须标注 `遵循 B-xx`。下方「本仓落地」列嵌入时必填。
|
|
29
|
+
|
|
30
|
+
| ID | 原则(摘要) | 本仓落地(路径 / CI / 命令) |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| **B-01** | 单一职责;函数/模块只做一件事 | _待填_ |
|
|
33
|
+
| **B-02** | 早返回;嵌套 ≤2 | _待填_ |
|
|
34
|
+
| **B-03** | 配置外置;禁止硬编码 URL/密钥 | _待填:`PROJECT_CONFIG` / `.env.example`_ |
|
|
35
|
+
| **B-04** | 命名即文档;与图谱/API 术语一致 | _待填_ |
|
|
36
|
+
| **B-05** | 错误可结构化;对齐 registry/SPEC | _待填_ |
|
|
37
|
+
| **B-06** | 扩展点显式;表驱动优于 if-else 链 | _待填_ |
|
|
38
|
+
| **B-07** | 最小 diff;禁止范围外重构 | _待填_ |
|
|
39
|
+
| **B-08** | 类型与契约优先;禁止滥用 `any`/裸 dict | _待填_ |
|
|
40
|
+
| **B-09** | 重复 ≥3 处须抽取 | _待填_ |
|
|
41
|
+
| **B-10** | 测试与行为绑定;`test_strategy: required` 先测后码 | _待填:pytest / vitest / …_ |
|
|
42
|
+
| **B-11** | 安全与密钥;输入校验 | _待填_ |
|
|
43
|
+
| **B-12** | 可观测钩子;禁止静默失败 | _待填_ |
|
|
44
|
+
|
|
45
|
+
### 扩展示例(可选)
|
|
46
|
+
|
|
47
|
+
若需展开单条说明,用三级标题 `### B-0N …`,**勿** 超过 L1 原则层(栈细节放 L2)。
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 3. 反模式速查(节选)
|
|
52
|
+
|
|
53
|
+
| ID | 反模式 | 改法 | 条文 |
|
|
54
|
+
| --- | --- | --- | --- |
|
|
55
|
+
| AP-01 | 魔法字符串 API 路径 | 常量 / env / 生成类型 | B-03, B-08 |
|
|
56
|
+
| AP-02 | 路由层堆业务+SQL | 下沉 service | B-01 |
|
|
57
|
+
| AP-03 | 深层嵌套 JSX / try | 抽 hook / 早 return | B-02 |
|
|
58
|
+
| AP-04 | `except Exception: pass` | 窄捕获 + 结构化错误 | B-05 |
|
|
59
|
+
|
|
60
|
+
_嵌入后按栈增补 AP-xx_
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 4. PR / 审查自检
|
|
65
|
+
|
|
66
|
+
- [ ] 无新增硬编码 URL/魔法数(B-03)
|
|
67
|
+
- [ ] 无密钥进仓库(B-11)
|
|
68
|
+
- [ ] 无范围外文件改动(B-07)
|
|
69
|
+
- [ ] `test_strategy: required` 时测试已绿(B-10)
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 5. 与 L2 的关系
|
|
74
|
+
|
|
75
|
+
| 层级 | 路径 | 职责 |
|
|
76
|
+
| --- | --- | --- |
|
|
77
|
+
| **L1** | 本文件 | 原则与条文 ID |
|
|
78
|
+
| **L2 前端** | `docs/standards/CODING_FRONTEND_L2_v1_zh.md` | 由 [`TEMPLATE_CODING_BASELINE_L2_frontend_v1_zh.md`](./TEMPLATE_CODING_BASELINE_L2_frontend_v1_zh.md) 生成 |
|
|
79
|
+
| **L2 后端** | `docs/standards/CODING_BACKEND_L2_v1_zh.md` | 由 [`TEMPLATE_CODING_BASELINE_L2_backend_v1_zh.md`](./TEMPLATE_CODING_BASELINE_L2_backend_v1_zh.md) 生成 |
|
|
80
|
+
| **L3** | `.cursor/rules` · `AGENTS.md` | ≤15 行摘要 + 链至 L1/L2 |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 6. 修订记录
|
|
85
|
+
|
|
86
|
+
| 版本 | 日期 | 说明 |
|
|
87
|
+
| --- | --- | --- |
|
|
88
|
+
| v1.0 | YYYY-MM-DD | 从 cyning-harness 模板嵌入 |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# 编码规范 L2 模板 — 后端(Python / API · v1)
|
|
2
|
+
|
|
3
|
+
> **用途**:复制为 `docs/standards/CODING_BACKEND_L2_v1_zh.md`。
|
|
4
|
+
> **L1**:须链本仓 [`CODING_BASELINE_L1_v1_zh.md`](./TEMPLATE_CODING_BASELINE_L1_v1_zh.md)(嵌入后去 `TEMPLATE_` 前缀)。
|
|
5
|
+
|
|
6
|
+
| 项 | 内容 |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| **状态** | `draft` |
|
|
9
|
+
| **栈** | _例:Python 3.11+ · FastAPI · pytest · Ruff_ |
|
|
10
|
+
| **配置真值** | _待填:`docs/meta/PROJECT_CONFIG_*.md`_ |
|
|
11
|
+
| **图谱** | _待填:`docs/_tech_graph/`_ |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. 适用范围
|
|
16
|
+
|
|
17
|
+
| 路径 | 职责 |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| `api/` 或 `src/` | HTTP 路由与领域模块 |
|
|
20
|
+
| `tests/` | pytest |
|
|
21
|
+
| _(待填)_ | _按仓裁剪_ |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. 条文(P-01~P-15 · 填写真值)
|
|
26
|
+
|
|
27
|
+
每条须含:**遵循 B-xx** + **工具规则 ID**(Ruff / mypy 等)。
|
|
28
|
+
|
|
29
|
+
| ID | 主题 | 遵循 | 本仓落地(文件 / 规则 ID) |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| **P-01** | 模块边界;路由薄 | B-01 | _待填_ |
|
|
32
|
+
| **P-02** | 早返回与异常 | B-02 | _待填_ |
|
|
33
|
+
| **P-03** | 环境变量单一真值模块 | B-03 | _待填:`api/rag_env.py` 或 settings_ |
|
|
34
|
+
| **P-04** | 命名与 import 顺序 | B-04 | _待填_ |
|
|
35
|
+
| **P-05** | 结构化错误 / HTTPException | B-05 | _待填:error registry_ |
|
|
36
|
+
| **P-06** | 分支与策略 | B-06 | _待填_ |
|
|
37
|
+
| **P-07** | 最小 diff | B-07 | _待填_ |
|
|
38
|
+
| **P-08** | 类型注解 / Pydantic | B-08 | _待填:Ruff ANN / mypy_ |
|
|
39
|
+
| **P-09** | 重复抽取 | B-09 | _待填_ |
|
|
40
|
+
| **P-10** | pytest 与 marker | B-10 | _待填_ |
|
|
41
|
+
| **P-11** | 安全与密钥 | B-11 | _待填_ |
|
|
42
|
+
| **P-12** | 日志与 trace 字段 | B-12 | _待填_ |
|
|
43
|
+
| **P-13** | _栈特有_ | — | _待填_ |
|
|
44
|
+
| **P-14** | _栈特有_ | — | _待填_ |
|
|
45
|
+
| **P-15** | _栈特有_ | — | _待填_ |
|
|
46
|
+
|
|
47
|
+
### 扩展示例
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
### P-05 结构化错误(遵循 B-05)
|
|
51
|
+
|
|
52
|
+
| 场景 | 形状 |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| HTTP | HTTPException + error_code |
|
|
55
|
+
| 内部 | 窄捕获;禁止 traceback 外泄 |
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. CI 对齐
|
|
61
|
+
|
|
62
|
+
| 检查 | 命令 | workflow |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| Test | _例:`pytest tests -m "not slow"`_ | _待填_ |
|
|
65
|
+
| Lint | _例:`ruff check`_ | _待填(可选 P4)_ |
|
|
66
|
+
|
|
67
|
+
复制 [`ci/samples/pytest.yml.example`](../ci/samples/README.md) 并按上表改。
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 4. 修订记录
|
|
72
|
+
|
|
73
|
+
| 版本 | 日期 | 说明 |
|
|
74
|
+
| --- | --- | --- |
|
|
75
|
+
| v1.0 | YYYY-MM-DD | 从 cyning-harness L2 后端模板嵌入 |
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# 编码规范 L2 模板 — 前端(TypeScript / React · v1)
|
|
2
|
+
|
|
3
|
+
> **用途**:复制为 `docs/standards/CODING_FRONTEND_L2_v1_zh.md`。
|
|
4
|
+
> **L1**:须链本仓 [`CODING_BASELINE_L1_v1_zh.md`](./TEMPLATE_CODING_BASELINE_L1_v1_zh.md)(嵌入后去 `TEMPLATE_` 前缀)。
|
|
5
|
+
|
|
6
|
+
| 项 | 内容 |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| **状态** | `draft` |
|
|
9
|
+
| **栈** | _例:Next App Router · React · TypeScript strict · pnpm · Vitest_ |
|
|
10
|
+
| **配置真值** | _待填:`docs/meta/PROJECT_CONFIG_*.md`_ |
|
|
11
|
+
| **图谱** | _待填:`docs/_tech_graph/`_ |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. 适用范围
|
|
16
|
+
|
|
17
|
+
| 路径 | 职责 |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| `app/` | 页面、布局、Route Handlers(BFF) |
|
|
20
|
+
| `components/` | UI 组件 |
|
|
21
|
+
| `lib/` | 领域逻辑、工具 |
|
|
22
|
+
| _(待填)_ | _按仓裁剪_ |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. 条文(F-01~F-14 · 填写真值)
|
|
27
|
+
|
|
28
|
+
每条须含:**遵循 B-xx** + **工具规则 ID**(ESLint / tsconfig 等)。
|
|
29
|
+
|
|
30
|
+
| ID | 主题 | 遵循 | 本仓落地(文件 / 规则 ID) |
|
|
31
|
+
| --- | --- | --- | --- |
|
|
32
|
+
| **F-01** | 模块边界;Route Handler 薄 | B-01 | _待填_ |
|
|
33
|
+
| **F-02** | 早返回与条件渲染 | B-02 | _待填_ |
|
|
34
|
+
| **F-03** | 环境变量;`NEXT_PUBLIC_*` 纪律 | B-03 | _待填_ |
|
|
35
|
+
| **F-04** | 命名与 `@/` 导入 | B-04 | _待填_ |
|
|
36
|
+
| **F-05** | BFF 错误与日志 | B-05, B-12 | _待填_ |
|
|
37
|
+
| **F-06** | 分支与策略表 | B-06 | _待填_ |
|
|
38
|
+
| **F-07** | 最小 diff | B-07 | _待填_ |
|
|
39
|
+
| **F-08** | TypeScript strict | B-08 | _待填:`eslint/@typescript-eslint/no-explicit-any`_ |
|
|
40
|
+
| **F-09** | 重复抽取 | B-09 | _待填_ |
|
|
41
|
+
| **F-10** | 测试(Vitest / RTL) | B-10 | _待填_ |
|
|
42
|
+
| **F-11** | 安全(XSS、密钥) | B-11 | _待填_ |
|
|
43
|
+
| **F-12** | 可观测 | B-12 | _待填_ |
|
|
44
|
+
| **F-13** | _栈特有_ | — | _待填_ |
|
|
45
|
+
| **F-14** | _栈特有_ | — | _待填_ |
|
|
46
|
+
|
|
47
|
+
### 扩展示例
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
### F-03 环境变量(遵循 B-03)
|
|
51
|
+
|
|
52
|
+
| 类型 | 规则 |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| 服务端密钥 | 仅服务端模块;禁止 NEXT_PUBLIC_* |
|
|
55
|
+
| API 基址 | 单一真值 env + proxy 模块 |
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. CI 对齐
|
|
61
|
+
|
|
62
|
+
| 检查 | 命令 | workflow |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| Lint | _例:`pnpm lint`_ | _待填_ |
|
|
65
|
+
| Test | _例:`pnpm test`_ | _待填_ |
|
|
66
|
+
| Build | _例:`pnpm build`_ | _待填_ |
|
|
67
|
+
|
|
68
|
+
复制 [`ci/samples/quality.yml.example`](../ci/samples/README.md) 并按上表改 job 名。
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 4. 修订记录
|
|
73
|
+
|
|
74
|
+
| 版本 | 日期 | 说明 |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| v1.0 | YYYY-MM-DD | 从 cyning-harness L2 前端模板嵌入 |
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# 安装向导 · Onboarding 问卷(v1 · 文档版)
|
|
2
|
+
|
|
3
|
+
> **状态**:`active`(M2 v0.1)
|
|
4
|
+
> **形态**:**脚本优先**([`wizard/README.md`](./README.md));本文档为 preset 说明备查
|
|
5
|
+
> **关联**:[`docs/ONBOARDING.md`](../docs/ONBOARDING.md) · GUIDANCE D3 IDE 轨
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 使用方式
|
|
10
|
+
|
|
11
|
+
**推荐**:在业务仓根执行脚本(见 [`README.md`](./README.md)):
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
/path/to/cyning-harness/wizard/install.sh --preset ios-cursor
|
|
15
|
+
# 日后 git pull 产品包后:
|
|
16
|
+
CYNING_HARNESS=/path/to/cyning-harness wizard/harness-sync.sh apply
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
下文为 **preset 含义** 与手工备查。默认不全选 IDE 入口。
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 步骤 1 · 仓库类型
|
|
24
|
+
|
|
25
|
+
| 选项 | 说明 | 下一步 |
|
|
26
|
+
|------|------|--------|
|
|
27
|
+
| **A 新仓** | 空仓或刚初始化 | → 步骤 2 · 必做图谱骨架 + 模块表 + 1 主 flow |
|
|
28
|
+
| **B 存量** | 已有代码 | → 步骤 1b 选档位 |
|
|
29
|
+
|
|
30
|
+
### 1b · 存量档位(仅 B)
|
|
31
|
+
|
|
32
|
+
| 档位 | 特征 | 首次 30 改码前 |
|
|
33
|
+
|------|------|----------------|
|
|
34
|
+
| **S0** 小 | <5 万行、边界清 | 模块表人签 + 1 主 flow |
|
|
35
|
+
| **S1** 中 | 多 BFF/路由 | 模块表 + 主路径 flow |
|
|
36
|
+
| **S2** 大 | 技术债重 | **仅**模块表 + 待补清单 |
|
|
37
|
+
| **S3** 巨 / monorepo | 多子仓 | 每子仓模块表 + 顶层 pointer |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 步骤 2 · 语言栈(可多选)
|
|
42
|
+
|
|
43
|
+
| 勾选 | 复制来源 | 目标路径 |
|
|
44
|
+
|------|----------|----------|
|
|
45
|
+
| ☐ 前端 TS/Next | `graph/templates/` · `standards/TEMPLATE_*_L2_frontend*` · `ci/samples/quality.yml.example` | `docs/_tech_graph/` · `docs/standards/` · `.github/workflows/` |
|
|
46
|
+
| ☐ 后端 Python | `graph/templates/` · `standards/TEMPLATE_*_L2_backend*` · `ci/samples/pytest.yml.example` | 同上 |
|
|
47
|
+
| ☐ 全栈 | 两项均勾选 | 前后端均复制并按仓裁剪 |
|
|
48
|
+
| ☐ 其他 | 仅 L1 + 过程轨 | `standards/TEMPLATE_CODING_BASELINE_L1*` · `harness/` |
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# 示例:克隆本产品后(路径按本地调整)
|
|
52
|
+
CYNING_HARNESS=/path/to/cyning-harness
|
|
53
|
+
mkdir -p docs/_tech_graph docs/coding_wiki docs/standards docs/tasks/active docs/harness/prompts docs/harness/invokes/by-task
|
|
54
|
+
cp -R "$CYNING_HARNESS/graph/templates/"* docs/_tech_graph/
|
|
55
|
+
cp -R "$CYNING_HARNESS/coding_wiki/templates/"* docs/coding_wiki/
|
|
56
|
+
cp "$CYNING_HARNESS/harness/templates/TASK_graph_bootstrap.md" docs/tasks/active/task_graph_bootstrap.md
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 步骤 3 · IDE 入口(按实际 IDE 勾选 · 默认不全选)
|
|
62
|
+
|
|
63
|
+
| 勾选 | 脚本 / 复制 | 写入位置 |
|
|
64
|
+
|------|-------------|----------|
|
|
65
|
+
| ☑ **Cursor**(推荐) | `install.sh --ide cursor` 或 sync | `.cursor/rules/05-harness-starter.mdc` |
|
|
66
|
+
| ☐ Claude Code | `install.sh --ide claude` | 仓根 `CLAUDE.md`(marker merge) |
|
|
67
|
+
| ☐ 通用 Agent | `install.sh --ide agents` | 仓根 `AGENTS.md`(marker merge) |
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# 推荐:脚本勾选(v0.2+)
|
|
71
|
+
/path/to/cyning-harness/wizard/install.sh --preset harness-only --ide cursor,claude,agents
|
|
72
|
+
|
|
73
|
+
# 手工备查
|
|
74
|
+
mkdir -p .cursor/rules
|
|
75
|
+
cp "$CYNING_HARNESS/ide/adapters/cursor-harness-starter.mdc.example" .cursor/rules/05-harness-starter.mdc
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 步骤 4 · 过程轨与 Verify
|
|
81
|
+
|
|
82
|
+
| 项 | 操作 |
|
|
83
|
+
|----|------|
|
|
84
|
+
| Harness prompts | `cp harness/prompts/*.md docs/harness/prompts/` |
|
|
85
|
+
| invoke 模板 | `cp harness/invokes/TEMPLATE_invoke.md docs/harness/invokes/` |
|
|
86
|
+
| CI | 见步骤 2 栈勾选 · 复制 `ci/samples/*.example` → `.github/workflows/` |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 步骤 5 · 人签与首张 task
|
|
91
|
+
|
|
92
|
+
1. 填写 `docs/_tech_graph/01_struct.md` 模块表
|
|
93
|
+
2. 维护者签 **`HG-GRAPH-MODULES`** → `approved`(见 `TASK_graph_bootstrap.md`)
|
|
94
|
+
3. 新建业务 task:从 `harness/templates/TASK_TEMPLATE.md` 复制
|
|
95
|
+
4. IDE 中 `@` task + `docs/harness/prompts/30-execute-code.md` 开 30 帽
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 完成检查清单
|
|
100
|
+
|
|
101
|
+
- [ ] 五轨目录存在(图谱 / wiki / standards / harness / CI)
|
|
102
|
+
- [ ] 至少 **一种** IDE 入口已生成
|
|
103
|
+
- [ ] `HG-GRAPH-MODULES` approved(存量/新仓按档位)
|
|
104
|
+
- [ ] 本地或 CI 跑通一门禁命令
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 修订记录
|
|
109
|
+
|
|
110
|
+
| 版本 | 日期 | 说明 |
|
|
111
|
+
|------|------|------|
|
|
112
|
+
| v1.0 | 2026-06-09 | M2 T5 文档版问卷 · 替代 v0.0.1 纯手工说明 |
|