@eui/cli 21.2.0-snapshot-1773276055260 → 21.2.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 CHANGED
@@ -48,13 +48,40 @@ The CLI will prompt you to configure your application:
48
48
 
49
49
  4. **Dependency Installation**: Choose whether to install dependencies automatically
50
50
  5. **Package Manager**: Select Yarn 1.x or Pnpm (experimental)
51
+ 6. **eui-skills Setup**: Optionally install [eui-skills](https://sdlc.webcloud.ec.europa.eu/csdr/eui-skills.git) after generation
52
+ - **Install all** (`--all`): install all skills to all agents without prompts
53
+ - Or configure individually:
54
+ - **Agent(s)**: target specific agents (e.g. `cursor`, `claude-code`, or `*` for all)
55
+ - **Skill(s)**: specific skill names to install (or `*` for all)
56
+ - **Global**: install at user-level instead of project-level
57
+ - **Skip confirmations**: auto-confirm all skills prompts
58
+
59
+ #### CLI Flags
60
+
61
+ Skip prompts by passing flags directly:
62
+
63
+ ```sh
64
+ # Generate with skills setup (interactive sub-prompts)
65
+ eui-cli new --skills
66
+
67
+ # Install all skills to all agents without prompts
68
+ eui-cli new --skills --skillsAll
69
+
70
+ # Target specific agents and skip confirmations
71
+ eui-cli new --skills --skillsAgent "cursor claude-code" --skillsYes
72
+
73
+ # Install a specific skill globally
74
+ eui-cli new --skills --skillsSkill "pr-review" --skillsGlobal
75
+ ```
76
+
77
+ > Skills sub-options (`--skillsAgent`, `--skillsSkill`, `--skillsGlobal`, `--skillsYes`, `--skillsAll`) require `--skills` to be set, otherwise the CLI will exit with an error.
51
78
 
52
79
  #### Automated Mode
53
80
 
54
- Generate an application without prompts using a configuration file:
81
+ Generate an application without prompts using a configuration string:
55
82
 
56
83
  ```sh
57
- eui-cli new --config <path-to-config> --targetPath <output-directory>
84
+ eui-cli new --config <config-string> --targetPath <output-directory>
58
85
  ```
59
86
 
60
87
  Configuration format:
@@ -70,6 +97,12 @@ Available options:
70
97
  - `appOptionsEclTheme`: `ecl-ec`, `ecl-eu`
71
98
  - `npmInstall`: `true`, `false`
72
99
  - `packageManager`: `yarn`, `pnpm`
100
+ - `skills`: `true`, `false`
101
+ - `skillsAll`: `true`, `false`
102
+ - `skillsAgent`: agent name(s), space-separated or `*`
103
+ - `skillsSkill`: skill name(s), space-separated or `*`
104
+ - `skillsGlobal`: `true`, `false`
105
+ - `skillsYes`: `true`, `false`
73
106
 
74
107
  ### Build application
75
108
 
package/bin/eui-cli.js CHANGED
@@ -53,6 +53,15 @@ program
53
53
  .description('Generate a new eUI application')
54
54
  .option('-c, --config <path>', 'Path to configuration file')
55
55
  .option('-t, --targetPath <path>', 'Target path for the generated application')
56
+ .option('--skills', 'Setup eui-skills after generation')
57
+ .option('--skillsAgent <agents>', 'Agents to install skills to, requires --skills (e.g. "claude-code cursor", or "*" for all)')
58
+ .option('--skillsSkill <skills>', 'Skill names to install, requires --skills (e.g. "pr-review commit", or "*" for all)')
59
+ .option('--skillsGlobal', 'Install skills globally instead of project-level, requires --skills')
60
+ .option('--skillsYes', 'Skip skills confirmation prompts, requires --skills')
61
+ .option('--skillsAll', 'Install all skills to all agents without prompts, requires --skills')
62
+ .addHelpText('after', `
63
+ Skills sub-options (require --skills):
64
+ --skillsAgent, --skillsSkill, --skillsGlobal, --skillsYes, --skillsAll`)
56
65
  .action((options, command) => handleCommand('./scripts/new', options, command));
57
66
 
58
67
  program
@@ -11,6 +11,14 @@ module.exports = function run() {
11
11
  utils.logBigTitle('eUI CLI');
12
12
  utils.logAccent(` --- v${config.version} ---\n`);
13
13
 
14
+ // Validate skills sub-options dependency
15
+ const skillsSubOptions = ['skillsAgent', 'skillsSkill', 'skillsGlobal', 'skillsYes', 'skillsAll'];
16
+ const usedSkillsSubOptions = skillsSubOptions.filter(opt => args[opt] !== undefined && args[opt] !== false);
17
+ if (usedSkillsSubOptions.length > 0 && !args.skills) {
18
+ utils.logError(`The following options require --skills to be set: --${usedSkillsSubOptions.join(', --')}`);
19
+ process.exit(1);
20
+ }
21
+
14
22
  // remapping config if passed as argument - automated mode
15
23
  let inputConfig = config.parseInputConfig(args.config);
16
24
 
package/lib/cli.js CHANGED
@@ -12,6 +12,12 @@ const defaultConfig = {
12
12
  packageManager: 'yarn',
13
13
  npmInstall: true,
14
14
  appStart: true,
15
+ skills: false,
16
+ skillsAgent: null,
17
+ skillsSkill: null,
18
+ skillsGlobal: false,
19
+ skillsYes: false,
20
+ skillsAll: false,
15
21
  };
16
22
 
17
23
  module.exports.start = async (options) => {
@@ -143,6 +149,76 @@ module.exports.start = async (options) => {
143
149
  answers.packageManager = await packageManagerPrompt.run();
144
150
  }
145
151
 
152
+ const skillsPrompt = new Select({
153
+ name: 'skills',
154
+ message: 'Setup eui-skills for this project :',
155
+ choices: [
156
+ { name: 'Yes', value: true },
157
+ { name: 'No', value: false }
158
+ ],
159
+ initial: 1,
160
+ result(name) {
161
+ return this.find(name).value;
162
+ }
163
+ });
164
+ answers.skills = await skillsPrompt.run();
165
+
166
+ if (answers.skills === true) {
167
+ const skillsAllPrompt = new Select({
168
+ name: 'skillsAll',
169
+ message: 'Install all skills to all agents without prompts :',
170
+ choices: [
171
+ { name: 'Yes (--all)', value: true },
172
+ { name: 'No, let me configure', value: false }
173
+ ],
174
+ initial: 0,
175
+ result(name) { return this.find(name).value; }
176
+ });
177
+ answers.skillsAll = await skillsAllPrompt.run();
178
+
179
+ if (!answers.skillsAll) {
180
+ const skillsAgentPrompt = new Input({
181
+ name: 'skillsAgent',
182
+ message: 'Agents to install to (space-separated, * for all, leave empty for default) :',
183
+ initial: ''
184
+ });
185
+ const agentVal = await skillsAgentPrompt.run();
186
+ answers.skillsAgent = agentVal.trim() || null;
187
+
188
+ const skillsSkillPrompt = new Input({
189
+ name: 'skillsSkill',
190
+ message: 'Skill names to install (space-separated, * for all, leave empty for all) :',
191
+ initial: ''
192
+ });
193
+ const skillVal = await skillsSkillPrompt.run();
194
+ answers.skillsSkill = skillVal.trim() || null;
195
+
196
+ const skillsGlobalPrompt = new Select({
197
+ name: 'skillsGlobal',
198
+ message: 'Install skills globally (user-level) :',
199
+ choices: [
200
+ { name: 'No', value: false },
201
+ { name: 'Yes', value: true }
202
+ ],
203
+ initial: 0,
204
+ result(name) { return this.find(name).value; }
205
+ });
206
+ answers.skillsGlobal = await skillsGlobalPrompt.run();
207
+
208
+ const skillsYesPrompt = new Select({
209
+ name: 'skillsYes',
210
+ message: 'Skip skills confirmation prompts :',
211
+ choices: [
212
+ { name: 'Yes', value: true },
213
+ { name: 'No', value: false }
214
+ ],
215
+ initial: 0,
216
+ result(name) { return this.find(name).value; }
217
+ });
218
+ answers.skillsYes = await skillsYesPrompt.run();
219
+ }
220
+ }
221
+
146
222
  const outputConfig = {
147
223
  ...defaultConfig,
148
224
  ...answers
package/lib/generators.js CHANGED
@@ -39,6 +39,24 @@ const appGenerate = (options) => {
39
39
  config: cliConfig,
40
40
  targetPath: options.targetPath,
41
41
  });
42
+ // Setup eui-skills
43
+ // ----------------
44
+ if (cliConfig.skills) {
45
+ utils.logInfo('*****************************************************************');
46
+ utils.logInfo(' Setting up eui-skills...');
47
+ utils.logInfo('*****************************************************************');
48
+ const wd = path.resolve(utils.getAngularPath(options.targetPath, cliConfig.appName, cliConfig.appType, cliConfig.artifactId));
49
+ const skillsArgs = ['add', 'https://sdlc.webcloud.ec.europa.eu/csdr/eui-skills.git'];
50
+ if (cliConfig.skillsAll) {
51
+ skillsArgs.push('--all');
52
+ } else {
53
+ if (cliConfig.skillsAgent) skillsArgs.push('--agent', cliConfig.skillsAgent);
54
+ if (cliConfig.skillsSkill) skillsArgs.push('--skill', cliConfig.skillsSkill);
55
+ if (cliConfig.skillsGlobal) skillsArgs.push('--global');
56
+ if (cliConfig.skillsYes) skillsArgs.push('--yes');
57
+ }
58
+ execSync(`npx skills ${skillsArgs.join(' ')}`, { cwd: wd, stdio: 'inherit' });
59
+ }
42
60
  // starting app
43
61
  if (!cliConfig.appStart || typeof cliConfig.npmInstall !== 'boolean' || !cliConfig.npmInstall) {
44
62
  return;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eui-angular-app",
3
- "version": "21.2.0-snapshot-1773276055260",
3
+ "version": "21.2.0",
4
4
  "license": "EUPL-1.1",
5
5
  "scripts": {
6
6
  "ng": "ng",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "private": true,
22
22
  "dependencies": {
23
- "@eui/deps-base": "21.2.0-snapshot-1773276055260"
23
+ "@eui/deps-base": "21.2.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "npm-run-all": "4.1.5",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eui-angular-app",
3
- "version": "21.2.0-snapshot-1773276055260",
3
+ "version": "21.2.0",
4
4
  "license": "EUPL-1.1",
5
5
  "scripts": {
6
6
  "ng": "ng",
@@ -20,9 +20,9 @@
20
20
  },
21
21
  "private": true,
22
22
  "dependencies": {
23
- "@eui/deps-base-next": "19.3.12",
24
- "@eui/mobile-core": "20.0.0-rc.8",
25
- "@eui/mobile-styles": "20.0.0-rc.8"
23
+ "@eui/deps-base-next": "19.3.13",
24
+ "@eui/mobile-core": "20.0.1",
25
+ "@eui/mobile-styles": "20.0.1"
26
26
  },
27
27
  "resolutions": {
28
28
  "js-yaml": ">=3.13.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eui-angular-app",
3
- "version": "21.2.0-snapshot-1773276055260",
3
+ "version": "21.2.0",
4
4
  "license": "EUPL-1.1",
5
5
  "scripts": {
6
6
  "ng": "ng",
@@ -46,17 +46,17 @@
46
46
  "pikaday": "1.8.2",
47
47
  "lodash-es": "4.17.23",
48
48
  "localforage": "1.10.0",
49
- "@eui/base": "21.2.0-snapshot-1773276055260",
50
- "@eui/core": "21.2.0-snapshot-1773276055260",
51
- "@eui/styles": "21.2.0-snapshot-1773276055260",
52
- "@eui/components": "21.2.0-snapshot-1773276055260",
53
- "@eui/ecl": "21.2.0-snapshot-1773276055260"
49
+ "@eui/base": "21.2.0",
50
+ "@eui/core": "21.2.0",
51
+ "@eui/styles": "21.2.0",
52
+ "@eui/components": "21.2.0",
53
+ "@eui/ecl": "21.2.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@angular/build": "21.2.1",
57
57
  "@angular/compiler-cli": "21.2.1",
58
58
  "@angular/cli": "21.2.1",
59
- "@eui/cli": "21.2.0-snapshot-1773276055260",
59
+ "@eui/cli": "21.2.0",
60
60
  "ng-packagr": "21.2.0",
61
61
  "typescript": "5.9.2",
62
62
  "npm-run-all": "4.1.5",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@eui/cli",
3
- "version": "21.2.0-snapshot-1773276055260",
4
- "tag": "snapshot",
3
+ "version": "21.2.0",
4
+ "tag": "latest",
5
5
  "license": "EUPL-1.1",
6
6
  "description": "eUI CLI app generator & tools",
7
7
  "bin": {