@laitszkin/apollo-toolkit 2.13.0 → 2.13.1

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 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.13.1] - 2026-04-05
8
+
9
+ ### Fixed
10
+ - Fix the npm / `apltk` installer so selecting `codex` now copies agent-specific skills from the repository `codex/` subdirectory into the managed toolkit home and the final Codex skills target.
11
+ - Fix the npm / `apltk` interactive installer and help output so `claude-code` appears as a supported target and can be installed through the same CLI flow as the other modes.
12
+
13
+ ### Changed
14
+ - Refresh installer banner and README wording so Claude Code support is described consistently in the npm-based installation flow.
15
+
7
16
  ## [v2.13.0] - 2026-04-05
8
17
 
9
18
  ### Added
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Apollo Toolkit Skills
2
2
 
3
- A curated skill catalog for Codex, OpenClaw, and Trae with a managed installer that keeps the toolkit in `~/.apollo-toolkit` and copies each skill into the targets you choose.
3
+ A curated skill catalog for Codex, OpenClaw, Trae, and Claude Code with a managed installer that keeps the toolkit in `~/.apollo-toolkit` and copies each skill into the targets you choose.
4
4
 
5
5
  ## Included skills
6
6
 
@@ -62,7 +62,7 @@ npx @laitszkin/apollo-toolkit
62
62
  The interactive installer:
63
63
  - shows a branded `Apollo Toolkit` terminal welcome screen with a short staged reveal
64
64
  - installs a managed copy into `~/.apollo-toolkit`
65
- - lets you multi-select `codex`, `openclaw`, `trae`, or `all`
65
+ - lets you multi-select `codex`, `openclaw`, `trae`, `claude-code`, or `all`
66
66
  - copies `~/.apollo-toolkit/<skill>` into each selected target
67
67
  - removes stale previously installed skill directories that existed in the previous installed version but no longer exist in the current package skill list
68
68
  - replaces legacy symlink-based installs created by older Apollo Toolkit installers with real copied directories
@@ -81,6 +81,7 @@ Global install 後,`apltk` 與 `apollo-toolkit` 都會啟動同一個 Apollo T
81
81
 
82
82
  ```bash
83
83
  npx @laitszkin/apollo-toolkit codex
84
+ npx @laitszkin/apollo-toolkit claude-code
84
85
  npx @laitszkin/apollo-toolkit codex openclaw
85
86
  npx @laitszkin/apollo-toolkit all
86
87
  ```
@@ -92,6 +93,7 @@ APOLLO_TOOLKIT_HOME=~/custom-toolkit npx @laitszkin/apollo-toolkit codex
92
93
  CODEX_SKILLS_DIR=~/custom-codex-skills npx @laitszkin/apollo-toolkit codex
93
94
  OPENCLAW_HOME=~/.openclaw npx @laitszkin/apollo-toolkit openclaw
94
95
  TRAE_SKILLS_DIR=~/.trae/skills npx @laitszkin/apollo-toolkit trae
96
+ CLAUDE_CODE_SKILLS_DIR=~/.claude/skills npx @laitszkin/apollo-toolkit claude-code
95
97
  ```
96
98
 
97
99
  ## Local installer scripts
package/lib/cli.js CHANGED
@@ -17,6 +17,7 @@ const TARGET_OPTIONS = [
17
17
  { id: 'codex', label: 'Codex', description: '~/.codex/skills' },
18
18
  { id: 'openclaw', label: 'OpenClaw', description: '~/.openclaw/workspace*/skills' },
19
19
  { id: 'trae', label: 'Trae', description: '~/.trae/skills' },
20
+ { id: 'claude-code', label: 'Claude Code', description: '~/.claude/skills' },
20
21
  ];
21
22
 
22
23
  const WORDMARK_LINES = [
@@ -56,7 +57,7 @@ function buildBanner({ version, colorEnabled }) {
56
57
  return [
57
58
  buildWordmark({ colorEnabled }),
58
59
  color('Apollo Toolkit', '1', colorEnabled),
59
- color('Install curated skills for Codex, OpenClaw, and Trae', '2', colorEnabled),
60
+ color('Install curated skills for Codex, OpenClaw, Trae, and Claude Code', '2', colorEnabled),
60
61
  color(`Version ${version}`, '1;33', colorEnabled),
61
62
  ].join('\n');
62
63
  }
@@ -90,6 +91,7 @@ function buildWelcomeScreen({ version, colorEnabled, stage = 4 }) {
90
91
  ` ${color('Codex', '1', colorEnabled)} ~/.codex/skills`,
91
92
  ` ${color('OpenClaw', '1', colorEnabled)} ~/.openclaw/workspace*/skills`,
92
93
  ` ${color('Trae', '1', colorEnabled)} ~/.trae/skills`,
94
+ ` ${color('Claude Code', '1', colorEnabled)} ~/.claude/skills`,
93
95
  );
94
96
  }
95
97
 
@@ -118,8 +120,8 @@ function buildHelpText({ version, colorEnabled }) {
118
120
  buildBanner({ version, colorEnabled }),
119
121
  '',
120
122
  'Usage:',
121
- ' apltk [install] [codex|openclaw|trae|all]...',
122
- ' apollo-toolkit [install] [codex|openclaw|trae|all]...',
123
+ ' apltk [install] [codex|openclaw|trae|claude-code|all]...',
124
+ ' apollo-toolkit [install] [codex|openclaw|trae|claude-code|all]...',
123
125
  ' apltk --help',
124
126
  ' apollo-toolkit --help',
125
127
  '',
@@ -129,6 +131,7 @@ function buildHelpText({ version, colorEnabled }) {
129
131
  ' npx @laitszkin/apollo-toolkit',
130
132
  ' npx @laitszkin/apollo-toolkit codex openclaw',
131
133
  ' npm i -g @laitszkin/apollo-toolkit',
134
+ ' apltk claude-code',
132
135
  ' apltk all',
133
136
  ' apollo-toolkit all',
134
137
  '',
@@ -212,7 +215,7 @@ function renderSelectionScreen({ output, version, cursor, selected, message, env
212
215
 
213
216
  async function promptForModes({ stdin, stdout, version, env }) {
214
217
  if (!stdin.isTTY || !stdout.isTTY) {
215
- throw new Error('Interactive install requires a TTY. Re-run with targets like `codex`, `openclaw`, `trae`, or `all`.');
218
+ throw new Error('Interactive install requires a TTY. Re-run with targets like `codex`, `openclaw`, `trae`, `claude-code`, or `all`.');
216
219
  }
217
220
 
218
221
  await animateWelcomeScreen({ output: stdout, version, env });
@@ -401,6 +404,7 @@ async function run(argv, context = {}) {
401
404
  sourceRoot,
402
405
  toolkitHome,
403
406
  version: packageJson.version,
407
+ modes,
404
408
  });
405
409
 
406
410
  const installResult = await installLinks({
package/lib/installer.js CHANGED
@@ -107,14 +107,28 @@ function shouldCopyEntry(sourceRoot, entry) {
107
107
  return fs.existsSync(path.join(sourceRoot, entry.name, 'SKILL.md'));
108
108
  }
109
109
 
110
- async function stageToolkitContents({ sourceRoot, destinationRoot, version }) {
110
+ function shouldCopyCodexContainer({ sourceRoot, entry, modes = [] }) {
111
+ if (entry.name !== 'codex' || !entry.isDirectory() || !modes.includes('codex')) {
112
+ return false;
113
+ }
114
+
115
+ const codexDir = path.join(sourceRoot, entry.name);
116
+ if (!fs.existsSync(codexDir)) {
117
+ return false;
118
+ }
119
+
120
+ const childNames = fs.readdirSync(codexDir);
121
+ return childNames.some((childName) => fs.existsSync(path.join(codexDir, childName, 'SKILL.md')));
122
+ }
123
+
124
+ async function stageToolkitContents({ sourceRoot, destinationRoot, version, modes = [] }) {
111
125
  const entries = await fsp.readdir(sourceRoot, { withFileTypes: true });
112
126
  const copiedEntries = [];
113
127
 
114
128
  await fsp.mkdir(destinationRoot, { recursive: true });
115
129
 
116
130
  for (const entry of entries) {
117
- if (!shouldCopyEntry(sourceRoot, entry)) {
131
+ if (!shouldCopyEntry(sourceRoot, entry) && !shouldCopyCodexContainer({ sourceRoot, entry, modes })) {
118
132
  continue;
119
133
  }
120
134
 
@@ -144,7 +158,7 @@ async function syncToolkitHome({ sourceRoot, toolkitHome, version, modes = [] })
144
158
  const previousSkillNames = await listSkillNames(toolkitHome, modes).catch(() => []);
145
159
 
146
160
  await fsp.rm(tempDir, { recursive: true, force: true });
147
- await stageToolkitContents({ sourceRoot, destinationRoot: tempDir, version });
161
+ await stageToolkitContents({ sourceRoot, destinationRoot: tempDir, version, modes });
148
162
 
149
163
  const stat = await fsp.lstat(toolkitHome).catch(() => null);
150
164
  if (stat && !stat.isDirectory()) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laitszkin/apollo-toolkit",
3
- "version": "2.13.0",
3
+ "version": "2.13.1",
4
4
  "description": "Apollo Toolkit npm installer for managed skill copying across Codex, OpenClaw, and Trae.",
5
5
  "license": "MIT",
6
6
  "author": "LaiTszKin",