@laitszkin/apollo-toolkit 2.12.6 → 2.12.7
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 +9 -0
- package/lib/installer.js +40 -8
- package/package.json +1 -1
- package/scripts/install_skills.ps1 +56 -17
- package/scripts/install_skills.sh +44 -16
- /package/{codex-memory-manager → codex/codex-memory-manager}/LICENSE +0 -0
- /package/{codex-memory-manager → codex/codex-memory-manager}/README.md +0 -0
- /package/{codex-memory-manager → codex/codex-memory-manager}/SKILL.md +0 -0
- /package/{codex-memory-manager → codex/codex-memory-manager}/agents/openai.yaml +0 -0
- /package/{codex-memory-manager → codex/codex-memory-manager}/scripts/extract_recent_conversations.py +0 -0
- /package/{codex-memory-manager → codex/codex-memory-manager}/scripts/sync_memory_index.py +0 -0
- /package/{codex-memory-manager → codex/codex-memory-manager}/tests/test_extract_recent_conversations.py +0 -0
- /package/{codex-memory-manager → codex/codex-memory-manager}/tests/test_sync_memory_index.py +0 -0
- /package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/CHANGELOG.md +0 -0
- /package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/LICENSE +0 -0
- /package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/README.md +0 -0
- /package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/SKILL.md +0 -0
- /package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/agents/openai.yaml +0 -0
- /package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/scripts/extract_recent_conversations.py +0 -0
- /package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/tests/test_extract_recent_conversations.py +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,15 @@ All notable changes to this repository are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [v2.12.7] - 2026-04-02
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- Add `claude-code` install mode for copying skills into `~/.claude/skills`, with `CLAUDE_CODE_SKILLS_DIR` environment override support.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Move `codex-memory-manager` and `learn-skill-from-conversations` into `codex/` subdirectory to clarify agent-specific skill boundaries.
|
|
14
|
+
- Update codex install mode to include skills from both root directory and the `codex/` subdirectory.
|
|
15
|
+
|
|
7
16
|
## [v2.12.6] - 2026-04-02
|
|
8
17
|
|
|
9
18
|
### Added
|
package/lib/installer.js
CHANGED
|
@@ -3,7 +3,7 @@ const fsp = require('node:fs/promises');
|
|
|
3
3
|
const os = require('node:os');
|
|
4
4
|
const path = require('node:path');
|
|
5
5
|
|
|
6
|
-
const VALID_MODES = ['codex', 'openclaw', 'trae'];
|
|
6
|
+
const VALID_MODES = ['codex', 'openclaw', 'trae', 'claude-code'];
|
|
7
7
|
const COPY_FILES = new Set(['AGENTS.md', 'CHANGELOG.md', 'LICENSE', 'README.md', 'package.json']);
|
|
8
8
|
const COPY_DIRS = new Set(['scripts']);
|
|
9
9
|
|
|
@@ -61,7 +61,7 @@ function normalizeModes(inputModes) {
|
|
|
61
61
|
return modes;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
async function listSkillNames(rootDir) {
|
|
64
|
+
async function listSkillNames(rootDir, modes = []) {
|
|
65
65
|
const entries = await fsp.readdir(rootDir, { withFileTypes: true });
|
|
66
66
|
const skillNames = [];
|
|
67
67
|
|
|
@@ -75,6 +75,19 @@ async function listSkillNames(rootDir) {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
// For codex mode, also include codex-specific skills
|
|
79
|
+
if (modes.includes('codex')) {
|
|
80
|
+
const codexDir = path.join(rootDir, 'codex');
|
|
81
|
+
if (fs.existsSync(codexDir)) {
|
|
82
|
+
const codexEntries = await fsp.readdir(codexDir, { withFileTypes: true });
|
|
83
|
+
for (const entry of codexEntries) {
|
|
84
|
+
if (entry.isDirectory() && fs.existsSync(path.join(codexDir, entry.name, 'SKILL.md'))) {
|
|
85
|
+
skillNames.push(entry.name);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
78
91
|
return skillNames.sort();
|
|
79
92
|
}
|
|
80
93
|
|
|
@@ -125,10 +138,10 @@ async function stageToolkitContents({ sourceRoot, destinationRoot, version }) {
|
|
|
125
138
|
return copiedEntries.sort();
|
|
126
139
|
}
|
|
127
140
|
|
|
128
|
-
async function syncToolkitHome({ sourceRoot, toolkitHome, version }) {
|
|
141
|
+
async function syncToolkitHome({ sourceRoot, toolkitHome, version, modes = [] }) {
|
|
129
142
|
const parentDir = path.dirname(toolkitHome);
|
|
130
143
|
const tempDir = path.join(parentDir, `.apollo-toolkit.tmp-${process.pid}-${Date.now()}`);
|
|
131
|
-
const previousSkillNames = await listSkillNames(toolkitHome).catch(() => []);
|
|
144
|
+
const previousSkillNames = await listSkillNames(toolkitHome, modes).catch(() => []);
|
|
132
145
|
|
|
133
146
|
await fsp.rm(tempDir, { recursive: true, force: true });
|
|
134
147
|
await stageToolkitContents({ sourceRoot, destinationRoot: tempDir, version });
|
|
@@ -145,7 +158,7 @@ async function syncToolkitHome({ sourceRoot, toolkitHome, version }) {
|
|
|
145
158
|
return {
|
|
146
159
|
toolkitHome,
|
|
147
160
|
previousSkillNames,
|
|
148
|
-
skillNames: await listSkillNames(toolkitHome),
|
|
161
|
+
skillNames: await listSkillNames(toolkitHome, modes),
|
|
149
162
|
};
|
|
150
163
|
}
|
|
151
164
|
|
|
@@ -197,6 +210,18 @@ async function getTargetRoots(modes, env = process.env) {
|
|
|
197
210
|
root: path.join(openclawHome, workspaceName, 'skills'),
|
|
198
211
|
});
|
|
199
212
|
}
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (mode === 'claude-code') {
|
|
217
|
+
targets.push({
|
|
218
|
+
mode,
|
|
219
|
+
label: 'Claude Code',
|
|
220
|
+
root: env.CLAUDE_CODE_SKILLS_DIR
|
|
221
|
+
? path.resolve(expandUserPath(env.CLAUDE_CODE_SKILLS_DIR, env))
|
|
222
|
+
: path.join(homeDir, '.claude', 'skills'),
|
|
223
|
+
});
|
|
224
|
+
continue;
|
|
200
225
|
}
|
|
201
226
|
}
|
|
202
227
|
|
|
@@ -214,8 +239,9 @@ async function replaceWithCopy(sourcePath, targetPath) {
|
|
|
214
239
|
}
|
|
215
240
|
|
|
216
241
|
async function installLinks({ toolkitHome, modes, env = process.env, previousSkillNames = [] }) {
|
|
217
|
-
const
|
|
218
|
-
const
|
|
242
|
+
const normalizedModes = normalizeModes(modes);
|
|
243
|
+
const skillNames = await listSkillNames(toolkitHome, normalizedModes);
|
|
244
|
+
const targets = await getTargetRoots(normalizedModes, env);
|
|
219
245
|
const copiedPaths = [];
|
|
220
246
|
const staleSkillNames = previousSkillNames.filter((skillName) => !skillNames.includes(skillName));
|
|
221
247
|
|
|
@@ -225,7 +251,13 @@ async function installLinks({ toolkitHome, modes, env = process.env, previousSki
|
|
|
225
251
|
await fsp.rm(path.join(target.root, staleSkillName), { recursive: true, force: true });
|
|
226
252
|
}
|
|
227
253
|
for (const skillName of skillNames) {
|
|
228
|
-
|
|
254
|
+
// For codex skills, use the ./codex/ subdirectory as source
|
|
255
|
+
let sourcePath;
|
|
256
|
+
if (normalizedModes.includes('codex') && fs.existsSync(path.join(toolkitHome, 'codex', skillName))) {
|
|
257
|
+
sourcePath = path.join(toolkitHome, 'codex', skillName);
|
|
258
|
+
} else {
|
|
259
|
+
sourcePath = path.join(toolkitHome, skillName);
|
|
260
|
+
}
|
|
229
261
|
const targetPath = path.join(target.root, skillName);
|
|
230
262
|
await replaceWithCopy(sourcePath, targetPath);
|
|
231
263
|
copiedPaths.push({ target: target.label, path: targetPath, skillName });
|
package/package.json
CHANGED
|
@@ -9,22 +9,24 @@ $ErrorActionPreference = "Stop"
|
|
|
9
9
|
function Show-Usage {
|
|
10
10
|
@"
|
|
11
11
|
Usage:
|
|
12
|
-
./scripts/install_skills.ps1 [codex|openclaw|trae|agents|all]...
|
|
12
|
+
./scripts/install_skills.ps1 [codex|openclaw|trae|agents|claude-code|all]...
|
|
13
13
|
|
|
14
14
|
Modes:
|
|
15
|
-
codex
|
|
16
|
-
openclaw
|
|
17
|
-
trae
|
|
18
|
-
agents
|
|
19
|
-
|
|
15
|
+
codex Copy skills into ~/.codex/skills (includes ./codex/ agent-specific skills)
|
|
16
|
+
openclaw Copy skills into ~/.openclaw/workspace*/skills
|
|
17
|
+
trae Copy skills into ~/.trae/skills
|
|
18
|
+
agents Copy skills into ~/.agents/skills (for agent-skill-compatible software)
|
|
19
|
+
claude-code Copy skills into ~/.claude/skills
|
|
20
|
+
all Install all supported targets
|
|
20
21
|
|
|
21
22
|
Optional environment overrides:
|
|
22
|
-
CODEX_SKILLS_DIR
|
|
23
|
-
OPENCLAW_HOME
|
|
24
|
-
TRAE_SKILLS_DIR
|
|
25
|
-
AGENTS_SKILLS_DIR
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
CODEX_SKILLS_DIR Override codex skills destination path
|
|
24
|
+
OPENCLAW_HOME Override openclaw home path
|
|
25
|
+
TRAE_SKILLS_DIR Override trae skills destination path
|
|
26
|
+
AGENTS_SKILLS_DIR Override agents skills destination path
|
|
27
|
+
CLAUDE_CODE_SKILLS_DIR Override claude-code skills destination path
|
|
28
|
+
APOLLO_TOOLKIT_HOME Override local install path used when repo root is unavailable
|
|
29
|
+
APOLLO_TOOLKIT_REPO_URL Override git repository URL used when repo root is unavailable
|
|
28
30
|
"@
|
|
29
31
|
}
|
|
30
32
|
|
|
@@ -109,6 +111,8 @@ else {
|
|
|
109
111
|
}
|
|
110
112
|
|
|
111
113
|
function Get-SkillPaths {
|
|
114
|
+
param([string[]]$SelectedModes)
|
|
115
|
+
|
|
112
116
|
$dirs = Get-ChildItem -Path $RepoRoot -Directory | Sort-Object Name
|
|
113
117
|
$skills = @()
|
|
114
118
|
|
|
@@ -118,6 +122,19 @@ function Get-SkillPaths {
|
|
|
118
122
|
}
|
|
119
123
|
}
|
|
120
124
|
|
|
125
|
+
# For codex mode, also include codex-specific skills
|
|
126
|
+
if ($SelectedModes -contains "codex") {
|
|
127
|
+
$codexDir = Join-Path $RepoRoot "codex"
|
|
128
|
+
if (Test-Path -LiteralPath $codexDir -PathType Container) {
|
|
129
|
+
$codexDirs = Get-ChildItem -Path $codexDir -Directory | Sort-Object Name
|
|
130
|
+
foreach ($dir in $codexDirs) {
|
|
131
|
+
if (Test-Path -LiteralPath (Join-Path $dir.FullName "SKILL.md") -PathType Leaf) {
|
|
132
|
+
$skills += $dir.FullName
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
121
138
|
if ($skills.Count -eq 0) {
|
|
122
139
|
throw "No skill folders found in: $RepoRoot"
|
|
123
140
|
}
|
|
@@ -145,12 +162,13 @@ function Resolve-Modes {
|
|
|
145
162
|
Show-Banner
|
|
146
163
|
Write-Host ""
|
|
147
164
|
Write-Host "Select install options (comma-separated):"
|
|
148
|
-
Write-Host "1) codex (~/.codex/skills)"
|
|
165
|
+
Write-Host "1) codex (~/.codex/skills, includes ./codex/ agent-specific skills)"
|
|
149
166
|
Write-Host "2) openclaw (~/.openclaw/workspace*/skills)"
|
|
150
167
|
Write-Host "3) trae (~/.trae/skills)"
|
|
151
168
|
Write-Host "4) agents (~/.agents/skills)"
|
|
152
|
-
Write-Host "5)
|
|
153
|
-
|
|
169
|
+
Write-Host "5) claude-code (~/.claude/skills)"
|
|
170
|
+
Write-Host "6) all"
|
|
171
|
+
$inputValue = Read-Host "Enter choice(s) [1-6]"
|
|
154
172
|
|
|
155
173
|
foreach ($rawChoice in ($inputValue -split ",")) {
|
|
156
174
|
$choice = $rawChoice.Trim()
|
|
@@ -159,11 +177,13 @@ function Resolve-Modes {
|
|
|
159
177
|
"2" { Add-ModeOnce -Selected $selected -Mode "openclaw" }
|
|
160
178
|
"3" { Add-ModeOnce -Selected $selected -Mode "trae" }
|
|
161
179
|
"4" { Add-ModeOnce -Selected $selected -Mode "agents" }
|
|
162
|
-
"5" {
|
|
180
|
+
"5" { Add-ModeOnce -Selected $selected -Mode "claude-code" }
|
|
181
|
+
"6" {
|
|
163
182
|
Add-ModeOnce -Selected $selected -Mode "codex"
|
|
164
183
|
Add-ModeOnce -Selected $selected -Mode "openclaw"
|
|
165
184
|
Add-ModeOnce -Selected $selected -Mode "trae"
|
|
166
185
|
Add-ModeOnce -Selected $selected -Mode "agents"
|
|
186
|
+
Add-ModeOnce -Selected $selected -Mode "claude-code"
|
|
167
187
|
}
|
|
168
188
|
default {
|
|
169
189
|
throw "Invalid choice: $choice"
|
|
@@ -178,11 +198,13 @@ function Resolve-Modes {
|
|
|
178
198
|
"openclaw" { Add-ModeOnce -Selected $selected -Mode "openclaw" }
|
|
179
199
|
"trae" { Add-ModeOnce -Selected $selected -Mode "trae" }
|
|
180
200
|
"agents" { Add-ModeOnce -Selected $selected -Mode "agents" }
|
|
201
|
+
"claude-code" { Add-ModeOnce -Selected $selected -Mode "claude-code" }
|
|
181
202
|
"all" {
|
|
182
203
|
Add-ModeOnce -Selected $selected -Mode "codex"
|
|
183
204
|
Add-ModeOnce -Selected $selected -Mode "openclaw"
|
|
184
205
|
Add-ModeOnce -Selected $selected -Mode "trae"
|
|
185
206
|
Add-ModeOnce -Selected $selected -Mode "agents"
|
|
207
|
+
Add-ModeOnce -Selected $selected -Mode "claude-code"
|
|
186
208
|
}
|
|
187
209
|
default {
|
|
188
210
|
Show-Usage
|
|
@@ -299,13 +321,29 @@ function Install-Agents {
|
|
|
299
321
|
}
|
|
300
322
|
}
|
|
301
323
|
|
|
324
|
+
function Install-ClaudeCode {
|
|
325
|
+
param([string[]]$SkillPaths)
|
|
326
|
+
|
|
327
|
+
$target = if ($env:CLAUDE_CODE_SKILLS_DIR) {
|
|
328
|
+
Expand-UserPath $env:CLAUDE_CODE_SKILLS_DIR
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
Join-Path $HOME ".claude/skills"
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
Write-Host "Installing to claude-code: $target"
|
|
335
|
+
foreach ($src in $SkillPaths) {
|
|
336
|
+
Copy-Skill -Source $src -TargetRoot $target
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
302
340
|
if ($Modes.Count -gt 0 -and ($Modes[0] -eq "-h" -or $Modes[0] -eq "--help")) {
|
|
303
341
|
Show-Usage
|
|
304
342
|
exit 0
|
|
305
343
|
}
|
|
306
344
|
|
|
307
345
|
$selectedModes = Resolve-Modes -Requested $Modes
|
|
308
|
-
$skillPaths = Get-SkillPaths
|
|
346
|
+
$skillPaths = Get-SkillPaths -SelectedModes $selectedModes
|
|
309
347
|
|
|
310
348
|
foreach ($mode in $selectedModes) {
|
|
311
349
|
switch ($mode) {
|
|
@@ -313,6 +351,7 @@ foreach ($mode in $selectedModes) {
|
|
|
313
351
|
"openclaw" { Install-OpenClaw -SkillPaths $skillPaths }
|
|
314
352
|
"trae" { Install-Trae -SkillPaths $skillPaths }
|
|
315
353
|
"agents" { Install-Agents -SkillPaths $skillPaths }
|
|
354
|
+
"claude-code" { Install-ClaudeCode -SkillPaths $skillPaths }
|
|
316
355
|
default { throw "Unknown mode: $mode" }
|
|
317
356
|
}
|
|
318
357
|
}
|
|
@@ -4,21 +4,23 @@ set -euo pipefail
|
|
|
4
4
|
usage() {
|
|
5
5
|
cat <<"USAGE"
|
|
6
6
|
Usage:
|
|
7
|
-
./scripts/install_skills.sh [codex|openclaw|trae|agents|all]...
|
|
7
|
+
./scripts/install_skills.sh [codex|openclaw|trae|agents|claude-code|all]...
|
|
8
8
|
|
|
9
9
|
Modes:
|
|
10
|
-
codex
|
|
11
|
-
openclaw
|
|
12
|
-
trae
|
|
13
|
-
agents
|
|
14
|
-
|
|
10
|
+
codex Copy skills into ~/.codex/skills (includes ./codex/ agent-specific skills)
|
|
11
|
+
openclaw Copy skills into ~/.openclaw/workspace*/skills
|
|
12
|
+
trae Copy skills into ~/.trae/skills
|
|
13
|
+
agents Copy skills into ~/.agents/skills (for agent-skill-compatible software)
|
|
14
|
+
claude-code Copy skills into ~/.claude/skills
|
|
15
|
+
all Install all supported targets
|
|
15
16
|
|
|
16
17
|
Optional environment overrides:
|
|
17
|
-
CODEX_SKILLS_DIR
|
|
18
|
-
OPENCLAW_HOME
|
|
19
|
-
TRAE_SKILLS_DIR
|
|
20
|
-
AGENTS_SKILLS_DIR
|
|
21
|
-
|
|
18
|
+
CODEX_SKILLS_DIR Override codex skills destination path
|
|
19
|
+
OPENCLAW_HOME Override openclaw home path
|
|
20
|
+
TRAE_SKILLS_DIR Override trae skills destination path
|
|
21
|
+
AGENTS_SKILLS_DIR Override agents skills destination path
|
|
22
|
+
CLAUDE_CODE_SKILLS_DIR Override claude-code skills destination path
|
|
23
|
+
APOLLO_TOOLKIT_HOME Override local install path used in curl/pipe mode
|
|
22
24
|
APOLLO_TOOLKIT_REPO_URL Override git repository URL used in curl/pipe mode
|
|
23
25
|
USAGE
|
|
24
26
|
}
|
|
@@ -87,6 +89,18 @@ collect_skills() {
|
|
|
87
89
|
fi
|
|
88
90
|
done < <(find "$REPO_ROOT" -mindepth 1 -maxdepth 1 -type d | sort)
|
|
89
91
|
|
|
92
|
+
# For codex mode, also include codex-specific skills
|
|
93
|
+
if [[ " ${SELECTED_MODES[*]} " =~ " codex " ]]; then
|
|
94
|
+
local codex_dir="$REPO_ROOT/codex"
|
|
95
|
+
if [[ -d "$codex_dir" ]]; then
|
|
96
|
+
while IFS= read -r dir; do
|
|
97
|
+
if [[ -f "$dir/SKILL.md" ]]; then
|
|
98
|
+
SKILL_PATHS+=("$dir")
|
|
99
|
+
fi
|
|
100
|
+
done < <(find "$codex_dir" -mindepth 1 -maxdepth 1 -type d | sort)
|
|
101
|
+
fi
|
|
102
|
+
fi
|
|
103
|
+
|
|
90
104
|
if [[ ${#SKILL_PATHS[@]} -eq 0 ]]; then
|
|
91
105
|
echo "No skill folders found in: $REPO_ROOT" >&2
|
|
92
106
|
exit 1
|
|
@@ -164,6 +178,16 @@ install_agents() {
|
|
|
164
178
|
done
|
|
165
179
|
}
|
|
166
180
|
|
|
181
|
+
install_claude_code() {
|
|
182
|
+
local claude_code_skills_dir
|
|
183
|
+
claude_code_skills_dir="$(expand_user_path "${CLAUDE_CODE_SKILLS_DIR:-$HOME/.claude/skills}")"
|
|
184
|
+
|
|
185
|
+
echo "Installing to claude-code: $claude_code_skills_dir"
|
|
186
|
+
for src in "${SKILL_PATHS[@]}"; do
|
|
187
|
+
replace_with_copy "$src" "$claude_code_skills_dir"
|
|
188
|
+
done
|
|
189
|
+
}
|
|
190
|
+
|
|
167
191
|
add_mode_once() {
|
|
168
192
|
local mode="$1"
|
|
169
193
|
local existing
|
|
@@ -182,7 +206,7 @@ parse_mode() {
|
|
|
182
206
|
local mode="$1"
|
|
183
207
|
|
|
184
208
|
case "$mode" in
|
|
185
|
-
codex|openclaw|trae|agents)
|
|
209
|
+
codex|openclaw|trae|agents|claude-code)
|
|
186
210
|
add_mode_once "$mode"
|
|
187
211
|
;;
|
|
188
212
|
all)
|
|
@@ -190,6 +214,7 @@ parse_mode() {
|
|
|
190
214
|
add_mode_once "openclaw"
|
|
191
215
|
add_mode_once "trae"
|
|
192
216
|
add_mode_once "agents"
|
|
217
|
+
add_mode_once "claude-code"
|
|
193
218
|
;;
|
|
194
219
|
*)
|
|
195
220
|
echo "Invalid mode: $mode" >&2
|
|
@@ -222,12 +247,13 @@ choose_modes_interactive() {
|
|
|
222
247
|
show_banner
|
|
223
248
|
echo
|
|
224
249
|
echo "Select install options (comma-separated):"
|
|
225
|
-
echo "1) codex (~/.codex/skills)"
|
|
250
|
+
echo "1) codex (~/.codex/skills, includes ./codex/ agent-specific skills)"
|
|
226
251
|
echo "2) openclaw (~/.openclaw/workspace*/skills)"
|
|
227
252
|
echo "3) trae (~/.trae/skills)"
|
|
228
253
|
echo "4) agents (~/.agents/skills)"
|
|
229
|
-
echo "5)
|
|
230
|
-
|
|
254
|
+
echo "5) claude-code (~/.claude/skills)"
|
|
255
|
+
echo "6) all"
|
|
256
|
+
choice="$(read_choice_from_user 'Enter choice(s) [1-6]: ')"
|
|
231
257
|
|
|
232
258
|
IFS=',' read -r -a choices <<< "$choice"
|
|
233
259
|
for raw_choice in "${choices[@]}"; do
|
|
@@ -237,7 +263,8 @@ choose_modes_interactive() {
|
|
|
237
263
|
2) add_mode_once "openclaw" ;;
|
|
238
264
|
3) add_mode_once "trae" ;;
|
|
239
265
|
4) add_mode_once "agents" ;;
|
|
240
|
-
5) add_mode_once "
|
|
266
|
+
5) add_mode_once "claude-code" ;;
|
|
267
|
+
6) add_mode_once "codex"; add_mode_once "openclaw"; add_mode_once "trae"; add_mode_once "agents"; add_mode_once "claude-code" ;;
|
|
241
268
|
*)
|
|
242
269
|
echo "Invalid choice: $raw_choice" >&2
|
|
243
270
|
exit 1
|
|
@@ -282,6 +309,7 @@ main() {
|
|
|
282
309
|
openclaw) install_openclaw ;;
|
|
283
310
|
trae) install_trae ;;
|
|
284
311
|
agents) install_agents ;;
|
|
312
|
+
claude-code) install_claude_code ;;
|
|
285
313
|
*)
|
|
286
314
|
usage
|
|
287
315
|
exit 1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{codex-memory-manager → codex/codex-memory-manager}/scripts/extract_recent_conversations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{codex-memory-manager → codex/codex-memory-manager}/tests/test_sync_memory_index.py
RENAMED
|
File without changes
|
/package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/CHANGELOG.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{learn-skill-from-conversations → codex/learn-skill-from-conversations}/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|