@antoneeo/agentic-sdlc-skill 1.2.3 → 1.3.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
@@ -1,19 +1,40 @@
1
1
  # Changelog - Agentic SDLC Skill
2
2
 
3
- Tutte le modifiche significative a questa skill saranno documentate in questo file.
4
-
5
- ## [1.2.2] - 2026-05-10
6
- ### Changed
7
- - README convertito in inglese per la pubblicazione npm.
8
- - Versione allineata a `1.2.2` in `package.json` e `gemini-extension.json`.
9
-
10
- ## [1.2.1] - 2026-05-10
11
- ### Fixed
12
- - `postinstall` ora registra la skill anche per Codex copiandola in `$CODEX_HOME/skills/agentic-sdlc/` oppure `~/.codex/skills/agentic-sdlc/`.
13
- - `preuninstall` rimuove anche la copia Codex della skill.
14
- - `agentic-sdlc-init` ora crea `AGENTS.md` per Codex invece di `.codex/hooks.json`, che Codex non carica come istruzioni di progetto.
15
-
16
- ## [1.2.0] - 2026-05-10
3
+ Tutte le modifiche significative a questa skill saranno documentate in questo file.
4
+
5
+ ## [1.3.1] - 2026-05-14
6
+ ### Fixed
7
+ - Correzione documentazione (README + CHANGELOG) della sintassi per invocare il bin `agentic-sdlc-install-skill`. La forma `npx @antoneeo/agentic-sdlc-skill agentic-sdlc-install-skill` documentata in 1.3.0 **non funziona** perché npx non riesce a disambiguare il bin quando il pacchetto ne espone più di uno (errore: `could not determine executable to run`). Sintassi corretta: lanciare `agentic-sdlc-install-skill` direttamente dopo `npm install -g`, oppure usare `npx -p @antoneeo/agentic-sdlc-skill agentic-sdlc-install-skill` con `-p` esplicito.
8
+ - Nessuna modifica al codice della skill: il bin di 1.3.0 funziona correttamente, era solo la doc a indicare la sintassi sbagliata.
9
+
10
+ ## [1.3.0] - 2026-05-14
11
+ ### Added
12
+ - Nuovo comando esplicito `agentic-sdlc-install-skill` (registrato come `bin`): installa la skill in `~/.claude/skills/agentic-sdlc/` e `~/.codex/skills/agentic-sdlc/` **senza dipendere dal `postinstall` hook**. Risolve i casi in cui `npm` salta gli script (configurazioni `ignore-scripts=true`, policy IT aziendali, alcuni installer Node) e l'auto-install fallisce silenziosamente.
13
+ - Sezione "Troubleshooting" nel README con istruzioni per il caso in cui la skill non venga rilevata da Claude Code dopo `npm install -g`.
14
+
15
+ ### Usage
16
+ ```bash
17
+ npm install -g @antoneeo/agentic-sdlc-skill@latest
18
+ agentic-sdlc-install-skill
19
+ ```
20
+
21
+ ## [1.2.4] - 2026-05-14
22
+ ### Fixed
23
+ - `postinstall` ora rileva Claude Code anche quando il CLI `claude` non è nel PATH (es. Claude Desktop con Claude Code integrato): la presenza di `~/.claude/` o della variabile `CLAUDE_CONFIG_DIR` è sufficiente per attivare l'installazione della skill in `~/.claude/skills/agentic-sdlc/`. Stesso pattern già usato per Codex.
24
+ - `preuninstall` rispetta `CLAUDE_CONFIG_DIR` per rimuovere la skill dalla directory di configurazione corretta.
25
+
26
+ ## [1.2.2] - 2026-05-10
27
+ ### Changed
28
+ - README convertito in inglese per la pubblicazione npm.
29
+ - Versione allineata a `1.2.2` in `package.json` e `gemini-extension.json`.
30
+
31
+ ## [1.2.1] - 2026-05-10
32
+ ### Fixed
33
+ - `postinstall` ora registra la skill anche per Codex copiandola in `$CODEX_HOME/skills/agentic-sdlc/` oppure `~/.codex/skills/agentic-sdlc/`.
34
+ - `preuninstall` rimuove anche la copia Codex della skill.
35
+ - `agentic-sdlc-init` ora crea `AGENTS.md` per Codex invece di `.codex/hooks.json`, che Codex non carica come istruzioni di progetto.
36
+
37
+ ## [1.2.0] - 2026-05-10
17
38
  ### Added
18
39
  - **Auto-installazione skill nativa Claude Code**: il `postinstall` ora copia `skills/agentic-sdlc-skill/` in `~/.claude/skills/agentic-sdlc/` quando rileva il CLI `claude`. La skill diventa disponibile come `agentic-sdlc` nel tool `Skill` di Claude Code dopo riavvio.
19
40
  - Nuovo script `preuninstall.js` che rimuove la skill da `~/.claude/skills/agentic-sdlc/` durante `npm uninstall`.
package/README.md CHANGED
@@ -1,61 +1,84 @@
1
- # Agentic SDLC Skill for Claude Code, Gemini CLI & Codex
2
-
3
- A "Documentation-First" SDLC protocol designed to manage the software development lifecycle rigorously. It natively supports **Claude Code** (skill auto-installed in `~/.claude/skills/`), **Gemini CLI** (extension), and **Codex AI** (skill auto-installed in `~/.codex/skills/`).
4
-
5
- ## Key Features
6
- - **Documentation-First**: Requires documentation (`docs/`) to be created or updated before writing code.
7
- - **Automatic Audit**: Analyzes the existing architecture and features.
8
- - **Traceable Workflow**: Tracks feature status in `features_history.md`.
9
- - **Built-In Quality**: Native integration of analysis, development, and testing.
10
-
11
- ## Installation
12
-
13
- ### Via npm (recommended - installs for all detected CLIs)
14
-
15
- ```bash
16
- npm install -g @antoneeo/agentic-sdlc-skill
17
- ```
18
-
19
- The `postinstall` script automatically detects installed CLIs and configures each one:
20
-
21
- - **Claude Code**: copies the skill to `~/.claude/skills/agentic-sdlc/`. Restart Claude Code; invoke it through the `Skill` tool as `agentic-sdlc`, or let it trigger automatically from SDLC/audit prompts.
22
- - **Gemini CLI**: suggests `gemini extensions install` (see below).
23
- - **Codex AI**: copies the skill to `$CODEX_HOME/skills/agentic-sdlc/` or `~/.codex/skills/agentic-sdlc/`. Restart Codex to load it.
24
-
25
- `npm uninstall -g @antoneeo/agentic-sdlc-skill` also removes the skills from `~/.claude/skills/agentic-sdlc/` and `~/.codex/skills/agentic-sdlc/`.
26
-
27
- ### Via Gemini CLI (local alternative)
28
-
29
- > **Tip:** Before installing, copy this folder from the USB drive to your computer's hard drive (for example, `C:\tools\agentic-sdlc-skill`). This keeps the skill available even after the USB drive is removed.
30
-
31
- To install this extension, open a terminal in the folder that contains this README and run:
32
-
33
- ```bash
34
- gemini extensions install .
35
- ```
36
-
37
- *Note: If you are in a different folder, replace `.` with the full path to the skill folder.*
38
-
39
- ## Global Availability
40
- Once installation is complete, the skill is **globally available**. You can close this folder and move to **any other project** on your PC: Gemini CLI will automatically recognize the commands and workflow of the `agentic-sdlc` skill.
41
-
42
- ## Getting Started
43
-
44
- After installation, start Gemini CLI and verify that the skill is available:
45
-
46
- 1. **List available skills:**
47
- ```bash
48
- /skills list all
49
- ```
50
- 2. **Activate the skill:**
51
- The skill activates automatically when it detects requests related to development, audits, or feature management. You can also invoke it explicitly:
52
- > "Use the agentic-sdlc skill to analyze this project"
53
-
54
- ## Project Structure
55
- - `skills/`: Contains the skill logic (`SKILL.md`).
56
- - `references/`: Markdown templates for architecture, analysis, and feature history.
57
- - `gemini-extension.json`: Extension manifest.
58
-
59
- ---
60
- Created by **Antonio Pinto** ([GitHub](https://github.com/Antoneeo))
61
- (c) 2026 Antonio Pinto. All rights reserved.
1
+ # Agentic SDLC Skill for Claude Code, Gemini CLI & Codex
2
+
3
+ A "Documentation-First" SDLC protocol designed to manage the software development lifecycle rigorously. It natively supports **Claude Code** (skill auto-installed in `~/.claude/skills/`), **Gemini CLI** (extension), and **Codex AI** (skill auto-installed in `~/.codex/skills/`).
4
+
5
+ ## Key Features
6
+ - **Documentation-First**: Requires documentation (`docs/`) to be created or updated before writing code.
7
+ - **Automatic Audit**: Analyzes the existing architecture and features.
8
+ - **Traceable Workflow**: Tracks feature status in `features_history.md`.
9
+ - **Built-In Quality**: Native integration of analysis, development, and testing.
10
+
11
+ ## Installation
12
+
13
+ ### Via npm (recommended - installs for all detected CLIs)
14
+
15
+ ```bash
16
+ npm install -g @antoneeo/agentic-sdlc-skill
17
+ ```
18
+
19
+ The `postinstall` script automatically detects installed CLIs and configures each one:
20
+
21
+ - **Claude Code**: copies the skill to `~/.claude/skills/agentic-sdlc/`. Restart Claude Code; invoke it through the `Skill` tool as `agentic-sdlc`, or let it trigger automatically from SDLC/audit prompts.
22
+ - **Gemini CLI**: suggests `gemini extensions install` (see below).
23
+ - **Codex AI**: copies the skill to `$CODEX_HOME/skills/agentic-sdlc/` or `~/.codex/skills/agentic-sdlc/`. Restart Codex to load it.
24
+
25
+ `npm uninstall -g @antoneeo/agentic-sdlc-skill` also removes the skills from `~/.claude/skills/agentic-sdlc/` and `~/.codex/skills/agentic-sdlc/`.
26
+
27
+ #### Troubleshooting skill not visible in Claude Code after install
28
+
29
+ If after `npm install -g` you do **not** see the line `--- Agentic SDLC Skill Discovery ---` in the npm output, and `~/.claude/skills/agentic-sdlc/` does not exist, the `postinstall` hook was skipped by npm. The most common cause is `ignore-scripts=true` in your npm config (set by some Node installers, corporate IT policies, or security tools).
30
+
31
+ The package ships an explicit `agentic-sdlc-install-skill` command that does the same work but does **not** depend on the `postinstall` hook. After `npm install -g`, the bin shim is created regardless of `ignore-scripts`, so you can simply run:
32
+
33
+ ```bash
34
+ npm install -g @antoneeo/agentic-sdlc-skill@latest
35
+ agentic-sdlc-install-skill
36
+ ```
37
+
38
+ You should see the `--- Agentic SDLC Skill Discovery ---` banner and `📦 Installed Claude Code skill at: ...`. Then restart Claude Code (or Codex) and the skill will be available.
39
+
40
+ > **Note on `npx`**: because the package exposes two bin commands, the shorthand `npx @antoneeo/agentic-sdlc-skill agentic-sdlc-install-skill` does not work npx cannot disambiguate. If you prefer npx, use the explicit `-p` form: `npx -p @antoneeo/agentic-sdlc-skill agentic-sdlc-install-skill`.
41
+
42
+ Alternatively, fix the npm config and reinstall (the `postinstall` hook will then run automatically):
43
+
44
+ ```bash
45
+ npm config set ignore-scripts false
46
+ npm uninstall -g @antoneeo/agentic-sdlc-skill
47
+ npm install -g @antoneeo/agentic-sdlc-skill@latest
48
+ ```
49
+
50
+ ### Via Gemini CLI (local alternative)
51
+
52
+ > **Tip:** Before installing, copy this folder from the USB drive to your computer's hard drive (for example, `C:\tools\agentic-sdlc-skill`). This keeps the skill available even after the USB drive is removed.
53
+
54
+ To install this extension, open a terminal in the folder that contains this README and run:
55
+
56
+ ```bash
57
+ gemini extensions install .
58
+ ```
59
+
60
+ *Note: If you are in a different folder, replace `.` with the full path to the skill folder.*
61
+
62
+ ## Global Availability
63
+ Once installation is complete, the skill is **globally available**. You can close this folder and move to **any other project** on your PC: Gemini CLI will automatically recognize the commands and workflow of the `agentic-sdlc` skill.
64
+
65
+ ## Getting Started
66
+
67
+ After installation, start Gemini CLI and verify that the skill is available:
68
+
69
+ 1. **List available skills:**
70
+ ```bash
71
+ /skills list all
72
+ ```
73
+ 2. **Activate the skill:**
74
+ The skill activates automatically when it detects requests related to development, audits, or feature management. You can also invoke it explicitly:
75
+ > "Use the agentic-sdlc skill to analyze this project"
76
+
77
+ ## Project Structure
78
+ - `skills/`: Contains the skill logic (`SKILL.md`).
79
+ - `references/`: Markdown templates for architecture, analysis, and feature history.
80
+ - `gemini-extension.json`: Extension manifest.
81
+
82
+ ---
83
+ Created by **Antonio Pinto** ([GitHub](https://github.com/Antoneeo))
84
+ (c) 2026 Antonio Pinto. All rights reserved.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-sdlc-skill",
3
- "version": "1.2.3",
3
+ "version": "1.3.1",
4
4
  "description": "Protocollo SDLC Documentation-First per Gemini CLI.",
5
5
  "author": "Antonio Pinto (https://github.com/Antoneeo)"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antoneeo/agentic-sdlc-skill",
3
- "version": "1.2.3",
3
+ "version": "1.3.1",
4
4
  "description": "Protocollo SDLC Documentation-First per Claude Code, Gemini CLI e Codex. Auto-installa le skill native in ~/.claude/skills/ e ~/.codex/skills/. Gestisce audit, analisi, sviluppo e chiusura feature con documentazione sincronizzata.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -17,7 +17,8 @@
17
17
  "access": "public"
18
18
  },
19
19
  "bin": {
20
- "agentic-sdlc-init": "scripts/init.js"
20
+ "agentic-sdlc-init": "scripts/init.js",
21
+ "agentic-sdlc-install-skill": "scripts/postinstall.js"
21
22
  },
22
23
  "scripts": {
23
24
  "postinstall": "node scripts/postinstall.js",
package/scripts/init.js CHANGED
@@ -18,23 +18,23 @@ function checkCommand(cmd) {
18
18
 
19
19
  // 1. Path definitions
20
20
  const directories = [
21
- path.join(cwd, 'ai_docs'),
22
- path.join(cwd, 'ai_docs', 'strategic'),
23
- path.join(cwd, 'ai_docs', 'audit'),
24
- path.join(cwd, 'ai_docs', 'solutions')
25
- ];
21
+ path.join(cwd, 'ai_docs'),
22
+ path.join(cwd, 'ai_docs', 'strategic'),
23
+ path.join(cwd, 'ai_docs', 'audit'),
24
+ path.join(cwd, 'ai_docs', 'solutions')
25
+ ];
26
26
 
27
27
  const files = {
28
28
  architecture: path.join(cwd, 'ai_docs', 'strategic', 'architecture.md'),
29
29
  existingFeatures: path.join(cwd, 'ai_docs', 'strategic', 'existing_features.md'),
30
30
  featuresHistory: path.join(cwd, 'ai_docs', 'strategic', 'features_history.md'),
31
31
  auditPlan: path.join(cwd, 'ai_docs', 'audit', 'audit_plan.md'),
32
- handoff: path.join(cwd, 'ai_docs', 'audit', 'handoff.md'),
33
- claudeConfig: path.join(cwd, 'CLAUDE.md'),
34
- geminiConfig: path.join(cwd, 'GEMINI.md'),
35
- codexAgents: path.join(cwd, 'AGENTS.md'),
36
- cursorRules: path.join(cwd, '.cursorrules')
37
- };
32
+ handoff: path.join(cwd, 'ai_docs', 'audit', 'handoff.md'),
33
+ claudeConfig: path.join(cwd, 'CLAUDE.md'),
34
+ geminiConfig: path.join(cwd, 'GEMINI.md'),
35
+ codexAgents: path.join(cwd, 'AGENTS.md'),
36
+ cursorRules: path.join(cwd, '.cursorrules')
37
+ };
38
38
 
39
39
  // 2. Operational Protocol (System Prompt)
40
40
  const protocolContent = `# "Agentic SDLC" Operational Protocol
@@ -68,7 +68,7 @@ Upon feature completion:
68
68
  - Update \`ai_docs/strategic/features_history.md\` setting status to \`[COMPLETED]\`.
69
69
  `;
70
70
 
71
- const historyBoilerplate = `# Feature History
71
+ const historyBoilerplate = `# Feature History
72
72
 
73
73
  | ID | Feature Name | Status | Start Date | End Date | Analysis Doc | Notes |
74
74
  |:---|:---|:---|:---|:---|:---|:---|
@@ -115,17 +115,17 @@ if (checkCommand('gemini')) {
115
115
  writeIfNotExists(files.geminiConfig, protocolContent, 'Gemini Configuration');
116
116
  }
117
117
 
118
- if (checkCommand('codex')) {
119
- console.log('✅ Codex AI detected.');
120
- writeIfNotExists(files.codexAgents, protocolContent, 'Codex AGENTS.md');
121
- }
118
+ if (checkCommand('codex')) {
119
+ console.log('✅ Codex AI detected.');
120
+ writeIfNotExists(files.codexAgents, protocolContent, 'Codex AGENTS.md');
121
+ }
122
122
 
123
123
  // Cursor/Windsurf (always recommended)
124
124
  writeIfNotExists(files.cursorRules, protocolContent, 'Cursor/Windsurf Rules');
125
125
 
126
126
  console.log('\n✅ Setup completed successfully!');
127
127
  console.log('💡 Next steps:');
128
- console.log(' 1. If using Claude Code, start it: it will read CLAUDE.md.');
129
- console.log(' 2. If using Gemini CLI, commands will use GEMINI.md.');
130
- console.log(' 3. If using Codex, restart/open the project so it reads AGENTS.md.');
131
- console.log(' 4. Start analyzing the codebase following ai_docs/audit/audit_plan.md.');
128
+ console.log(' 1. If using Claude Code, start it: it will read CLAUDE.md.');
129
+ console.log(' 2. If using Gemini CLI, commands will use GEMINI.md.');
130
+ console.log(' 3. If using Codex, restart/open the project so it reads AGENTS.md.');
131
+ console.log(' 4. Start analyzing the codebase following ai_docs/audit/audit_plan.md.');
@@ -5,13 +5,14 @@ const fs = require('fs');
5
5
  const path = require('path');
6
6
  const os = require('os');
7
7
 
8
- const PACKAGE_ROOT = path.resolve(__dirname, '..');
9
- const SKILL_SOURCE = path.join(PACKAGE_ROOT, 'skills', 'agentic-sdlc-skill');
10
- const CLAUDE_SKILLS_DIR = path.join(os.homedir(), '.claude', 'skills');
11
- const CLAUDE_SKILL_TARGET = path.join(CLAUDE_SKILLS_DIR, 'agentic-sdlc');
12
- const CODEX_HOME = process.env.CODEX_HOME || path.join(os.homedir(), '.codex');
13
- const CODEX_SKILLS_DIR = path.join(CODEX_HOME, 'skills');
14
- const CODEX_SKILL_TARGET = path.join(CODEX_SKILLS_DIR, 'agentic-sdlc');
8
+ const PACKAGE_ROOT = path.resolve(__dirname, '..');
9
+ const SKILL_SOURCE = path.join(PACKAGE_ROOT, 'skills', 'agentic-sdlc-skill');
10
+ const CLAUDE_HOME = process.env.CLAUDE_CONFIG_DIR || path.join(os.homedir(), '.claude');
11
+ const CLAUDE_SKILLS_DIR = path.join(CLAUDE_HOME, 'skills');
12
+ const CLAUDE_SKILL_TARGET = path.join(CLAUDE_SKILLS_DIR, 'agentic-sdlc');
13
+ const CODEX_HOME = process.env.CODEX_HOME || path.join(os.homedir(), '.codex');
14
+ const CODEX_SKILLS_DIR = path.join(CODEX_HOME, 'skills');
15
+ const CODEX_SKILL_TARGET = path.join(CODEX_SKILLS_DIR, 'agentic-sdlc');
15
16
 
16
17
  function checkCommand(cmd) {
17
18
  try {
@@ -37,7 +38,7 @@ function copyRecursive(src, dest) {
37
38
  }
38
39
  }
39
40
 
40
- function installClaudeSkill() {
41
+ function installClaudeSkill() {
41
42
  if (!fs.existsSync(SKILL_SOURCE)) {
42
43
  console.log(`⚠️ Skill source not found at ${SKILL_SOURCE}; skipping Claude Code install.`);
43
44
  return false;
@@ -52,54 +53,57 @@ function installClaudeSkill() {
52
53
  console.log(`⚠️ Failed to install Claude Code skill: ${err.message}`);
53
54
  console.log(` Manual install: copy "${SKILL_SOURCE}" to "${CLAUDE_SKILL_TARGET}".`);
54
55
  return false;
55
- }
56
- }
57
-
58
- function installCodexSkill() {
59
- if (!fs.existsSync(SKILL_SOURCE)) {
60
- console.log(`⚠️ Skill source not found at ${SKILL_SOURCE}; skipping Codex install.`);
61
- return false;
62
- }
63
- try {
64
- fs.mkdirSync(CODEX_SKILLS_DIR, { recursive: true });
65
- copyRecursive(SKILL_SOURCE, CODEX_SKILL_TARGET);
66
- console.log(`📦 Installed Codex skill at: ${CODEX_SKILL_TARGET}`);
67
- console.log(' Restart Codex to load it. Invoke it as "$agentic-sdlc" or by asking for Agentic SDLC.');
68
- return true;
69
- } catch (err) {
70
- console.log(`⚠️ Failed to install Codex skill: ${err.message}`);
71
- console.log(` Manual install: copy "${SKILL_SOURCE}" to "${CODEX_SKILL_TARGET}".`);
72
- return false;
73
- }
74
- }
75
-
76
- function hasCodexHome() {
77
- return Boolean(process.env.CODEX_HOME) || fs.existsSync(CODEX_HOME);
78
- }
79
-
80
- console.log('\n--- Agentic SDLC Skill Discovery ---');
56
+ }
57
+ }
81
58
 
82
- const agents = [
83
- { name: 'Claude Code', cmd: 'claude', onDetect: installClaudeSkill },
84
- { name: 'Gemini CLI', cmd: 'gemini' }
85
- ];
59
+ function installCodexSkill() {
60
+ if (!fs.existsSync(SKILL_SOURCE)) {
61
+ console.log(`⚠️ Skill source not found at ${SKILL_SOURCE}; skipping Codex install.`);
62
+ return false;
63
+ }
64
+ try {
65
+ fs.mkdirSync(CODEX_SKILLS_DIR, { recursive: true });
66
+ copyRecursive(SKILL_SOURCE, CODEX_SKILL_TARGET);
67
+ console.log(`📦 Installed Codex skill at: ${CODEX_SKILL_TARGET}`);
68
+ console.log(' Restart Codex to load it. Invoke it as "$agentic-sdlc" or by asking for Agentic SDLC.');
69
+ return true;
70
+ } catch (err) {
71
+ console.log(`⚠️ Failed to install Codex skill: ${err.message}`);
72
+ console.log(` Manual install: copy "${SKILL_SOURCE}" to "${CODEX_SKILL_TARGET}".`);
73
+ return false;
74
+ }
75
+ }
76
+
77
+ function hasCodexHome() {
78
+ return Boolean(process.env.CODEX_HOME) || fs.existsSync(CODEX_HOME);
79
+ }
80
+
81
+ function hasClaudeHome() {
82
+ return Boolean(process.env.CLAUDE_CONFIG_DIR) || fs.existsSync(CLAUDE_HOME);
83
+ }
84
+
85
+ console.log('\n--- Agentic SDLC Skill Discovery ---');
86
86
 
87
87
  let detected = false;
88
- agents.forEach(agent => {
89
- if (checkCommand(agent.cmd)) {
90
- console.log(`✅ Detected: ${agent.name}`);
91
- detected = true;
92
- if (typeof agent.onDetect === 'function') agent.onDetect();
93
- }
94
- });
95
-
96
- if (checkCommand('codex') || hasCodexHome()) {
97
- console.log(`✅ Detected: Codex AI`);
98
- detected = true;
99
- installCodexSkill();
100
- }
101
-
102
- if (!detected) {
88
+
89
+ if (checkCommand('claude') || hasClaudeHome()) {
90
+ console.log(`✅ Detected: Claude Code`);
91
+ detected = true;
92
+ installClaudeSkill();
93
+ }
94
+
95
+ if (checkCommand('gemini')) {
96
+ console.log(`✅ Detected: Gemini CLI`);
97
+ detected = true;
98
+ }
99
+
100
+ if (checkCommand('codex') || hasCodexHome()) {
101
+ console.log(`✅ Detected: Codex AI`);
102
+ detected = true;
103
+ installCodexSkill();
104
+ }
105
+
106
+ if (!detected) {
103
107
  console.log('ℹ️ No specific AI CLI detected globally, but you can still use the skill.');
104
108
  }
105
109
 
@@ -2,21 +2,22 @@
2
2
 
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
- const os = require('os');
6
-
7
- const CLAUDE_SKILL_TARGET = path.join(os.homedir(), '.claude', 'skills', 'agentic-sdlc');
8
- const CODEX_HOME = process.env.CODEX_HOME || path.join(os.homedir(), '.codex');
9
- const CODEX_SKILL_TARGET = path.join(CODEX_HOME, 'skills', 'agentic-sdlc');
10
-
11
- function removeSkill(target, label) {
12
- if (!fs.existsSync(target)) return;
13
- try {
14
- fs.rmSync(target, { recursive: true, force: true });
15
- console.log(`🧹 Removed ${label} skill at: ${target}`);
16
- } catch (err) {
17
- console.log(`⚠️ Could not remove ${target}: ${err.message}`);
18
- }
19
- }
20
-
21
- removeSkill(CLAUDE_SKILL_TARGET, 'Claude Code');
22
- removeSkill(CODEX_SKILL_TARGET, 'Codex');
5
+ const os = require('os');
6
+
7
+ const CLAUDE_HOME = process.env.CLAUDE_CONFIG_DIR || path.join(os.homedir(), '.claude');
8
+ const CLAUDE_SKILL_TARGET = path.join(CLAUDE_HOME, 'skills', 'agentic-sdlc');
9
+ const CODEX_HOME = process.env.CODEX_HOME || path.join(os.homedir(), '.codex');
10
+ const CODEX_SKILL_TARGET = path.join(CODEX_HOME, 'skills', 'agentic-sdlc');
11
+
12
+ function removeSkill(target, label) {
13
+ if (!fs.existsSync(target)) return;
14
+ try {
15
+ fs.rmSync(target, { recursive: true, force: true });
16
+ console.log(`🧹 Removed ${label} skill at: ${target}`);
17
+ } catch (err) {
18
+ console.log(`⚠️ Could not remove ${target}: ${err.message}`);
19
+ }
20
+ }
21
+
22
+ removeSkill(CLAUDE_SKILL_TARGET, 'Claude Code');
23
+ removeSkill(CODEX_SKILL_TARGET, 'Codex');