tools-cc 1.0.4 → 1.0.6
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/CHANGELOG.md +20 -0
- package/CHANGELOG_en.md +18 -0
- package/README.md +63 -6
- package/dist/commands/export.d.ts +7 -0
- package/dist/commands/export.js +57 -0
- package/dist/commands/help.js +3 -2
- package/dist/commands/use.d.ts +18 -2
- package/dist/commands/use.js +211 -45
- package/dist/core/project.d.ts +10 -1
- package/dist/core/project.js +134 -17
- package/dist/index.js +12 -1
- package/dist/types/config.d.ts +45 -0
- package/dist/types/config.js +32 -0
- package/dist/utils/parsePath.d.ts +31 -0
- package/dist/utils/parsePath.js +86 -0
- package/package.json +5 -2
- package/src/commands/export.ts +60 -0
- package/src/commands/help.ts +3 -2
- package/src/commands/use.ts +261 -45
- package/src/core/project.ts +158 -18
- package/src/index.ts +209 -198
- package/src/types/config.ts +75 -0
- package/src/utils/parsePath.ts +108 -0
- package/docs/plans/2026-02-25-tools-cc-design.md +0 -195
- package/docs/plans/2026-02-25-tools-cc-impl.md +0 -1600
- package/tests/core/config.test.ts +0 -37
- package/tests/core/manifest.test.ts +0 -37
- package/tests/core/project.test.ts +0 -50
- package/tests/core/source.test.ts +0 -75
- package/tests/core/symlink.test.ts +0 -39
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
# tools-cc CLI 设计文档
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
tools-cc 是一个用于统一管理多个 AI 编程工具(iflow、claude、codebuddy、opencode 等)的 skills、commands、agents 配置的 CLI 工具。通过符号链接机制,避免在多个工具间重复配置。
|
|
6
|
-
|
|
7
|
-
## 核心需求
|
|
8
|
-
|
|
9
|
-
- 同时使用多个 AI 编程工具时,避免重复配置 skills/commands/agents
|
|
10
|
-
- 支持从 git 仓库或本地目录安装配置源
|
|
11
|
-
- 支持同时启用多个配置源
|
|
12
|
-
- 全局配置 + 项目级覆盖
|
|
13
|
-
- 自动创建符号链接
|
|
14
|
-
|
|
15
|
-
## 架构设计
|
|
16
|
-
|
|
17
|
-
### 目录结构
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
~/.tools-cc/ # 全局配置目录
|
|
21
|
-
├── config.json # 全局配置
|
|
22
|
-
└── cache/ # 缓存(可选)
|
|
23
|
-
|
|
24
|
-
D:/skills-hub-sources/ # 用户自定义的 sources 存储位置
|
|
25
|
-
├── my-skills/
|
|
26
|
-
│ ├── manifest.json
|
|
27
|
-
│ ├── skills/
|
|
28
|
-
│ ├── commands/
|
|
29
|
-
│ └── agents/
|
|
30
|
-
└── my-skills2/
|
|
31
|
-
├── manifest.json
|
|
32
|
-
├── skills/
|
|
33
|
-
├── commands/
|
|
34
|
-
└── agents/
|
|
35
|
-
|
|
36
|
-
项目目录/
|
|
37
|
-
├── .toolscc/ # 实际内容目录
|
|
38
|
-
│ ├── skills/ # 扁平化,带来源前缀
|
|
39
|
-
│ │ ├── my-skills-brainstorming/
|
|
40
|
-
│ │ └── my-skills2-debugging/
|
|
41
|
-
│ ├── commands/
|
|
42
|
-
│ │ ├── my-skills/ # 按来源分子目录
|
|
43
|
-
│ │ └── my-skills2/
|
|
44
|
-
│ └── agents/
|
|
45
|
-
│ ├── my-skills/
|
|
46
|
-
│ └── my-skills2/
|
|
47
|
-
├── .iflow -> .toolscc # 符号链接
|
|
48
|
-
├── .claude -> .toolscc
|
|
49
|
-
└── tools-cc.json # 项目配置
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 关键设计点
|
|
53
|
-
|
|
54
|
-
1. **skills 目录扁平化**:由于工具只能识别一级目录下的 skills,多个配置源的 skills 使用 `{source-name}-{skill-name}` 命名避免冲突
|
|
55
|
-
2. **commands/agents 保持层级**:按来源分子目录,因为工具支持多级目录
|
|
56
|
-
|
|
57
|
-
## 文件格式
|
|
58
|
-
|
|
59
|
-
### 全局配置 `~/.tools-cc/config.json`
|
|
60
|
-
|
|
61
|
-
```json
|
|
62
|
-
{
|
|
63
|
-
"sourcesDir": "D:/skills-hub-sources",
|
|
64
|
-
"sources": {
|
|
65
|
-
"my-skills": {
|
|
66
|
-
"type": "git",
|
|
67
|
-
"url": "https://github.com/user/my-skills.git"
|
|
68
|
-
},
|
|
69
|
-
"local-skills": {
|
|
70
|
-
"type": "local",
|
|
71
|
-
"path": "D:/local-skills"
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### 项目配置 `项目/tools-cc.json`
|
|
78
|
-
|
|
79
|
-
```json
|
|
80
|
-
{
|
|
81
|
-
"sources": ["my-skills", "local-skills"],
|
|
82
|
-
"links": ["iflow", "claude"]
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### 配置源清单 `sources/my-skills/manifest.json`
|
|
87
|
-
|
|
88
|
-
```json
|
|
89
|
-
{
|
|
90
|
-
"name": "my-skills",
|
|
91
|
-
"version": "1.0.0",
|
|
92
|
-
"skills": ["brainstorming", "debugging"],
|
|
93
|
-
"commands": ["brainstorm", "review"],
|
|
94
|
-
"agents": ["code-reviewer"]
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
如果配置源是本地目录且没有 manifest,CLI 会自动扫描目录结构生成。
|
|
99
|
-
|
|
100
|
-
## CLI 命令
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
tools-cc [options] <command> [args]
|
|
104
|
-
|
|
105
|
-
# Source 管理
|
|
106
|
-
tools-cc -s add <name> <path-or-url> # 添加配置源
|
|
107
|
-
tools-cc -s list # 列出所有配置源 (-s ls)
|
|
108
|
-
tools-cc -s remove <name> # 移除配置源 (-s rm)
|
|
109
|
-
tools-cc -s update [name] # 更新配置源 (-s up)
|
|
110
|
-
|
|
111
|
-
# 项目配置
|
|
112
|
-
tools-cc use [source-names...] [-p tools...] # 启用配置源并可选创建链接
|
|
113
|
-
tools-cc list # 列出已启用的配置源
|
|
114
|
-
tools-cc rm <name> # 禁用配置源
|
|
115
|
-
|
|
116
|
-
# Config 管理
|
|
117
|
-
tools-cc -c set <key> <value> # 设置配置
|
|
118
|
-
tools-cc -c get <key> # 查看配置
|
|
119
|
-
|
|
120
|
-
# 信息查看
|
|
121
|
-
tools-cc status # 查看项目状态
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
## 内置支持的 Tools
|
|
125
|
-
|
|
126
|
-
```typescript
|
|
127
|
-
const SUPPORTED_TOOLS = {
|
|
128
|
-
iflow: { linkName: '.iflow' },
|
|
129
|
-
claude: { linkName: '.claude' },
|
|
130
|
-
codebuddy: { linkName: '.codebuddy' },
|
|
131
|
-
opencode: { linkName: '.opencode' }
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## 数据流
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
用户执行: tools-cc use my-skills -p iflow claude
|
|
139
|
-
|
|
140
|
-
1. 检查全局配置,确认 my-skills 存在
|
|
141
|
-
2. 在项目创建 .toolscc/ 目录
|
|
142
|
-
3. 从 sources/my-skills/ 复制/链接组件:
|
|
143
|
-
- skills/* -> .toolscc/skills/my-skills-*/
|
|
144
|
-
- commands/* -> .toolscc/commands/my-skills/
|
|
145
|
-
- agents/* -> .toolscc/agents/my-skills/
|
|
146
|
-
4. 创建符号链接:
|
|
147
|
-
- .iflow -> .toolscc
|
|
148
|
-
- .claude -> .toolscc
|
|
149
|
-
5. 更新项目配置 tools-cc.json
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## 技术栈
|
|
153
|
-
|
|
154
|
-
- **语言**: TypeScript / Node.js
|
|
155
|
-
- **CLI 框架**: commander 或 yargs
|
|
156
|
-
- **交互式 UI**: inquirer
|
|
157
|
-
- **符号链接**: Node.js fs.symlink / fs.symlinkSync
|
|
158
|
-
|
|
159
|
-
## 使用示例
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
# 1. 设置 sources 存储位置
|
|
163
|
-
tools-cc -c set sourcesDir D:/skills-hub-sources
|
|
164
|
-
|
|
165
|
-
# 2. 添加配置源
|
|
166
|
-
tools-cc -s add my-skills https://github.com/user/my-skills.git
|
|
167
|
-
tools-cc -s add local-skills D:/local-skills
|
|
168
|
-
|
|
169
|
-
# 3. 在项目中启用配置源并创建链接
|
|
170
|
-
cd my-project
|
|
171
|
-
tools-cc use my-skills local-skills -p iflow claude
|
|
172
|
-
|
|
173
|
-
# 4. 查看状态
|
|
174
|
-
tools-cc status
|
|
175
|
-
tools-cc list
|
|
176
|
-
|
|
177
|
-
# 5. 禁用某个配置源
|
|
178
|
-
tools-cc rm local-skills
|
|
179
|
-
|
|
180
|
-
# 6. 更新配置源
|
|
181
|
-
tools-cc -s update my-skills
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
## 符号链接处理
|
|
185
|
-
|
|
186
|
-
- **Windows**: 创建 junction 或 symlink(需要管理员权限,或开启开发者模式)
|
|
187
|
-
- **Linux/macOS**: 创建标准符号链接
|
|
188
|
-
|
|
189
|
-
当目标目录已存在时,提示用户确认后强制覆盖删除。
|
|
190
|
-
|
|
191
|
-
## 后续扩展
|
|
192
|
-
|
|
193
|
-
- 支持自定义 tool 配置(通过 config 添加新的 tool)
|
|
194
|
-
- 支持配置源版本管理
|
|
195
|
-
- 支持团队共享配置(通过 git 管理 tools-cc.json)
|