sumulige-claude 1.0.1 → 1.0.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.
Files changed (4) hide show
  1. package/PROJECT_STRUCTURE.md +220 -0
  2. package/Q&A.md +124 -0
  3. package/cli.js +132 -84
  4. package/package.json +1 -1
@@ -0,0 +1,220 @@
1
+ # Sumulige Claude 项目详解
2
+
3
+ > **Claude Code 多 Agent 编排框架** - 专为 AI 理解优化
4
+
5
+ ---
6
+
7
+ ## 📌 项目定位
8
+
9
+ **Sumulige Claude** 是一个 **Claude Code 多 Agent 编排框架**,核心目标是让 AI 辅助开发更智能、更高效。
10
+
11
+ 基于 CLI 的 AI 辅助开发与管理系统(包含技能库、RAG 索引、任务追踪等)。
12
+
13
+ ### 核心功能
14
+
15
+ | 功能 | 描述 |
16
+ |------|------|
17
+ | **多 Agent 协作** | 5个专业化 Agent(Conductor/Architect/Builder/Reviewer/Librarian)分工协作 |
18
+ | **技能系统** | 可复用的 Claude Skills 管理(安装/创建/依赖检查) |
19
+ | **项目模板** | 一键部署完整的 Claude Code 项目配置 |
20
+ | **TODO 管理** | 按优先级分组的 AI 自动维护任务系统 |
21
+ | **ThinkingLens** | 对话追踪和增量记忆系统 |
22
+
23
+ ### Agent 角色说明
24
+
25
+ ```
26
+ ┌─────────────────────────────────────────────────────────────┐
27
+ │ Agent 团队架构 │
28
+ ├─────────────────────────────────────────────────────────────┤
29
+ │ Conductor → 任务分解和协调(项目经理) │
30
+ │ Architect → 架构设计和技术决策(架构师) │
31
+ │ Builder → 代码实现和测试(工程师) │
32
+ │ Reviewer → 代码审查和质量检查(审查员) │
33
+ │ Librarian → 文档编写和知识整理(文档员) │
34
+ └─────────────────────────────────────────────────────────────┘
35
+ ```
36
+
37
+ ---
38
+
39
+ ## 📁 项目结构 ASCII 树
40
+
41
+ ```
42
+ sumulige-claude/
43
+ ├── .claude/ # CLI 工具自身的 Claude Code 配置
44
+ │ ├── rag/ # RAG 技能索引
45
+ │ ├── sessions/ # 会话追踪
46
+ │ ├── skills/ # 内置技能
47
+ │ │ └── api-tester/ # API 测试技能示例
48
+ │ ├── AGENTS.md # Agent 配置
49
+ │ ├── README.md # Claude 项目说明
50
+ │ └── settings.local.json # 本地配置
51
+
52
+ ├── development/ # 开发任务管理
53
+ │ └── todos/ # TODO 任务系统(GTD 风格)
54
+ │ ├── active/ # 🚧 进行中任务
55
+ │ ├── backlog/ # 📋 待办任务
56
+ │ ├── completed/ # ✅ 已完成任务
57
+ │ ├── archived/ # 📦 已归档任务
58
+ │ └── INDEX.md # 任务总览(可点击跳转)
59
+
60
+ ├── template/ # ⭐ 项目模板(smc template 部署)
61
+ │ ├── .claude/ # Claude Code 完整配置
62
+ │ │ ├── commands/ # Slash 命令(9个)
63
+ │ │ │ ├── commit-push-pr.md # /commit-push-pr
64
+ │ │ │ ├── commit.md # /commit
65
+ │ │ │ ├── pr.md # /pr
66
+ │ │ │ ├── review.md # /review
67
+ │ │ │ ├── sessions.md # /sessions
68
+ │ │ │ ├── skill-create.md # /skill-create
69
+ │ │ │ ├── test.md # /test
70
+ │ │ │ ├── todos.md # /todos
71
+ │ │ │ └── verify-work.md # /verify-work
72
+ │ │ │
73
+ │ │ ├── hooks/ # 自动化 Hook 脚本
74
+ │ │ │
75
+ │ │ ├── rag/ # RAG 技能索引
76
+ │ │ │ └── skill-index.json # 20+ 技能索引(支持关键词匹配)
77
+ │ │ │
78
+ │ │ ├── skills/ # 项目技能库
79
+ │ │ │ ├── examples/ # 示例技能
80
+ │ │ │ ├── manus-kickoff/ # Manus 风格项目启动技能
81
+ │ │ │ ├── template/ # 技能创建模板
82
+ │ │ │ └── SKILLS.md # 技能索引说明
83
+ │ │ │
84
+ │ │ ├── templates/ # 项目文档模板
85
+ │ │ │ ├── PROJECT_KICKOFF.md # 项目启动清单
86
+ │ │ │ ├── PROJECT_PROPOSAL.md # 项目计划书模板
87
+ │ │ │ └── TASK_PLAN.md # 任务执行计划模板
88
+ │ │ │
89
+ │ │ ├── thinking-routes/ # 思维轨迹系统
90
+ │ │ │
91
+ │ │ ├── CLAUDE-template.md # CLAUDE.md 模板
92
+ │ │ ├── README.md # 项目说明(AI 首先读取)
93
+ │ │ ├── boris-optimizations.md # Boris 最佳实践
94
+ │ │ └── settings.json # Claude Code 设置
95
+ │ │
96
+ │ ├── development/ # 开发任务管理模板
97
+ │ │ └── todos/ # TODO 系统模板
98
+ │ │
99
+ │ ├── prompts/ # 教学资源
100
+ │ │ └── how-to-find.md # 对话查找指南
101
+ │ │
102
+ │ ├── CLAUDE-template.md # CLAUDE.md 模板
103
+ │ ├── README.md # 模板说明
104
+ │ ├── init.sh # 初始化脚本
105
+ │ ├── project-paradigm.md # 项目开发范式
106
+ │ └── thinkinglens-silent.md # ThinkingLens 静默指令
107
+
108
+ ├── cli.js # ⭐ CLI 核心入口(Node.js)
109
+ ├── package.json # npm 包配置
110
+ ├── package-lock.json # 依赖锁定
111
+ ├── AGENTS.md # Agent 配置说明
112
+ ├── README.md # 项目文档(858 行)
113
+ ├── PROJECT_STRUCTURE.md # 本文件
114
+ └── .gitignore # Git 忽略规则
115
+ ```
116
+
117
+ ---
118
+
119
+ ## 🔧 CLI 命令速查
120
+
121
+ ```
122
+ smc (sumulige-claude 简写)
123
+ ├── init # 初始化配置 (~/.claude/config.json)
124
+ ├── status # 查看状态(Agents/Skills/Tasks)
125
+ ├── sync # 同步配置到项目
126
+ ├── template [path] # 部署项目模板
127
+ ├── kickoff # Manus 风格项目规划启动
128
+
129
+ ├── skill:list # 列出所有技能
130
+ ├── skill:create <name> # 创建新技能
131
+ ├── skill:check [name] # 检查技能依赖
132
+ ├── skill:install <src> # 安装外部技能
133
+
134
+ └── agent <task> # 启动 Agent 编排
135
+ ```
136
+
137
+ ---
138
+
139
+ ## 📊 关键数据结构
140
+
141
+ ### 配置文件结构 (`~/.claude/config.json`)
142
+
143
+ ```json
144
+ {
145
+ "version": "1.0.0",
146
+ "agents": {
147
+ "conductor": { "model": "claude-opus-4.5", "role": "Task coordination" },
148
+ "architect": { "model": "claude-opus-4.5", "role": "Architecture design" },
149
+ "builder": { "model": "claude-opus-4.5", "role": "Code implementation" },
150
+ "reviewer": { "model": "claude-opus-4.5", "role": "Code review" },
151
+ "librarian": { "model": "claude-opus-4.5", "role": "Documentation" }
152
+ },
153
+ "skills": ["anthropics/skills", "numman-ali/n-skills"],
154
+ "thinkingLens": { "enabled": true, "autoSync": true, "syncInterval": 20 }
155
+ }
156
+ ```
157
+
158
+ ### RAG 技能索引结构 (`skill-index.json`)
159
+
160
+ ```json
161
+ {
162
+ "skills": [
163
+ {
164
+ "name": "frontend-design",
165
+ "keywords": ["frontend", "ui", "react"],
166
+ "description": "前端界面设计"
167
+ },
168
+ {
169
+ "name": "mcp-builder",
170
+ "keywords": ["api", "mcp", "server"],
171
+ "description": "MCP 服务器构建"
172
+ }
173
+ ]
174
+ }
175
+ ```
176
+
177
+ ---
178
+
179
+ ## 🔄 工作流程图
180
+
181
+ ```
182
+ ┌─────────────────────────────────────────────────────────────┐
183
+ │ Manus 风格工作流 │
184
+ ├─────────────────────────────────────────────────────────────┤
185
+ │ │
186
+ │ 1. smc template → 部署项目模板 │
187
+ │ ↓ │
188
+ │ 2. smc kickoff → AI 生成 TASK_PLAN.md │
189
+ │ ↓ │
190
+ │ 3. Human 确认 → 审批项目计划 │
191
+ │ ↓ │
192
+ │ 4. Agent 协作执行 → Conductor 分配 → Builder 实现 │
193
+ │ ↓ │
194
+ │ 5. ThinkingLens → 自动记录 MEMORY.md + PROJECT_LOG │
195
+ │ │
196
+ └─────────────────────────────────────────────────────────────┘
197
+ ```
198
+
199
+ ---
200
+
201
+ ## 🎯 AI 理解要点
202
+
203
+ 1. **入口文件**: `cli.js` 是 Node.js CLI 工具,通过 npm 全局安装后使用 `smc` 命令
204
+ 2. **模板目录**: `template/` 包含完整的 Claude Code 项目配置,通过 `smc template` 复制到目标项目
205
+ 3. **技能系统**: 基于 markdown 文件定义,存储在 `.claude/skills/` 目录
206
+ 4. **TODO 系统**: 采用文件夹分组(active/backlog/completed/archived)+ INDEX.md 索引
207
+ 5. **RAG 索引**: `skill-index.json` 支持关键词自动匹配技能
208
+
209
+ ---
210
+
211
+ ## 📦 技术栈
212
+
213
+ - **运行环境**: Node.js
214
+ - **包管理**: npm
215
+ - **发布平台**: [npmjs.com/package/sumulige-claude](https://www.npmjs.com/package/sumulige-claude)
216
+ - **源码仓库**: [github.com/sumulige/sumulige-claude](https://github.com/sumulige/sumulige-claude)
217
+
218
+ ---
219
+
220
+ *Generated: 2026-01-13*
package/Q&A.md ADDED
@@ -0,0 +1,124 @@
1
+ # Sumulige Claude 常见问题
2
+
3
+ > 帮助你快速理解项目的核心设计理念
4
+
5
+ ---
6
+
7
+ ## Q1: 为什么要把 sumulige-claude 保留在项目中?
8
+
9
+ ### 🔑 一句话答案
10
+ **它不是"工具",是"数字合伙人"**——需要跟随项目一起成长。
11
+
12
+ ### 📊 对比理解
13
+
14
+ | 普通 CLI 工具 | Sumulige Claude |
15
+ |--------------|-----------------|
16
+ | 全局安装,到处通用 | 嵌入项目,专属定制 |
17
+ | 静态能力,版本固定 | 动态进化,持续学习 |
18
+ | 扳手(用完即走) | 副驾驶(全程陪伴) |
19
+
20
+ ### 💡 四大设计深意
21
+
22
+ ```
23
+ ┌─────────────────────────────────────────────────────────────┐
24
+ │ 1️⃣ 共同进化 │
25
+ │ Agent 技能随业务逻辑同步迭代 │
26
+ │ 修改算法 → 同步更新 review 技能 │
27
+ ├─────────────────────────────────────────────────────────────┤
28
+ │ 2️⃣ 上下文记忆 │
29
+ │ .claude/rag/ 是 Agent 的"海马体" │
30
+ │ 项目架构决策 → 长期记忆沉淀 │
31
+ ├─────────────────────────────────────────────────────────────┤
32
+ │ 3️⃣ 团队一致性 │
33
+ │ 工具链即代码 (Toolchain as Code) │
34
+ │ git clone → pnpm install → 获得一致的 AI 环境 │
35
+ ├─────────────────────────────────────────────────────────────┤
36
+ │ 4️⃣ 构建联动 │
37
+ │ 修改共享类型 → 自动触发 Agent 重新构建 │
38
+ │ 确保 AI 永不基于过时定义生成代码 │
39
+ └─────────────────────────────────────────────────────────────┘
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Q2: 根目录 `.claude/` 和 `template/.claude/` 有什么区别?
45
+
46
+ ### 🔑 一句话答案
47
+ **`template/` 是"工厂",根目录 `.claude/` 是"产品"。**
48
+
49
+ ### � 类比理解
50
+
51
+ ```
52
+ template/.claude/ xxx/.claude/
53
+ │ │
54
+ ▼ ▼
55
+ 🏭 安装光盘 💾 存档文件
56
+ 🎓 毕业证书模板 📝 你的毕业证
57
+ 🧬 DNA 模板 🧑 具体的人
58
+ 📘 类定义 (Class) 📦 实例 (Instance)
59
+ ```
60
+
61
+ ### 🔍 详细对比
62
+
63
+ | 特性 | **根目录 `.claude/`** | **template/.claude/** |
64
+ |------|----------------------|----------------------|
65
+ | **性质** | 实例 (Instance) | 模板 (Blueprint) |
66
+ | **状态** | ✅ 有状态 | ❌ 无状态 |
67
+ | **内容** | sessions/, 本地配置, 项目 RAG | commands/, skills/, thinking-routes/ |
68
+ | **作用** | 记录"聊过什么" | 定义"能做什么" |
69
+ | **Git** | 部分忽略 (sessions/) | 完整提交 |
70
+ | **生命周期** | 随项目存在 | 发布即固化 |
71
+
72
+ ### 🔄 工作流程
73
+
74
+ ```
75
+ ┌────────────────┐ smc template ┌────────────────┐
76
+ │ │ ─────────────────▶ │ │
77
+ │ template/ │ │ xxx/ │
78
+ │ .claude/ │ 复制模板 │ .claude/ │
79
+ │ ├─commands/ │ ─────────────────▶ │ ├─commands/ │
80
+ │ ├─skills/ │ │ ├─skills/ │
81
+ │ └─... │ │ ├─sessions/ │ ← 新增:对话记忆
82
+ │ │ │ ├─rag/ │ ← 新增:项目知识
83
+ │ │ │ └─... │
84
+ └────────────────┘ └────────────────┘
85
+ 工厂 产品
86
+ ```
87
+
88
+ ### 💡 设计优势
89
+
90
+ | 优势 | 说明 |
91
+ |------|------|
92
+ | **升级解耦** | 更新 template/ → 发布新版 → 用户项目历史不丢失 |
93
+ | **标准化** | 每个新项目自动获得最佳实践配置 |
94
+ | **隔离性** | 项目 A 的对话记忆不会污染项目 B |
95
+
96
+ ---
97
+
98
+ ## 总结:一张图看懂架构
99
+
100
+ ```
101
+ ┌─────────────────────────────────────────────────────────────┐
102
+ │ Sumulige Claude 架构 │
103
+ ├─────────────────────────────────────────────────────────────┤
104
+ │ │
105
+ │ ┌──────────────────┐ ┌──────────────────┐ │
106
+ │ │ sumulige-claude │ │ 你的项目 │ │
107
+ │ │ (npm 全局安装) │ │ (xxx/) │ │
108
+ │ ├──────────────────┤ ├──────────────────┤ │
109
+ │ │ cli.js │──smc───▶│ .claude/ │ │
110
+ │ │ template/ │ template │ ├─ commands/ │ │
111
+ │ │ └─.claude/ │──────────│ ├─ skills/ │ │
112
+ │ │ ├─commands/ │ 复制 │ ├─ sessions/ │ 记忆 │
113
+ │ │ ├─skills/ │ │ ├─ rag/ │ 知识 │
114
+ │ │ └─templates/ │ │ └─ settings │ 配置 │
115
+ │ └──────────────────┘ └──────────────────┘ │
116
+ │ 能力定义 运行实例 │
117
+ │ (无状态) (有状态) │
118
+ │ │
119
+ └─────────────────────────────────────────────────────────────┘
120
+ ```
121
+
122
+ ---
123
+
124
+ *更多问题?查看 [README.md](./README.md)*
package/cli.js CHANGED
@@ -342,7 +342,7 @@ const commands = {
342
342
  if (fs.existsSync(ragIndexFile)) {
343
343
  try {
344
344
  ragIndex = JSON.parse(fs.readFileSync(ragIndexFile, 'utf-8'));
345
- } catch (e) {}
345
+ } catch (e) { }
346
346
  }
347
347
 
348
348
  // 添加新技能到索引
@@ -445,9 +445,9 @@ const commands = {
445
445
  // 检查所有技能
446
446
  const allSkills = fs.existsSync(skillsDir)
447
447
  ? fs.readdirSync(skillsDir).filter(f => {
448
- const dir = path.join(skillsDir, f);
449
- return fs.statSync(dir).isDirectory() && f !== 'template' && f !== 'examples';
450
- })
448
+ const dir = path.join(skillsDir, f);
449
+ return fs.statSync(dir).isDirectory() && f !== 'template' && f !== 'examples';
450
+ })
451
451
  : [];
452
452
 
453
453
  console.log(`Found ${allSkills.length} skills\n`);
@@ -484,14 +484,46 @@ const commands = {
484
484
  process.exit(1);
485
485
  }
486
486
 
487
+ // 递归复制目录(含子目录和文件)
488
+ const copyRecursive = (src, dest, overwrite = false) => {
489
+ if (!fs.existsSync(src)) return 0;
490
+
491
+ if (!fs.existsSync(dest)) {
492
+ fs.mkdirSync(dest, { recursive: true });
493
+ }
494
+
495
+ let count = 0;
496
+ const entries = fs.readdirSync(src, { withFileTypes: true });
497
+
498
+ for (const entry of entries) {
499
+ const srcPath = path.join(src, entry.name);
500
+ const destPath = path.join(dest, entry.name);
501
+
502
+ if (entry.isDirectory()) {
503
+ count += copyRecursive(srcPath, destPath, overwrite);
504
+ } else {
505
+ if (overwrite || !fs.existsSync(destPath)) {
506
+ fs.copyFileSync(srcPath, destPath);
507
+ // 添加执行权限
508
+ if (entry.name.endsWith('.sh') || entry.name.endsWith('.cjs')) {
509
+ fs.chmodSync(destPath, 0o755);
510
+ }
511
+ count++;
512
+ }
513
+ }
514
+ }
515
+ return count;
516
+ };
517
+
487
518
  // 创建目录结构
488
519
  console.log('📁 Creating directory structure...');
489
520
  const dirs = [
490
- path.join(targetDir, '.claude/hooks'),
491
- path.join(targetDir, '.claude/thinking-routes'),
492
- path.join(targetDir, '.claude/skills'),
493
- path.join(targetDir, '.claude/rag'),
494
- path.join(targetDir, 'prompts')
521
+ path.join(targetDir, '.claude'),
522
+ path.join(targetDir, 'prompts'),
523
+ path.join(targetDir, 'development/todos/active'),
524
+ path.join(targetDir, 'development/todos/completed'),
525
+ path.join(targetDir, 'development/todos/backlog'),
526
+ path.join(targetDir, 'development/todos/archived')
495
527
  ];
496
528
 
497
529
  dirs.forEach(dir => {
@@ -504,82 +536,96 @@ const commands = {
504
536
  // 复制文件
505
537
  console.log('📋 Copying template files...');
506
538
 
507
- // 复制 .claude 文件
508
539
  const claudeTemplateDir = path.join(TEMPLATE_DIR, '.claude');
509
- if (fs.existsSync(claudeTemplateDir)) {
510
- // CLAUDE-template.md
511
- const claudeTemplate = path.join(claudeTemplateDir, 'CLAUDE-template.md');
512
- if (fs.existsSync(claudeTemplate)) {
513
- fs.copyFileSync(claudeTemplate, path.join(targetDir, '.claude/CLAUDE.md'));
514
- console.log(' ✅ .claude/CLAUDE.md');
515
- }
540
+ const targetClaudeDir = path.join(targetDir, '.claude');
516
541
 
517
- // settings.json
518
- const settingsFile = path.join(claudeTemplateDir, 'settings.json');
519
- if (fs.existsSync(settingsFile)) {
520
- fs.copyFileSync(settingsFile, path.join(targetDir, '.claude/settings.json'));
521
- console.log(' ✅ .claude/settings.json');
522
- }
542
+ // 1. CLAUDE.md (从 CLAUDE-template.md)
543
+ const claudeTemplate = path.join(claudeTemplateDir, 'CLAUDE-template.md');
544
+ if (fs.existsSync(claudeTemplate)) {
545
+ fs.copyFileSync(claudeTemplate, path.join(targetClaudeDir, 'CLAUDE.md'));
546
+ console.log(' ✅ .claude/CLAUDE.md');
547
+ }
523
548
 
524
- // hooks/
525
- const hooksDir = path.join(claudeTemplateDir, 'hooks');
526
- if (fs.existsSync(hooksDir)) {
527
- const hooks = fs.readdirSync(hooksDir);
528
- hooks.forEach(hook => {
529
- const src = path.join(hooksDir, hook);
530
- const dest = path.join(targetDir, '.claude/hooks', hook);
531
- fs.copyFileSync(src, dest);
532
- // 添加执行权限
533
- if (hook.endsWith('.js') || hook.endsWith('.sh')) {
534
- fs.chmodSync(dest, 0o755);
535
- }
536
- });
537
- console.log(' ✅ .claude/hooks/ (' + hooks.length + ' files)');
538
- }
549
+ // 2. README.md
550
+ const readmeFile = path.join(claudeTemplateDir, 'README.md');
551
+ if (fs.existsSync(readmeFile)) {
552
+ fs.copyFileSync(readmeFile, path.join(targetClaudeDir, 'README.md'));
553
+ console.log(' ✅ .claude/README.md');
554
+ }
539
555
 
540
- // thinking-routes/
541
- const routesDir = path.join(claudeTemplateDir, 'thinking-routes');
542
- if (fs.existsSync(routesDir)) {
543
- const files = fs.readdirSync(routesDir);
544
- files.forEach(file => {
545
- fs.copyFileSync(
546
- path.join(routesDir, file),
547
- path.join(targetDir, '.claude/thinking-routes', file)
548
- );
549
- });
550
- console.log(' ✅ .claude/thinking-routes/');
551
- }
556
+ // 3. settings.json
557
+ const settingsFile = path.join(claudeTemplateDir, 'settings.json');
558
+ if (fs.existsSync(settingsFile)) {
559
+ fs.copyFileSync(settingsFile, path.join(targetClaudeDir, 'settings.json'));
560
+ console.log(' ✅ .claude/settings.json');
561
+ }
552
562
 
553
- // rag/
554
- const ragDir = path.join(claudeTemplateDir, 'rag');
555
- if (fs.existsSync(ragDir)) {
556
- const files = fs.readdirSync(ragDir);
557
- files.forEach(file => {
558
- fs.copyFileSync(
559
- path.join(ragDir, file),
560
- path.join(targetDir, '.claude/rag', file)
561
- );
562
- });
563
- console.log(' ✅ .claude/rag/');
564
- }
563
+ // 4. boris-optimizations.md
564
+ const borisFile = path.join(claudeTemplateDir, 'boris-optimizations.md');
565
+ if (fs.existsSync(borisFile)) {
566
+ fs.copyFileSync(borisFile, path.join(targetClaudeDir, 'boris-optimizations.md'));
567
+ console.log(' ✅ .claude/boris-optimizations.md');
568
+ }
569
+
570
+ // 5. hooks/ (递归复制)
571
+ const hooksDir = path.join(claudeTemplateDir, 'hooks');
572
+ if (fs.existsSync(hooksDir)) {
573
+ const count = copyRecursive(hooksDir, path.join(targetClaudeDir, 'hooks'), true);
574
+ console.log(` ✅ .claude/hooks/ (${count} files)`);
575
+ }
576
+
577
+ // 6. commands/ (递归复制) ⭐ 新增
578
+ const commandsDir = path.join(claudeTemplateDir, 'commands');
579
+ if (fs.existsSync(commandsDir)) {
580
+ const count = copyRecursive(commandsDir, path.join(targetClaudeDir, 'commands'), true);
581
+ console.log(` ✅ .claude/commands/ (${count} files)`);
582
+ }
583
+
584
+ // 7. skills/ (递归复制) ⭐ 新增
585
+ const skillsDir = path.join(claudeTemplateDir, 'skills');
586
+ if (fs.existsSync(skillsDir)) {
587
+ const count = copyRecursive(skillsDir, path.join(targetClaudeDir, 'skills'), false);
588
+ console.log(` ✅ .claude/skills/ (${count} files)`);
589
+ }
590
+
591
+ // 8. templates/ (递归复制) ⭐ 新增
592
+ const templatesDir = path.join(claudeTemplateDir, 'templates');
593
+ if (fs.existsSync(templatesDir)) {
594
+ const count = copyRecursive(templatesDir, path.join(targetClaudeDir, 'templates'), false);
595
+ console.log(` ✅ .claude/templates/ (${count} files)`);
596
+ }
597
+
598
+ // 9. thinking-routes/
599
+ const routesDir = path.join(claudeTemplateDir, 'thinking-routes');
600
+ if (fs.existsSync(routesDir)) {
601
+ const count = copyRecursive(routesDir, path.join(targetClaudeDir, 'thinking-routes'), false);
602
+ console.log(` ✅ .claude/thinking-routes/ (${count} files)`);
565
603
  }
566
604
 
567
- // 复制 prompts/
605
+ // 10. rag/
606
+ const ragDir = path.join(claudeTemplateDir, 'rag');
607
+ if (fs.existsSync(ragDir)) {
608
+ const count = copyRecursive(ragDir, path.join(targetClaudeDir, 'rag'), true);
609
+ console.log(` ✅ .claude/rag/ (${count} files)`);
610
+ }
611
+
612
+ // 11. prompts/
568
613
  const promptsDir = path.join(TEMPLATE_DIR, 'prompts');
569
614
  if (fs.existsSync(promptsDir)) {
570
- const files = fs.readdirSync(promptsDir);
571
- files.forEach(file => {
572
- fs.copyFileSync(
573
- path.join(promptsDir, file),
574
- path.join(targetDir, 'prompts', file)
575
- );
576
- });
577
- console.log(' prompts/');
615
+ const count = copyRecursive(promptsDir, path.join(targetDir, 'prompts'), false);
616
+ console.log(` ✅ prompts/ (${count} files)`);
617
+ }
618
+
619
+ // 12. development/todos/
620
+ const todosDir = path.join(TEMPLATE_DIR, 'development', 'todos');
621
+ if (fs.existsSync(todosDir)) {
622
+ const count = copyRecursive(todosDir, path.join(targetDir, 'development', 'todos'), false);
623
+ console.log(` ✅ development/todos/ (${count} files)`);
578
624
  }
579
625
 
580
- // 复制根目录文件
581
- const files = ['project-paradigm.md', 'thinkinglens-silent.md'];
582
- files.forEach(file => {
626
+ // 13. 根目录文件
627
+ const rootFiles = ['project-paradigm.md', 'thinkinglens-silent.md', 'CLAUDE-template.md'];
628
+ rootFiles.forEach(file => {
583
629
  const src = path.join(TEMPLATE_DIR, file);
584
630
  if (fs.existsSync(src)) {
585
631
  fs.copyFileSync(src, path.join(targetDir, file));
@@ -589,11 +635,11 @@ const commands = {
589
635
 
590
636
  // 创建记忆文件
591
637
  console.log('📝 Creating memory files...');
592
- if (!fs.existsSync(path.join(targetDir, '.claude/MEMORY.md'))) {
593
- fs.writeFileSync(path.join(targetDir, '.claude/MEMORY.md'), '# Memory\n\n<!-- Project memory updated by AI -->\n');
638
+ if (!fs.existsSync(path.join(targetClaudeDir, 'MEMORY.md'))) {
639
+ fs.writeFileSync(path.join(targetClaudeDir, 'MEMORY.md'), '# Memory\n\n<!-- Project memory updated by AI -->\n');
594
640
  }
595
- if (!fs.existsSync(path.join(targetDir, '.claude/PROJECT_LOG.md'))) {
596
- fs.writeFileSync(path.join(targetDir, '.claude/PROJECT_LOG.md'), '# Project Log\n\n<!-- Build history and decisions -->\n');
641
+ if (!fs.existsSync(path.join(targetClaudeDir, 'PROJECT_LOG.md'))) {
642
+ fs.writeFileSync(path.join(targetClaudeDir, 'PROJECT_LOG.md'), '# Project Log\n\n<!-- Build history and decisions -->\n');
597
643
  }
598
644
  console.log(' ✅ Memory files created');
599
645
 
@@ -637,7 +683,7 @@ const commands = {
637
683
  ## Add Your Anchors Here...
638
684
 
639
685
  `;
640
- fs.writeFileSync(path.join(targetDir, '.claude/ANCHORS.md'), anchorsContent);
686
+ fs.writeFileSync(path.join(targetClaudeDir, 'ANCHORS.md'), anchorsContent);
641
687
  console.log(' ✅ .claude/ANCHORS.md');
642
688
 
643
689
  // 初始化 Sumulige Claude(如果已安装)
@@ -655,14 +701,16 @@ const commands = {
655
701
  console.log('');
656
702
  console.log('📦 What was included:');
657
703
  console.log(' • AI autonomous memory system (ThinkingLens)');
658
- console.log(' • Sumulige Claude integration');
704
+ console.log(' • Slash commands (/commit, /test, /review, etc.)');
705
+ console.log(' • Skills system with templates');
659
706
  console.log(' • RAG dynamic skill index');
660
- console.log(' • 20+ pre-configured skills');
707
+ console.log(' • Hooks for automation');
708
+ console.log(' • TODO management system');
661
709
  console.log('');
662
710
  console.log('Next steps:');
663
- console.log(' 1. Run: sumulige-claude kickoff # 开始项目规划');
664
- console.log(' 2. Edit .claude/CLAUDE.md with your project info');
665
- console.log(' 3. Run: sumulige-claude status');
711
+ console.log(' 1. Edit .claude/CLAUDE.md with your project info');
712
+ console.log(' 2. Run: claude # Start Claude Code');
713
+ console.log(' 3. Try: /commit, /test, /review');
666
714
  console.log('');
667
715
  },
668
716
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sumulige-claude",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "The Best Agent Harness for Claude Code",
5
5
  "main": "cli.js",
6
6
  "bin": {