@antoneeo/agentic-sdlc-skill 1.2.3 → 1.3.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/CHANGELOG.md +29 -14
- package/README.md +81 -61
- package/gemini-extension.json +1 -1
- package/package.json +3 -2
- package/scripts/init.js +20 -20
- package/scripts/postinstall.js +57 -53
- package/scripts/preuninstall.js +19 -18
package/CHANGELOG.md
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
# Changelog - Agentic SDLC Skill
|
|
2
2
|
|
|
3
|
-
Tutte le modifiche significative a questa skill saranno documentate in questo file.
|
|
4
|
-
|
|
5
|
-
## [1.
|
|
6
|
-
###
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
3
|
+
Tutte le modifiche significative a questa skill saranno documentate in questo file.
|
|
4
|
+
|
|
5
|
+
## [1.3.0] - 2026-05-14
|
|
6
|
+
### Added
|
|
7
|
+
- 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.
|
|
8
|
+
- Sezione "Troubleshooting" nel README con istruzioni per il caso in cui la skill non venga rilevata da Claude Code dopo `npm install -g`.
|
|
9
|
+
|
|
10
|
+
### Usage
|
|
11
|
+
```bash
|
|
12
|
+
npx @antoneeo/agentic-sdlc-skill agentic-sdlc-install-skill
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## [1.2.4] - 2026-05-14
|
|
16
|
+
### Fixed
|
|
17
|
+
- `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.
|
|
18
|
+
- `preuninstall` rispetta `CLAUDE_CONFIG_DIR` per rimuovere la skill dalla directory di configurazione corretta.
|
|
19
|
+
|
|
20
|
+
## [1.2.2] - 2026-05-10
|
|
21
|
+
### Changed
|
|
22
|
+
- README convertito in inglese per la pubblicazione npm.
|
|
23
|
+
- Versione allineata a `1.2.2` in `package.json` e `gemini-extension.json`.
|
|
24
|
+
|
|
25
|
+
## [1.2.1] - 2026-05-10
|
|
26
|
+
### Fixed
|
|
27
|
+
- `postinstall` ora registra la skill anche per Codex copiandola in `$CODEX_HOME/skills/agentic-sdlc/` oppure `~/.codex/skills/agentic-sdlc/`.
|
|
28
|
+
- `preuninstall` rimuove anche la copia Codex della skill.
|
|
29
|
+
- `agentic-sdlc-init` ora crea `AGENTS.md` per Codex invece di `.codex/hooks.json`, che Codex non carica come istruzioni di progetto.
|
|
30
|
+
|
|
31
|
+
## [1.2.0] - 2026-05-10
|
|
17
32
|
### Added
|
|
18
33
|
- **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
34
|
- Nuovo script `preuninstall.js` che rimuove la skill da `~/.claude/skills/agentic-sdlc/` durante `npm uninstall`.
|
package/README.md
CHANGED
|
@@ -1,61 +1,81 @@
|
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
+
Run the install explicitly via the dedicated bin command — it does not depend on the `postinstall` hook:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx @antoneeo/agentic-sdlc-skill agentic-sdlc-install-skill
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Alternatively, fix the npm config and reinstall:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm config set ignore-scripts false
|
|
41
|
+
npm uninstall -g @antoneeo/agentic-sdlc-skill
|
|
42
|
+
npm install -g @antoneeo/agentic-sdlc-skill@latest
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Then restart Claude Code (or Codex) and the skill will be available.
|
|
46
|
+
|
|
47
|
+
### Via Gemini CLI (local alternative)
|
|
48
|
+
|
|
49
|
+
> **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.
|
|
50
|
+
|
|
51
|
+
To install this extension, open a terminal in the folder that contains this README and run:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
gemini extensions install .
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
*Note: If you are in a different folder, replace `.` with the full path to the skill folder.*
|
|
58
|
+
|
|
59
|
+
## Global Availability
|
|
60
|
+
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.
|
|
61
|
+
|
|
62
|
+
## Getting Started
|
|
63
|
+
|
|
64
|
+
After installation, start Gemini CLI and verify that the skill is available:
|
|
65
|
+
|
|
66
|
+
1. **List available skills:**
|
|
67
|
+
```bash
|
|
68
|
+
/skills list all
|
|
69
|
+
```
|
|
70
|
+
2. **Activate the skill:**
|
|
71
|
+
The skill activates automatically when it detects requests related to development, audits, or feature management. You can also invoke it explicitly:
|
|
72
|
+
> "Use the agentic-sdlc skill to analyze this project"
|
|
73
|
+
|
|
74
|
+
## Project Structure
|
|
75
|
+
- `skills/`: Contains the skill logic (`SKILL.md`).
|
|
76
|
+
- `references/`: Markdown templates for architecture, analysis, and feature history.
|
|
77
|
+
- `gemini-extension.json`: Extension manifest.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
Created by **Antonio Pinto** ([GitHub](https://github.com/Antoneeo))
|
|
81
|
+
(c) 2026 Antonio Pinto. All rights reserved.
|
package/gemini-extension.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antoneeo/agentic-sdlc-skill",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
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.');
|
package/scripts/postinstall.js
CHANGED
|
@@ -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
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
|
package/scripts/preuninstall.js
CHANGED
|
@@ -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
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
removeSkill(
|
|
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');
|