create-harness-vibe-coding 0.1.1 → 0.1.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 ADDED
@@ -0,0 +1,169 @@
1
+ <p align="center">
2
+ <img src="https://img.shields.io/npm/v/create-harness-vibe-coding?color=blue" alt="npm version">
3
+ <img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="node">
4
+ <img src="https://img.shields.io/npm/l/create-harness-vibe-coding" alt="license">
5
+ <img src="https://img.shields.io/github/stars/zingspark/create-harness-vibe-coding?style=social" alt="stars">
6
+ </p>
7
+
8
+ <h1 align="center">⚡ create-harness-vibe-coding</h1>
9
+ <p align="center">
10
+ <b>4 seconds from zero to a production-grade agentic harness.</b><br>
11
+ <sub>CLAUDE.md → docs/ → .claude/ → tests/ — ECC-ready, Superpowers-compatible.</sub>
12
+ </p>
13
+
14
+ ---
15
+
16
+ ## 🎯 One Command
17
+
18
+ ```bash
19
+ npx create-harness-vibe-coding@latest my-project
20
+ ```
21
+
22
+ | What You Get | Count |
23
+ |-------------|-------|
24
+ | Architecture docs (layers, data flow, state machines, port contracts) | 9 docs |
25
+ | Agent definitions (code-reviewer, risk-auditor, etc.) | ECC-ready skeleton |
26
+ | Workflow skills (TDD, backtest, data pipeline) | ECC-ready skeleton |
27
+ | Coding rules (universal + language-specific) | common.md included |
28
+ | Settings & hooks (permissions, automation) | pre-configured |
29
+ | **Total files provisioned** | **17 docs + configs** |
30
+
31
+ ---
32
+
33
+ ## 🚀 Why This Exists
34
+
35
+ Every Claude Code project has the same cold-start problem:
36
+
37
+ | Without Harness | With `create-harness-vibe-coding` |
38
+ |---|---|
39
+ | ❌ Agents skip docs, hallucinate behavior | ✅ CLAUDE.md routes agents to exact docs by role |
40
+ | ❌ No TDD enforcement — agents ship untested code | ✅ agent-workflow.md enforces RED-GREEN-REFACTOR |
41
+ | ❌ Architecture boundaries blur over time | ✅ domain/ports.md locks layer contracts |
42
+ | ❌ State machines live in someone's head | ✅ state-machines.md documents every transition |
43
+ | ❌ Cross-session memory lost | ✅ MEMORY.md + self-learning system |
44
+ | ❌ 2+ hours to set up project structure | ✅ **4 seconds** |
45
+
46
+ ---
47
+
48
+ ## 🧠 How It Works
49
+
50
+ ```mermaid
51
+ graph LR
52
+ A[npx scaffold] --> B[CLAUDE.md + docs/ + .claude/]
53
+ B --> C[Start Claude Code]
54
+ C --> D[Claude reads SETUP.md]
55
+ D --> E[Pulls agents/skills/rules from ECC]
56
+ E --> F[Project ready — TDD loop active]
57
+ ```
58
+
59
+ ### What happens after `npx`:
60
+
61
+ 1. **CLAUDE.md** — Agent reads this first. Role-based routing table sends each agent to the right docs.
62
+ 2. **docs/architecture.md** — Clean architecture layers. Harness runs the shell; domain defines the business.
63
+ 3. **docs/agent-workflow.md** — TDD loop, subagent roles, write set rules, conflict resolution.
64
+ 4. **docs/data-flow.md** — Every event's normal path + failure branches — the #1 doc AI fabricates without.
65
+ 5. **docs/state-machines.md** — Every stateful component. Transition table. Illegal transitions explicitly denied.
66
+ 6. **.claude/settings.json** — Permissions pre-configured (allow git/npm/pytest, deny rm/sudo/curl). Hooks ready.
67
+ 7. **SETUP.md** — Temporary guide. Claude reads it, pulls agents/skills/rules from [ECC](https://github.com/affaan-m/ECC). User deletes it after.
68
+
69
+ ---
70
+
71
+ ## 📦 What's Inside
72
+
73
+ ```
74
+ my-project/
75
+ ├── CLAUDE.md ← Role-based doc navigation + memory/self-learning
76
+ ├── AGENTS.md ← Coding agent entry
77
+ ├── MEMORY.md ← Cross-session resource index
78
+ ├── SETUP.md ← Temporary init guide (delete after setup)
79
+ ├── .gitignore
80
+ ├── docs/
81
+ │ ├── README.md ← Project doc entry point
82
+ │ ├── harness/
83
+ │ │ ├── architecture.md ← Layer rules, components, ADRs
84
+ │ │ ├── agent-workflow.md ← TDD loop, subagent roles, write sets
85
+ │ │ ├── data-flow.md ← Event lifecycle: normal + failure paths
86
+ │ │ └── state-machines.md ← State enums, transition tables, guards
87
+ │ ├── domain/
88
+ │ │ └── ports.md ← Port contracts: pre/postconditions, errors
89
+ │ ├── features/
90
+ │ │ └── _template.md ← Kiro-lite feature doc template
91
+ │ └── research/
92
+ │ ├── PRD.md ← MVP scope & acceptance template
93
+ │ └── scaffolds.md ← Tech research & decision record
94
+ ├── .claude/
95
+ │ ├── settings.json ← Permissions + hooks
96
+ │ ├── agents/ ← Pull from ECC
97
+ │ ├── skills/ ← Pull from ECC
98
+ │ ├── hooks/ ← Configure as needed
99
+ │ └── rules/ecc/
100
+ │ └── common.md ← Universal coding rules (always active)
101
+ └── tests/ ← Your test suite goes here
102
+ ```
103
+
104
+ ---
105
+
106
+ ## 🌐 Ecosystem Compatibility
107
+
108
+ | Platform | Status |
109
+ |----------|--------|
110
+ | [ECC](https://github.com/affaan-m/ECC) (206K+ ★) | ✅ Agents, skills, rules auto-pull |
111
+ | [Superpowers](https://github.com/obra/superpowers) (185K+ ★) | ✅ `/plugin install superpowers` |
112
+ | [awesome-claude-code-config](https://github.com/Mizoreww/awesome-claude-code-config) | ✅ Rules & self-learning configs |
113
+ | [claude-toolbox](https://github.com/serpro69/claude-toolbox) | ✅ Multi-language skills |
114
+ | Claude Code | ✅ Native settings.json + hooks |
115
+ | Codex / Cursor / Gemini CLI | ✅ Compatible (docs-only pattern) |
116
+
117
+ ---
118
+
119
+ ## 🔧 Usage
120
+
121
+ ```bash
122
+ # Interactive mode
123
+ npx create-harness-vibe-coding@latest
124
+
125
+ # Non-interactive (CI/CD)
126
+ npx create-harness-vibe-coding@latest my-app ./dist/my-app
127
+
128
+ # Always get the latest version
129
+ npx create-harness-vibe-coding@latest my-project
130
+ ```
131
+
132
+ ### After scaffolding, tell Claude:
133
+
134
+ ```
135
+ "Read SETUP.md. This is a Python quant project. Pull agents, skills, and rules from ECC."
136
+ "Read SETUP.md. This is a React TypeScript app. I need TDD workflow and code review."
137
+ "Read SETUP.md. This is a Go microservice. Set up matching agents and testing skills."
138
+ ```
139
+
140
+ ---
141
+
142
+ ## 📊 Performance
143
+
144
+ | Metric | Value |
145
+ |--------|-------|
146
+ | Cold install + scaffold | < 4s |
147
+ | Package size | 19.9 kB |
148
+ | Unpacked | 49.4 kB |
149
+ | Dependencies | 2 (@clack/prompts, picocolors) |
150
+ | Node requirement | ≥ 18 |
151
+ | Zero runtime deps after scaffold | ✅ |
152
+
153
+ ---
154
+
155
+ ## 👥 Contributing
156
+
157
+ PRs welcome. The template docs live in `templates/common/` — edit them to change what gets scaffolded.
158
+
159
+ ---
160
+
161
+ ## 📄 License
162
+
163
+ MIT © [zingspark](https://github.com/zingspark)
164
+
165
+ ---
166
+
167
+ <p align="center">
168
+ <sub>Built for the vibe-coding era. Scaffold fast, build faster.</sub>
169
+ </p>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-harness-vibe-coding",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Scaffold a vibe-coding agentic harness — CLAUDE.md, docs/, .claude skeleton ready for ECC agents/skills/rules",
5
5
  "type": "module",
6
6
  "bin": {
@@ -23,8 +23,7 @@
23
23
  },
24
24
  "repository": {
25
25
  "type": "git",
26
- "url": "https://github.com/LiWeny16/q-profit.git",
27
- "directory": "create-harness-vibe-coding"
26
+ "url": "https://github.com/zingspark/create-harness-vibe-coding.git"
28
27
  },
29
28
  "keywords": [
30
29
  "claude-code",
package/src/generator.js CHANGED
@@ -8,7 +8,6 @@ const TEMPLATES_DIR = path.resolve(__dirname, '..', 'templates', 'common');
8
8
 
9
9
  /**
10
10
  * Copy a directory recursively, replacing {{vars}} in file contents.
11
- * Skips dirs named '.gitkeep-placeholder'.
12
11
  */
13
12
  function copyDir(src, dest, vars) {
14
13
  fs.mkdirSync(dest, { recursive: true });
@@ -64,7 +63,7 @@ export function generate({ projectName, targetDir }) {
64
63
  if (fs.existsSync(resolvedDir)) {
65
64
  const existing = fs.readdirSync(resolvedDir).filter(f => f !== '.git');
66
65
  if (existing.length > 0) {
67
- console.log(pc.yellow(`⚠ 目录 "${targetDir}" 已存在且非空,文件可能被覆盖`));
66
+ console.log(pc.yellow(`⚠ Directory "${targetDir}" already exists and is not empty. Files may be overwritten.`));
68
67
  }
69
68
  }
70
69
 
@@ -72,14 +71,14 @@ export function generate({ projectName, targetDir }) {
72
71
 
73
72
  try {
74
73
  // 1. Copy all template files
75
- console.log(pc.cyan('📋 复制模板文件...'));
74
+ console.log(pc.cyan('📋 Copying templates...'));
76
75
  copyDir(TEMPLATES_DIR, resolvedDir, vars);
77
76
 
78
77
  // List all created files from templates
79
78
  created.push(...walkFiles(TEMPLATES_DIR).map(f => f.replace(/\\/g, '/')));
80
79
 
81
80
  // 2. Create empty directories
82
- console.log(pc.cyan('📁 创建占位目录...'));
81
+ console.log(pc.cyan('📁 Creating placeholder directories...'));
83
82
  const emptyDirs = [
84
83
  '.claude/agents',
85
84
  '.claude/skills',
package/src/index.js CHANGED
@@ -24,9 +24,9 @@ if (argName) {
24
24
  targetDir = argDir || `./${projectName}`;
25
25
 
26
26
  console.log(pc.dim('────────────────────────────────────────────'));
27
- console.log(` 项目名称 ${pc.green(projectName)}`);
28
- console.log(` 目标目录 ${pc.green(targetDir)}`);
29
- console.log(` 将创建 ${pc.cyan('CLAUDE.md, docs/, .claude/, SETUP.md, tests/')}`);
27
+ console.log(` Project ${pc.green(projectName)}`);
28
+ console.log(` Directory ${pc.green(targetDir)}`);
29
+ console.log(` Creates ${pc.cyan('CLAUDE.md, docs/, .claude/, SETUP.md, tests/')}`);
30
30
  console.log(pc.dim('────────────────────────────────────────────'));
31
31
  console.log('');
32
32
 
@@ -37,30 +37,29 @@ if (argName) {
37
37
  try {
38
38
  projectName = await askProjectName();
39
39
  } catch {
40
- // Fallback for non-TTY
41
40
  projectName = 'my-vibe-project';
42
- console.log(pc.dim(` 项目名称: ${projectName} (默认)`));
41
+ console.log(pc.dim(` Project: ${projectName} (default)`));
43
42
  }
44
43
 
45
44
  try {
46
45
  targetDir = await askTargetDir(projectName);
47
46
  } catch {
48
47
  targetDir = `./${projectName}`;
49
- console.log(pc.dim(` 目标目录: ${targetDir} (默认)`));
48
+ console.log(pc.dim(` Directory: ${targetDir} (default)`));
50
49
  }
51
50
 
52
51
  console.log('');
53
52
  console.log(pc.dim('────────────────────────────────────────────'));
54
- console.log(` 项目名称 ${pc.green(projectName)}`);
55
- console.log(` 目标目录 ${pc.green(targetDir)}`);
56
- console.log(` 将创建 ${pc.cyan('CLAUDE.md, docs/, .claude/, SETUP.md, tests/')}`);
53
+ console.log(` Project ${pc.green(projectName)}`);
54
+ console.log(` Directory ${pc.green(targetDir)}`);
55
+ console.log(` Creates ${pc.cyan('CLAUDE.md, docs/, .claude/, SETUP.md, tests/')}`);
57
56
  console.log(pc.dim('────────────────────────────────────────────'));
58
57
  console.log('');
59
58
 
60
59
  let proceed = true;
61
60
  try {
62
61
  proceed = await p.confirm({
63
- message: '确认生成?',
62
+ message: 'Confirm generation?',
64
63
  initialValue: true,
65
64
  });
66
65
  if (p.isCancel(proceed)) proceed = false;
@@ -69,7 +68,7 @@ if (argName) {
69
68
  }
70
69
 
71
70
  if (!proceed) {
72
- p.cancel('已取消');
71
+ p.cancel('Cancelled');
73
72
  process.exit(0);
74
73
  }
75
74
 
@@ -80,24 +79,24 @@ if (argName) {
80
79
 
81
80
  function printResult(result, targetDir) {
82
81
  if (result.success) {
83
- console.log(pc.green(`\n✅ 项目已创建! ${result.created.length} 个文件\n`));
82
+ console.log(pc.green(`\n✅ Project created! ${result.created.length} files\n`));
84
83
 
85
- console.log(pc.bold('下一步:'));
84
+ console.log(pc.bold('Next steps:'));
86
85
  console.log(` ${pc.cyan(`cd ${targetDir}`)}`);
87
- console.log(` ${pc.cyan('claude')} # 启动 Claude Code`);
88
- console.log(` 告诉 Claude: "${pc.yellow('阅读 SETUP.md 并帮我初始化项目')}"`);
86
+ console.log(` ${pc.cyan('claude')} # Start Claude Code`);
87
+ console.log(` Tell Claude: "${pc.yellow('Read SETUP.md and initialize this project')}"`);
89
88
  console.log('');
90
- console.log(pc.dim(' SETUP.md 是临时文件,初始化完成后可删除'));
89
+ console.log(pc.dim(' SETUP.md is temporary. Delete it after initialization.'));
91
90
  console.log('');
92
91
 
93
92
  if (result.errors.length > 0) {
94
- console.log(pc.red(`\n⚠ ${result.errors.length} 个警告:`));
93
+ console.log(pc.red(`\n⚠ ${result.errors.length} warning(s):`));
95
94
  for (const err of result.errors) {
96
95
  console.log(pc.red(` - ${err}`));
97
96
  }
98
97
  }
99
98
  } else {
100
- console.log(pc.red('\n❌ 生成失败:'));
99
+ console.log(pc.red('\n❌ Generation failed:'));
101
100
  for (const err of result.errors) {
102
101
  console.log(pc.red(` - ${err}`));
103
102
  }
package/src/prompts.js CHANGED
@@ -3,18 +3,18 @@ import pc from 'picocolors';
3
3
 
4
4
  export async function askProjectName() {
5
5
  const name = await p.text({
6
- message: '项目名称?',
6
+ message: 'Project name?',
7
7
  placeholder: 'my-vibe-project',
8
8
  defaultValue: 'my-vibe-project',
9
9
  validate(value) {
10
- if (!value.trim()) return '项目名不能为空';
11
- if (!/^[a-zA-Z0-9_-]+$/.test(value)) return '只允许字母、数字、连字符和下划线';
10
+ if (!value.trim()) return 'Project name is required';
11
+ if (!/^[a-zA-Z0-9_-]+$/.test(value)) return 'Only letters, numbers, hyphens, and underscores allowed';
12
12
  return;
13
13
  },
14
14
  });
15
15
 
16
16
  if (p.isCancel(name)) {
17
- p.cancel('已取消');
17
+ p.cancel('Cancelled');
18
18
  process.exit(0);
19
19
  }
20
20
 
@@ -23,17 +23,17 @@ export async function askProjectName() {
23
23
 
24
24
  export async function askTargetDir(projectName) {
25
25
  const dir = await p.text({
26
- message: '目标目录?',
26
+ message: 'Target directory?',
27
27
  placeholder: `./${projectName}`,
28
28
  defaultValue: `./${projectName}`,
29
29
  validate(value) {
30
- if (!value.trim()) return '目录不能为空';
30
+ if (!value.trim()) return 'Directory is required';
31
31
  return;
32
32
  },
33
33
  });
34
34
 
35
35
  if (p.isCancel(dir)) {
36
- p.cancel('已取消');
36
+ p.cancel('Cancelled');
37
37
  process.exit(0);
38
38
  }
39
39
 
@@ -1,22 +1,23 @@
1
1
  # CLAUDE.md
2
2
 
3
- ## 📖 文档导航(每次任务前必读)
3
+ ## 📖 Doc Navigation (read before every task)
4
4
 
5
- `@docs/README.md` 是项目事实源入口。收到任务后,按角色走:
5
+ `@docs/README.md` is the project fact source. Route by role:
6
6
 
7
- | 你的角色 | 必读文档 |
8
- |---------|---------|
9
- | 写代码 / 实现功能 | `docs/harness/agent-workflow.md` → `docs/features/_template.md` |
10
- | 设计架构 / 新增模块 | `docs/harness/architecture.md` → `docs/domain/ports.md` |
11
- | 审查代码 | `docs/harness/state-machines.md` → tests |
12
- | bug / 排查问题 | `docs/harness/data-flow.md` → `docs/harness/state-machines.md` |
13
- | 不熟悉项目 | `docs/research/PRD.md` → `docs/harness/architecture.md` |
7
+ | Your Role | Required Reading |
8
+ |-----------|-----------------|
9
+ | Writing code / implementing | `docs/harness/agent-workflow.md` → `docs/features/_template.md` |
10
+ | Designing architecture / new modules | `docs/harness/architecture.md` → `docs/domain/ports.md` |
11
+ | Reviewing code | `docs/harness/state-machines.md` → tests |
12
+ | Fixing bugs / debugging | `docs/harness/data-flow.md` → `docs/harness/state-machines.md` |
13
+ | New to the project | `docs/research/PRD.md` → `docs/harness/architecture.md` |
14
14
 
15
- **硬规则**:
16
- - 碰跨层边界之前,必须读过 `docs/domain/ports.md`
17
- - 新增失败路径之前,必须读过 `docs/harness/data-flow.md`
18
- - 修改有状态组件之前,必须读过 `docs/harness/state-machines.md`
19
- - 不确定该不该开 feature doc?读 `docs/harness/agent-workflow.md` §1
15
+ **Hard rules**:
16
+ - Before touching cross-layer boundaries, read `docs/domain/ports.md`
17
+ - Before adding failure paths, read `docs/harness/data-flow.md`
18
+ - Before modifying stateful components, read `docs/harness/state-machines.md`
19
+ - Unsure whether to open a feature doc? Read `docs/harness/agent-workflow.md` §1
20
+ - **Every new session must read `@MEMORY.md`** for accumulated context
20
21
 
21
22
  ---
22
23
 
@@ -86,52 +87,53 @@ Strong success criteria let you loop independently. Weak criteria ("make it work
86
87
 
87
88
  ---
88
89
 
89
- ## 5. 记忆与自学习
90
+ ## 5. Memory & Self-Learning
90
91
 
91
- 遇到用户表达"记住 / 偏好 / 习惯 / 纠正"意图时,**持久化到 `MEMORY.md`**,让后续会话能复用。
92
+ When a user expresses "remember / preference / habit / correction" intent, **persist to `MEMORY.md`** for reuse across sessions.
93
+ **Important**: Every new session must read `@MEMORY.md`.
92
94
 
93
- ### 5.1 触发词
95
+ ### 5.1 Trigger Words
94
96
 
95
- 当用户消息包含以下关键词或意图时,必须写入 `MEMORY.md`:
97
+ When the user's message contains these keywords or intent, write to `MEMORY.md`:
96
98
 
97
- | 触发词/句式 | 含义 | 写入栏目 |
99
+ | Trigger Phrase | Meaning | Write To |
98
100
  |---|---|---|
99
- | "记住…""记下…""帮我记住…" | 用户想持久化一条事实/偏好 | User Mem |
100
- | "以后不要…""下次别…""别再…" | 用户纠正某个行为,以后避免 | User Mem |
101
- | "下次记得…""以后都…""以后遇到…就…" | 用户指定未来的默认行为 | User Mem |
102
- | "我喜欢…""我习惯…""我偏好…" | 用户表达工作习惯或偏好 | User Mem |
101
+ | "remember…", "note…", "save…" | User wants to persist a fact/preference | User Mem |
102
+ | "don't ever…", "never…", "stop doing…" | User corrects a behavior — avoid in future | User Mem |
103
+ | "next time…", "always…", "from now on…" | User specifies a future default behavior | User Mem |
104
+ | "I prefer…", "I like…", "my workflow…" | User expresses a work habit or preference | User Mem |
103
105
 
104
- 如果消息是否触发记忆有歧义,先问用户确认再写入。不要为每次对话自动记录。
106
+ If unclear whether a message triggers memory, ask the user before writing. Don't auto-record every conversation.
105
107
 
106
- ### 5.2 MEMORY.md 写入格式
108
+ ### 5.2 MEMORY.md Write Format
107
109
 
108
- `MEMORY.md` `## User Mem` 栏目下,按日期倒序追加。每条格式:
110
+ Append to `## User Mem` in `MEMORY.md`, newest first:
109
111
 
110
112
  ```markdown
111
- ### YYYY-MM-DD — <简短标题>
112
- - **触发词**:<用户原话>
113
- - **行为**:<以后应该怎么做 / 避免做什么>
114
- - **原因**:<用户说明的原因,如果有>
113
+ ### YYYY-MM-DD — <short title>
114
+ - **Trigger**: <user's exact words>
115
+ - **Behavior**: <what to do / what to avoid going forward>
116
+ - **Why**: <user's reason, if provided>
115
117
  ```
116
118
 
117
- ### 5.3 自学习:工具调用规范
119
+ ### 5.3 Self-Learning: Tool Usage Standards
118
120
 
119
- Claude Code 发现以下模式时,在不涉及用户隐私的前提下,自动追加到 `MEMORY.md` `## 工具调用规范` 栏目:
121
+ When Claude Code discovers the following patterns (without involving user privacy), auto-append to `## Tool Usage Standards` in `MEMORY.md`:
120
122
 
121
- | 发现模式 | 记录内容 |
123
+ | Pattern Discovered | Record |
122
124
  |---|---|
123
- | 某工具/MCP/skill 连续 3 次以上被高频调用但每次都失败或有更优替代 | 记录:场景失败原因推荐替代方案 |
124
- | 某类代码错误反复出现在同一文件/模块(如 lint 报错、类型错误、导入错误) | 记录:错误类型触发条件修复模板 |
125
- | 某个 skill/MCP 的调用方式与最佳实践不符导致低效 | 记录:正确用法避免的用法 |
125
+ | A tool/MCP/skill fails 3+ times when called frequently, or has a better alternative | Record: scenario failure cause recommended alternative |
126
+ | A code error repeats in the same file/module (lint errors, type errors, import errors) | Record: error type trigger condition fix template |
127
+ | A skill/MCP is called in a way that deviates from best practices, causing inefficiency | Record: correct usage usage to avoid |
126
128
 
127
- 格式:
129
+ Format:
128
130
 
129
131
  ```markdown
130
- ### <工具名/skill名><问题简述>
131
- - **场景**:<什么情况下触发>
132
- - **问题**:<具体现象>
133
- - **方案**:<推荐做法>
134
- - **日期**:<首次记录日期>
132
+ ### <tool/skill name> <brief issue>
133
+ - **Scenario**: <when it triggers>
134
+ - **Problem**: <specific symptom>
135
+ - **Solution**: <recommended approach>
136
+ - **Date**: <first recorded date>
135
137
  ```
136
138
 
137
- 如果同一问题已存在记录,更新其内容而非新增一条。如果新发现与旧记录矛盾,替换旧记录并标注日期。
139
+ If the same issue already exists, update it rather than creating a duplicate. If a new finding contradicts an old record, replace the old one and note the date.
@@ -1,35 +1,35 @@
1
- # MEMORY.md — {{projectName}} 项目资源索引
1
+ # MEMORY.md — {{projectName}} Project Resource Index
2
2
 
3
- > 当前项目事实源从 `CLAUDE.md -> docs/README.md` 进入。此文件用于跨会话持久化:资源索引、用户偏好、工具调用规范。
3
+ > The project fact source is reached via `CLAUDE.md -> docs/README.md`. This file persists cross-session context: resource index, user preferences, tool usage standards.
4
4
 
5
- ## Agents(子代理)
5
+ ## Agents (Sub-agents)
6
6
 
7
- > Claude Code [ECC](https://github.com/affaan-m/ECC) 初始化。
8
- > 初始化命令:在 Claude Code 中描述你的项目类型和语言,Claude 会自动拉取匹配的 agents
7
+ > Pending initialization by Claude Code from [ECC](https://github.com/affaan-m/ECC).
8
+ > Init command: describe your project type and language to Claude it will pull matching agents.
9
9
 
10
- ## Skills(工作流)
10
+ ## Skills (Workflows)
11
11
 
12
- > Claude Code [ECC](https://github.com/affaan-m/ECC) [awesome-claude-code-config](https://github.com/Mizoreww/awesome-claude-code-config) 初始化。
12
+ > Pending initialization by Claude Code from [ECC](https://github.com/affaan-m/ECC) or [awesome-claude-code-config](https://github.com/Mizoreww/awesome-claude-code-config).
13
13
 
14
- ## Rules(代码规则)
14
+ ## Rules (Code Rules)
15
15
 
16
- 放在 `.claude/rules/ecc/` 下,由 CC 引擎自动加载:
16
+ Located under `.claude/rules/ecc/`, auto-loaded by the CC engine:
17
17
 
18
- - [common.md](.claude/rules/ecc/common.md) — 通用编码规则(alwaysApply: true
19
- - 语言专属规则待 Claude Code 初始化(如 python.mdtypescript.md 等)
18
+ - [common.md](.claude/rules/ecc/common.md) — Universal coding rules (alwaysApply: true)
19
+ - Language-specific rules pending Claude Code initialization (e.g. python.md, typescript.md, etc.)
20
20
 
21
- ## Harness(运行时)
21
+ ## Harness (Runtime)
22
22
 
23
- - [架构文档](docs/harness/architecture.md)
24
- - [Agent 工作流](docs/harness/agent-workflow.md)
23
+ - [Architecture docs](docs/harness/architecture.md)
24
+ - [Agent workflow](docs/harness/agent-workflow.md)
25
25
 
26
26
  ## User Mem
27
27
 
28
- > 用户偏好、习惯、纠正指令。由 CLAUDE.md §5 触发写入,日期倒序。
29
- > 当前无记录等待用户首次"记住…"指令。
28
+ > User preferences, habits, corrections. Written by CLAUDE.md §5 triggers, newest first.
29
+ > No entries yet awaiting first "remember…" instruction.
30
30
 
31
- ## 工具调用规范
31
+ ## Tool Usage Standards
32
32
 
33
- > Claude Code 自学习记录:高频工具/MCP/skill 的坑、替代方案、常见错误修复模板。
34
- > CLAUDE.md §5.3 触发写入。
35
- > 当前无记录等待首次自动发现。
33
+ > Claude Code self-learning: high-frequency tool/MCP/skill pitfalls, alternatives, common error fix templates.
34
+ > Written by CLAUDE.md §5.3 triggers.
35
+ > No entries yet awaiting first auto-discovery.
@@ -1,67 +1,67 @@
1
- # SETUP.md — 项目初始化指南
1
+ # SETUP.md — Project Initialization Guide
2
2
 
3
- > ⚠️ **临时文件**本文件在初始化完成后应删除:`rm SETUP.md`
3
+ > ⚠️ **Temporary file** Delete after initialization: `rm SETUP.md`
4
4
 
5
5
  ---
6
6
 
7
- ## 你现在拥有了什么
7
+ ## What You Just Created
8
8
 
9
- `npx create-harness-vibe-coding` 为你搭建了一个 **vibe-coding agentic harness** 骨架:
9
+ `npx create-harness-vibe-coding` scaffolded a **vibe-coding agentic harness** skeleton:
10
10
 
11
11
  ```
12
12
  {{projectName}}/
13
- CLAUDE.md ← Agent 行为规范 + 记忆自学习系统
14
- AGENTS.md ← Coding agent 入口
15
- MEMORY.md ← 跨会话资源索引
16
- docs/ ← 架构文档(分层规则、工作流、端口合同)
13
+ CLAUDE.md ← Agent behavior guidelines + memory/self-learning system
14
+ AGENTS.md ← Coding agent entry point
15
+ MEMORY.md ← Cross-session resource index
16
+ docs/ ← Architecture docs (layer rules, workflows, port contracts)
17
17
  .claude/
18
- settings.json ← 权限 + Hooks 配置
19
- agents/ ← 待拉取 ECC agents
20
- skills/ ← 待拉取 ECC skills
21
- hooks/ ← 待配置自动化钩子
18
+ settings.json ← Permissions + Hooks config
19
+ agents/ ← Emptypull ECC agents here
20
+ skills/ ← Emptypull ECC skills here
21
+ hooks/ ← Emptyconfigure automation hooks here
22
22
  rules/ecc/
23
- common.md ← 通用编码规则(始终生效)
24
- tests/ ← 待初始化
25
- .gitignore ← 基础 Git 忽略规则
23
+ common.md ← Universal coding rules (always active)
24
+ tests/ ← Pending initialization
25
+ .gitignore ← Basic Git ignore rules
26
26
  ```
27
27
 
28
28
  ---
29
29
 
30
- ## 下一步:用 Claude Code 初始化项目内容
30
+ ## Next Steps: Initialize with Claude Code
31
31
 
32
- ### Step 1 — 启动 Claude Code
32
+ ### Step 1 — Start Claude Code
33
33
 
34
34
  ```bash
35
35
  claude
36
36
  ```
37
37
 
38
- ### Step 2 — 描述你的项目
38
+ ### Step 2 — Describe Your Project
39
39
 
40
- 告诉 Claude 你的项目类型、语言和技术栈。Claude 会:
40
+ Tell Claude your project type, language, and tech stack. Claude will:
41
41
 
42
- 1. [ECC](https://github.com/affaan-m/ECC) 拉取匹配的 **agents**(如 code-reviewerplannersecurity-reviewer
43
- 2. ECC 拉取匹配的 **skills**(如 tdd-workflowdjango-patternsreact-patterns
44
- 3. ECC 拉取对应语言的 **rules**(如 python.mdtypescript.md
45
- 4. 根据项目需要配置 **hooks**(如 PostToolUse 自动 lint、PreToolUse 安全门禁)
42
+ 1. Pull matching **agents** from [ECC](https://github.com/affaan-m/ECC) (e.g. code-reviewer, planner, security-reviewer)
43
+ 2. Pull matching **skills** from ECC (e.g. tdd-workflow, django-patterns, react-patterns)
44
+ 3. Pull language-specific **rules** from ECC (e.g. python.md, typescript.md)
45
+ 4. Configure **hooks** as needed (e.g. PostToolUse auto-lint, PreToolUse security gate)
46
46
 
47
- **对话示例**:
47
+ **Example prompts**:
48
48
 
49
49
  ```
50
- 你: 这是一个 Python 量化交易项目,帮我从 ECC 初始化 agentsskills rules
51
- 你: 这是一个 React + TypeScript 前端项目,需要 TDD workflow
52
- 你: 这是一个 Go 微服务项目,帮我配置对应的代码审查和测试 skills
50
+ You: This is a Python quant trading project. Initialize agents, skills, and rules from ECC.
51
+ You: This is a React + TypeScript frontend project. I need the TDD workflow.
52
+ You: This is a Go microservice project. Set up code review and testing skills.
53
53
  ```
54
54
 
55
- ### Step 3 — 可选:安装 Superpowers 强化工程纪律
55
+ ### Step 3 — Optional: Install Superpowers
56
56
 
57
57
  ```bash
58
- # Claude Code 中运行
58
+ # Inside Claude Code
59
59
  /plugin install superpowers@claude-plugins-official
60
60
  ```
61
61
 
62
- Superpowers 提供:brainstorming → writing-plans → TDD → code-review 的完整闭环。
62
+ Superpowers provides: brainstorming → writing-plans → TDD → code-review loop.
63
63
 
64
- ### Step 4 — 初始化完成后
64
+ ### Step 4 — Clean Up
65
65
 
66
66
  ```bash
67
67
  rm SETUP.md
@@ -69,23 +69,23 @@ rm SETUP.md
69
69
 
70
70
  ---
71
71
 
72
- ## 参考资源
72
+ ## Reference Resources
73
73
 
74
- | 资源 | 地址 | 用途 |
75
- |------|------|------|
76
- | ECC | https://github.com/affaan-m/ECC | Agents / Skills / Rules 主仓库 |
77
- | awesome-claude-code-config | https://github.com/Mizoreww/awesome-claude-code-config | 多语言规则 + 自学习配置 |
78
- | Superpowers | https://github.com/obra/superpowers | 工程纪律插件 |
79
- | claude-toolbox | https://github.com/serpro69/claude-toolbox | 多语言技能工具包 |
74
+ | Resource | URL | Purpose |
75
+ |----------|-----|---------|
76
+ | ECC | https://github.com/affaan-m/ECC | Main agents/skills/rules repo |
77
+ | awesome-claude-code-config | https://github.com/Mizoreww/awesome-claude-code-config | Multi-language rules + self-learning config |
78
+ | Superpowers | https://github.com/obra/superpowers | Engineering discipline plugin |
79
+ | claude-toolbox | https://github.com/serpro69/claude-toolbox | Multi-language skills toolkit |
80
80
 
81
81
  ---
82
82
 
83
- ## 自定义
83
+ ## Customization
84
84
 
85
- - **CLAUDE.md** — 可按项目需求修改行为规范
86
- - **.claude/settings.json** — 按需调整权限和 hooks
87
- - **.claude/rules/ecc/** — 语言规则由 Claude Code 自动添加
85
+ - **CLAUDE.md** — Edit behavior guidelines per project needs
86
+ - **.claude/settings.json** — Adjust permissions and hooks as needed
87
+ - **.claude/rules/ecc/** — Language rules auto-added by Claude Code
88
88
 
89
89
  ---
90
90
 
91
- > 本项目由 `create-harness-vibe-coding` 生成。保留 MIT 许可。
91
+ > Generated by `create-harness-vibe-coding`. MIT License.
@@ -1,112 +1,112 @@
1
- # {{projectName}} — 文档入口
1
+ # {{projectName}} — Docs Entry Point
2
2
 
3
- > **定位**:给人和 coding agent 共用的项目地图。`AGENTS.md` 负责让 agent 先读 `CLAUDE.md`,再从这里进入项目事实源。
3
+ > **Purpose**: A shared project map for humans and coding agents. `AGENTS.md` tells agents to read `CLAUDE.md` first, then enter the project fact source from here.
4
4
  >
5
- > **原则**:短入口 + 分主题文档。不要把所有规则塞进 `CLAUDE.md` `AGENTS.md`。
5
+ > **Principle**: Short entry + topic-specific docs. Don't cram everything into `CLAUDE.md` or `AGENTS.md`.
6
6
 
7
7
  ---
8
8
 
9
- ## 0-1 项目必经流程
9
+ ## 0-1 Required Project Flow
10
10
 
11
- 从零开始做一个项目时,必须按下面顺序产出文档。前一阶段没有最低可用结论,不进入后一阶段。
11
+ When starting from scratch, produce docs in this order. Don't move to the next phase without a minimum viable conclusion from the previous one.
12
12
 
13
- | 顺序 | 产物 | 必须回答的问题 | 完成标准 |
13
+ | Order | Artifact | Must Answer | Completion Standard |
14
14
  | --- | --- | --- | --- |
15
- | 1 | [research/scaffolds.md](research/scaffolds.md) | 别人怎么做?有哪些候选模板、框架、约束?为什么采用/不采用? | 至少 3 个参考物;每个写清 Purpose / Strength / Weakness / Decision |
16
- | 2 | [research/PRD.md](research/PRD.md) | 这个 MVP 到底解决什么?明确不做什么?怎么验收? | 一页内;包含 MVPNon-goals、可验证验收标准 |
17
- | 3 | [harness/architecture.md](harness/architecture.md) | 系统分几层?组件边界是什么?harness 能做什么、不能做什么? | 分层依赖、核心组件、不可违反约束、关键决策都写清 |
18
- | 4 | [domain/ports.md](domain/ports.md) | 层与层之间用什么合同通信?错误和幂等语义是什么? | 每个端口有前置条件、后置条件、错误语义、已知实现 |
19
- | 5 | [harness/data-flow.md](harness/data-flow.md) | 正常路径和失败路径怎么跑?调用方看到什么? | 至少 1 条核心流程;每个失败点都有系统行为和恢复方式 |
20
- | 6 | [harness/state-machines.md](harness/state-machines.md) | 哪些组件有状态?哪些转移合法/非法? | 每个有状态组件有状态枚举、转移表、非法转移说明 |
21
- | 7 | [harness/agent-workflow.md](harness/agent-workflow.md) | agent 怎么分工、TDD、验证和闭环? | Feature doc 模板、subagent 分工、write set、完成标准写清 |
22
- | 8 | tests + implementation | 设计是否被代码证明? | 最小垂直切片可运行;测试覆盖核心成功/失败路径 |
23
-
24
- **硬门槛**:
25
- - 如果相关文档仍然只剩 `{{...}}` 占位符,不要声称架构已定稿。
26
- - **最小可开始编码的文档集**:`research/PRD.md` + `harness/architecture.md` + 至少 1 个已填好的端口合同。达到这个门槛后可以开始最小垂直切片,但必须在 feature doc 或测试里记录尚未补齐的 `data-flow.md` / `state-machines.md` 风险。
27
- - 如果新增或修改架构边界,必须同步更新对应文档和测试。
28
- - 如果实现需要超过一个短会话,先按 [features/_template.md](features/_template.md) 开 feature doc;feature doc 必须包含目的、边界、任务、验证、决策记录。
29
-
30
- ## 每份文档的完成标准
31
-
32
- | 文档 | 最低完成标准 | 可以暂缺 |
15
+ | 1 | [research/scaffolds.md](research/scaffolds.md) | What do others do? Which templates, frameworks, constraints? Why adopt/reject? | At least 3 references; each with Purpose / Strength / Weakness / Decision |
16
+ | 2 | [research/PRD.md](research/PRD.md) | What does this MVP solve? What is explicitly NOT in scope? How to verify? | One page; MVP, Non-goals, verifiable acceptance criteria |
17
+ | 3 | [harness/architecture.md](harness/architecture.md) | How many layers? Component boundaries? What can/can't harness do? | Layer dependencies, core components, non-negotiable constraints, key decisions |
18
+ | 4 | [domain/ports.md](domain/ports.md) | What contracts between layers? Error and idempotency semantics? | Each port: preconditions, postconditions, error semantics, known implementations |
19
+ | 5 | [harness/data-flow.md](harness/data-flow.md) | Normal path and failure paths? What does the caller see? | At least 1 core flow; each failure point has system behavior and recovery |
20
+ | 6 | [harness/state-machines.md](harness/state-machines.md) | Which components have state? Which transitions are legal/illegal? | Each stateful component: state enum, transition table, illegal transitions |
21
+ | 7 | [harness/agent-workflow.md](harness/agent-workflow.md) | How do agents divide work, TDD, verify, and close? | Feature doc template, subagent roles, write set, completion criteria |
22
+ | 8 | tests + implementation | Is the design proven by code? | Minimal vertical slice runs; tests cover core success/failure paths |
23
+
24
+ **Hard gates**:
25
+ - If a doc still has `{{...}}` placeholders, don't claim the architecture is finalized.
26
+ - **Minimum docs to start coding**: `research/PRD.md` + `harness/architecture.md` + at least 1 filled port contract. Once there, start a minimal vertical slice, but record risks from missing `data-flow.md` / `state-machines.md` in the feature doc or tests.
27
+ - If architecture boundaries change, sync docs and tests.
28
+ - If implementation spans more than one short session, open a feature doc from [features/_template.md](features/_template.md) first.
29
+
30
+ ## Doc Completion Standards
31
+
32
+ | Doc | Minimum Standard | Can Defer |
33
33
  | --- | --- | --- |
34
- | `research/scaffolds.md` | 至少 3 个参考物;每个有 Purpose / Strength / Weakness / Decision;有最终决策 | 被放弃方案可后补 |
35
- | `research/PRD.md` | WhyMVPNon-goals、决策优先级、验收标准都不是占位符 | 非功能性指标可先写 MVP 级目标 |
36
- | `harness/architecture.md` | 分层依赖、核心组件、至少 1 ADR、不可违反约束 | Runner 变体可在只有一种 runner 时写"暂无" |
37
- | `domain/ports.md` | 至少 1 个端口有前置条件、后置条件、错误语义、幂等性、已知实现 | 后续端口可随 feature 增量补 |
38
- | `harness/data-flow.md` | 至少 1 条核心流程有正常路径 + 失败路径 | 次要流程可后补 |
39
- | `harness/state-machines.md` | 已有有状态组件都有状态枚举和转移表 | 无状态组件不用写 |
40
- | `harness/agent-workflow.md` | feature doc、write set、验证、关闭标准明确 | subagent 角色可按需要扩展 |
41
- | `features/*.md` | Requirements / Design / Tasks / Verification 四段闭环 | 小修可走快车道并说明原因 |
34
+ | `research/scaffolds.md` | At least 3 references; each with Purpose / Strength / Weakness / Decision; final decision recorded | Rejected options can be backfilled |
35
+ | `research/PRD.md` | Why, MVP, Non-goals, decision priorities, acceptance criteria are not placeholders | Non-functional targets can start as MVP-level goals |
36
+ | `harness/architecture.md` | Layer dependencies, core components, at least 1 ADR, non-negotiable constraints | Runner variants can say "none yet" when only one runner exists |
37
+ | `domain/ports.md` | At least 1 port with preconditions, postconditions, error semantics, idempotency, known impls | Additional ports can be added incrementally with features |
38
+ | `harness/data-flow.md` | At least 1 core flow with normal + failure paths | Secondary flows can come later |
39
+ | `harness/state-machines.md` | Every stateful component has state enum and transition table | Stateless components don't need entries |
40
+ | `harness/agent-workflow.md` | Feature doc, write set, verification, closure criteria are clear | Subagent roles can expand as needed |
41
+ | `features/*.md` | Requirements / Design / Tasks / Verification closed loop | Minor fixes can take the fast lane with a reason |
42
42
 
43
43
  ---
44
44
 
45
- ## Harness 边界
45
+ ## Harness Boundary
46
46
 
47
- 当前模板采用 `interfaces -> harness -> application -> domain` `infrastructure` 适配器的分层思路。这里的 `domain` 是任意业务域:数据分析、文档处理、代码修复、运营自动化等都可以挂在同一个 harness 底座上。
47
+ The current template uses `interfaces -> harness -> application -> domain` with `infrastructure` adapters. The `domain` is any business domain: data analysis, document processing, code repair, ops automation — all can hang off the same harness.
48
48
 
49
- | | 负责 | 不负责 |
49
+ | Layer | Responsible For | NOT Responsible For |
50
50
  | --- | --- | --- |
51
- | `interfaces/` | CLI / API / UI 入口 | 业务规则、数据源细节 |
52
- | `harness/` | 运行外壳、调度、安全门、审计、可观测性、失败控制 | 领域业务规则、领域决策、适配器实现细节 |
53
- | `application/` | 用例编排,把领域端口组合成业务行为 | 具体外部服务实现 |
54
- | `domain/` | 业务对象、业务不变量、端口协议 | 导入 harness / infrastructure / interfaces |
55
- | `infrastructure/` | 文件系统、数据库、外部 API、模型服务等端口实现 | 定义业务合同 |
51
+ | `interfaces/` | CLI / API / UI entry points | Business rules, data source details |
52
+ | `harness/` | Runtime shell, scheduling, safety gates, audit, observability, failure control | Domain business rules, domain decisions, adapter implementation details |
53
+ | `application/` | Use-case orchestration, composing domain ports into business actions | Specific external service implementations |
54
+ | `domain/` | Business objects, business invariants, port protocols | Importing harness / infrastructure / interfaces |
55
+ | `infrastructure/` | Filesystem, database, external API, model service port implementations | Defining business contracts |
56
56
 
57
- 判断一段代码该不该在 `harness/`:如果它是在"运行期间保护、记录、调度、恢复系统",放 harness;如果它是在"决定某个业务动作是否应该发生、代表什么领域含义",放 application/domain
57
+ How to decide: if it "protects, records, schedules, recovers the system during runtime" harness. If it "decides whether a business action should happen and what it means" application/domain.
58
58
 
59
59
  ---
60
60
 
61
- ## 文档地图
61
+ ## Doc Map
62
62
 
63
63
  ```text
64
64
  docs/
65
- ├── README.md ← 你在这里
65
+ ├── README.md ← You are here
66
66
  ├── features/
67
- │ └── _template.md ← 单功能实现文档模板(Kiro-lite
67
+ │ └── _template.md ← Single-feature implementation doc template (Kiro-lite)
68
68
  ├── harness/
69
- │ ├── agent-workflow.md ← agent 分工、TDD、闭环、write set 规则
70
- │ ├── architecture.md ← 组件全景、分层规则、关键设计决策
71
- │ ├── data-flow.md ← 端到端事件流转:正常路径 + 异常路径
72
- │ └── state-machines.md ← 有状态组件的状态转移图和转移表
69
+ │ ├── agent-workflow.md ← Agent roles, TDD, closure, write set rules
70
+ │ ├── architecture.md ← Component map, layer rules, key design decisions
71
+ │ ├── data-flow.md ← End-to-end event flow: normal + error paths
72
+ │ └── state-machines.md ← Stateful component transition diagrams and tables
73
73
  ├── domain/
74
- │ └── ports.md ← 跨层接口契约:前置/后置、错误语义
74
+ │ └── ports.md ← Cross-layer interface contracts: pre/post, error semantics
75
75
  └── research/
76
- ├── PRD.md ← 一页 MVP 边界和验收标准模板
77
- └── scaffolds.md ← 调研结论、参考模板、技术选型理由
76
+ ├── PRD.md ← One-page MVP scope and acceptance template
77
+ └── scaffolds.md ← Research conclusions, reference templates, tech rationale
78
78
  ```
79
79
 
80
80
  ---
81
81
 
82
- ## 阅读顺序
82
+ ## Reading Order
83
83
 
84
- | 角色 | 先读 | 然后读 |
84
+ | Role | Read First | Then |
85
85
  | --- | --- | --- |
86
- | 新加入开发者 | [research/PRD.md](research/PRD.md) | [harness/architecture.md](harness/architecture.md) |
87
- | 实现者 | [harness/agent-workflow.md](harness/agent-workflow.md) | [features/_template.md](features/_template.md) |
88
- | 审查者 | [harness/state-machines.md](harness/state-machines.md) | tests |
89
- | 架构维护者 | [research/scaffolds.md](research/scaffolds.md) | [harness/architecture.md](harness/architecture.md) |
86
+ | New developer | [research/PRD.md](research/PRD.md) | [harness/architecture.md](harness/architecture.md) |
87
+ | Implementer | [harness/agent-workflow.md](harness/agent-workflow.md) | [features/_template.md](features/_template.md) |
88
+ | Reviewer | [harness/state-machines.md](harness/state-machines.md) | tests |
89
+ | Architecture maintainer | [research/scaffolds.md](research/scaffolds.md) | [harness/architecture.md](harness/architecture.md) |
90
90
 
91
91
  ---
92
92
 
93
- ## 维护规则
93
+ ## Maintenance Rules
94
94
 
95
- - 代码变更影响架构:更新 `harness/architecture.md`。
96
- - 新增跨层接口:更新 `domain/ports.md`。
97
- - 新增流程或失败路径:更新 `harness/data-flow.md`。
98
- - 新增有状态组件:更新 `harness/state-machines.md`。
99
- - 新增外部依赖、模板、框架选择:更新 `research/scaffolds.md`。
100
- - 新增非平凡功能:复制 `features/_template.md` 创建 feature doc,并按 `harness/agent-workflow.md` 闭环。
101
- - 文档规则反复被 agent 忽略:不要继续加长入口文件,把规则变成测试、lint 或更具体的模板。
95
+ - Code change affects architecture → update `harness/architecture.md`.
96
+ - New cross-layer interface → update `domain/ports.md`.
97
+ - New flow or failure path → update `harness/data-flow.md`.
98
+ - New stateful component → update `harness/state-machines.md`.
99
+ - New external dependency, template, or framework choice → update `research/scaffolds.md`.
100
+ - Non-trivial feature → copy `features/_template.md`, follow `harness/agent-workflow.md`.
101
+ - Docs rules repeatedly ignored by agents → don't lengthen entry files; turn rules into tests, lint, or more specific templates.
102
102
 
103
103
  ---
104
104
 
105
- ## 外部参考
105
+ ## External References
106
106
 
107
- - OpenAI, Harness Engineering: `AGENTS.md` 作为目录,`docs/` 作为事实源;架构边界用测试/lint 机械化验证。
108
- - Anthropic, Claude Code Best Practices: `CLAUDE.md` 保持短且可维护,可用 `@docs/...` 引入项目文档。
109
- - OpenAI, PLANS.md / ExecPlans: 复杂任务使用自包含、可验证、可恢复的执行计划。
110
- - GitHub Spec Kit / Kiro Specs: 借用 requirements -> design -> tasks -> verification 的结构。
111
- - Anthropic, Building Effective Agents: agent loop 要基于环境反馈、明确停止条件和人工检查点。
112
- - arc42 / C4 / ADR / ARCHITECTURE.md: 分别提供架构章节、静态结构视图、决策记录和轻量代码地图。
107
+ - OpenAI, Harness Engineering: short `AGENTS.md` as directory, `docs/` as fact source; architecture boundaries enforced by tests/lint.
108
+ - Anthropic, Claude Code Best Practices: `CLAUDE.md` kept short and maintainable; use `@docs/...` to pull in project docs.
109
+ - OpenAI, PLANS.md / ExecPlans: complex tasks use self-contained, verifiable, recoverable execution plans.
110
+ - GitHub Spec Kit / Kiro Specs: borrow requirements -> design -> tasks -> verification structure.
111
+ - Anthropic, Building Effective Agents: agent loops need environment feedback, clear stop conditions, and human checkpoints.
112
+ - arc42 / C4 / ADR / ARCHITECTURE.md: provide architecture chapters, static structure views, decision records, and lightweight code maps respectively.