@maccesar/aiskills 1.11.0 → 1.12.0
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 +2 -2
- package/lib/cleanup.js +13 -0
- package/lib/commands/skills.js +2 -1
- package/lib/config.js +3 -6
- package/lib/platform.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ claude # or gemini, or codex
|
|
|
40
40
|
|
|
41
41
|
Installed files:
|
|
42
42
|
- All skills to `~/.agents/skills/`
|
|
43
|
-
- Platform symlinks in `~/.claude/skills
|
|
43
|
+
- Platform symlinks in `~/.claude/skills/` and `~/.gemini/skills/` (Codex CLI auto-discovers from `~/.agents/skills/` — no symlink needed)
|
|
44
44
|
|
|
45
45
|
### Which option should I use?
|
|
46
46
|
|
|
@@ -59,7 +59,7 @@ Installed files:
|
|
|
59
59
|
| --------------------------------------------------------- | --------- | ------------------- |
|
|
60
60
|
| [Claude Code](https://claude.ai/claude-code) | Supported | `~/.claude/skills/` |
|
|
61
61
|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | Supported | `~/.gemini/skills/` |
|
|
62
|
-
| [Codex CLI](https://developers.openai.com/codex/cli/) | Supported | `~/.
|
|
62
|
+
| [Codex CLI](https://developers.openai.com/codex/cli/) | Supported | `~/.agents/skills/` (auto-discovered) |
|
|
63
63
|
|
|
64
64
|
All three platforms use the same Agent Skills format: a `SKILL.md` file with YAML frontmatter that tells the assistant when to use the skill and what to do.
|
|
65
65
|
|
package/lib/cleanup.js
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
LEGACY_COMMANDS,
|
|
10
10
|
getAgentsSkillsDir,
|
|
11
11
|
getClaudeCommandsDir,
|
|
12
|
+
getCodexSkillsDir,
|
|
12
13
|
} from './config.js';
|
|
13
14
|
import { detectPlatforms } from './platform.js';
|
|
14
15
|
import { existsSync, lstatSync, rmSync } from 'fs';
|
|
@@ -53,6 +54,14 @@ export function removeLegacySkillSymlinks(platformSkillsDir) {
|
|
|
53
54
|
return removeSkillSymlinks(platformSkillsDir, { legacyOnly: true });
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
// Codex reads skills from the canonical ~/.agents/skills/, so any aiskills-managed
|
|
58
|
+
// symlinks at ~/.codex/skills/ from earlier versions are redundant and should be
|
|
59
|
+
// cleaned up. Targets both active and legacy skill names.
|
|
60
|
+
export function removeCodexRedundantSymlinks(baseDir) {
|
|
61
|
+
const codexSkillsDir = getCodexSkillsDir(baseDir);
|
|
62
|
+
return removeSkillSymlinks(codexSkillsDir);
|
|
63
|
+
}
|
|
64
|
+
|
|
56
65
|
export function removeSkills(baseDir, options = {}) {
|
|
57
66
|
const skillsDir = getAgentsSkillsDir(baseDir);
|
|
58
67
|
const skillList = getSkillList(options);
|
|
@@ -74,6 +83,8 @@ export function cleanupLegacyArtifacts(baseDir) {
|
|
|
74
83
|
removeLegacySkillSymlinks(platform.skillsDir);
|
|
75
84
|
}
|
|
76
85
|
|
|
86
|
+
removeCodexRedundantSymlinks(baseDir);
|
|
87
|
+
|
|
77
88
|
if (baseDir) {
|
|
78
89
|
removeSkills(undefined, { legacyOnly: true });
|
|
79
90
|
removeCommands(undefined, { legacyOnly: true });
|
|
@@ -81,6 +92,7 @@ export function cleanupLegacyArtifacts(baseDir) {
|
|
|
81
92
|
for (const platform of globalPlatforms) {
|
|
82
93
|
removeLegacySkillSymlinks(platform.skillsDir);
|
|
83
94
|
}
|
|
95
|
+
removeCodexRedundantSymlinks(undefined);
|
|
84
96
|
}
|
|
85
97
|
}
|
|
86
98
|
|
|
@@ -89,6 +101,7 @@ export default {
|
|
|
89
101
|
getCommandList,
|
|
90
102
|
removeSkillSymlinks,
|
|
91
103
|
removeLegacySkillSymlinks,
|
|
104
|
+
removeCodexRedundantSymlinks,
|
|
92
105
|
removeSkills,
|
|
93
106
|
removeCommands,
|
|
94
107
|
cleanupLegacyArtifacts,
|
package/lib/commands/skills.js
CHANGED
|
@@ -86,7 +86,8 @@ export async function skillsCommand(options) {
|
|
|
86
86
|
|
|
87
87
|
if (detectedPlatforms.length === 0 && !options.path && !isLocal) {
|
|
88
88
|
console.log(chalk.yellow('No AI coding assistants detected globally.'));
|
|
89
|
-
console.log('Install one of: Claude Code
|
|
89
|
+
console.log('Install one of: Claude Code or Gemini CLI.');
|
|
90
|
+
console.log('(Codex CLI is supported via the canonical ~/.agents/skills/ — no platform-specific symlink needed.)');
|
|
90
91
|
console.log('Or use: aiskills install --local');
|
|
91
92
|
process.exit(1);
|
|
92
93
|
}
|
package/lib/config.js
CHANGED
|
@@ -68,12 +68,9 @@ export const getPlatforms = (baseDir = os.homedir()) => [
|
|
|
68
68
|
skillsDir: getGeminiSkillsDir(baseDir),
|
|
69
69
|
configDir: path.join(baseDir, '.gemini'),
|
|
70
70
|
},
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
skillsDir: getCodexSkillsDir(baseDir),
|
|
75
|
-
configDir: path.join(baseDir, '.codex'),
|
|
76
|
-
},
|
|
71
|
+
// Codex CLI is intentionally omitted: it auto-discovers skills from the
|
|
72
|
+
// canonical ~/.agents/skills/ per the agentskills.io standard, so a
|
|
73
|
+
// platform-specific symlink at ~/.codex/skills/ would be redundant.
|
|
77
74
|
];
|
|
78
75
|
|
|
79
76
|
// API configuration
|
package/lib/platform.js
CHANGED
|
@@ -26,7 +26,7 @@ export function detectPlatforms(baseDir) {
|
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Get platform by name
|
|
29
|
-
* @param {string} name - Platform name (claude, gemini
|
|
29
|
+
* @param {string} name - Platform name (claude, gemini)
|
|
30
30
|
* @param {string} baseDir - Optional base directory
|
|
31
31
|
* @returns {Object|null} Platform object or null
|
|
32
32
|
*/
|