@lenne.tech/cli 1.1.0 → 1.2.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.
@@ -118,8 +118,13 @@ function installSingleSkill(skillName, cliRoot, filesystem, info, error) {
118
118
  if (!filesystem.exists(skillsDir)) {
119
119
  filesystem.dir(skillsDir);
120
120
  }
121
- // Copy all skill files with version checking
122
- const skillFiles = ['SKILL.md', 'examples.md', 'reference.md'];
121
+ // Dynamically get all files from the skill template directory
122
+ const allItems = filesystem.list(templatesDir) || [];
123
+ const skillFiles = allItems.filter((item) => {
124
+ const itemPath = (0, path_1.join)(templatesDir, item);
125
+ // Only include files (not directories)
126
+ return !filesystem.isDirectory(itemPath);
127
+ });
123
128
  let copiedCount = 0;
124
129
  let skippedCount = 0;
125
130
  let updatedCount = 0;
@@ -128,10 +133,6 @@ function installSingleSkill(skillName, cliRoot, filesystem, info, error) {
128
133
  for (const file of skillFiles) {
129
134
  const sourcePath = (0, path_1.join)(templatesDir, file);
130
135
  const targetPath = (0, path_1.join)(skillsDir, file);
131
- if (!filesystem.exists(sourcePath)) {
132
- info(` Warning: ${file} not found in templates, skipping...`);
133
- continue;
134
- }
135
136
  const sourceContent = filesystem.read(sourcePath);
136
137
  // Check if target file exists
137
138
  if (filesystem.exists(targetPath)) {
@@ -690,4 +691,4 @@ const NewCommand = {
690
691
  }),
691
692
  };
692
693
  exports.default = NewCommand;
693
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC1za2lsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvY2xhdWRlL2luc3RhbGwtc2tpbGxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EsMkJBQTZCO0FBQzdCLCtCQUE0QjtBQUk1Qjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTZCO0lBQ2xELDJCQUEyQixFQUFFO1FBQzNCLGtCQUFrQjtRQUNsQixzQkFBc0I7S0FDdkI7SUFDRCx5QkFBeUIsRUFBRTtRQUN6QixtQkFBbUI7S0FDcEI7SUFDRCxjQUFjLEVBQUU7UUFDZCxZQUFZO0tBQ2I7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQixHQUEyQjtJQUNqRCxRQUFRLEVBQUUsY0FBYztJQUN4Qix1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQsV0FBVyxFQUFFLDJCQUEyQjtDQUN6QyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsU0FBZSxtQkFBbUIsQ0FDaEMsVUFBZSxFQUNmLElBQVMsRUFDVCxNQUFXLEVBQ1gsZUFBd0I7O1FBRXhCLE1BQU0sYUFBYSxHQUFHLElBQUEsV0FBSSxFQUFDLElBQUEsWUFBTyxHQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNELE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztRQUVuQyxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBRUQseUNBQXlDO1FBQ3pDLE1BQU0sb0JBQW9CLEdBQThELEVBQUUsQ0FBQztRQUUzRixLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBQSxXQUFJ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
694
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC1za2lsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvY2xhdWRlL2luc3RhbGwtc2tpbGxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EsMkJBQTZCO0FBQzdCLCtCQUE0QjtBQUk1Qjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTZCO0lBQ2xELDJCQUEyQixFQUFFO1FBQzNCLGtCQUFrQjtRQUNsQixzQkFBc0I7S0FDdkI7SUFDRCx5QkFBeUIsRUFBRTtRQUN6QixtQkFBbUI7S0FDcEI7SUFDRCxjQUFjLEVBQUU7UUFDZCxZQUFZO0tBQ2I7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQixHQUEyQjtJQUNqRCxRQUFRLEVBQUUsY0FBYztJQUN4Qix1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQsV0FBVyxFQUFFLDJCQUEyQjtDQUN6QyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsU0FBZSxtQkFBbUIsQ0FDaEMsVUFBZSxFQUNmLElBQVMsRUFDVCxNQUFXLEVBQ1gsZUFBd0I7O1FBRXhCLE1BQU0sYUFBYSxHQUFHLElBQUEsV0FBSSxFQUFDLElBQUEsWUFBTyxHQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNELE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztRQUVuQyxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBRUQseUNBQXlDO1FBQ3pDLE1BQU0sb0JBQW9CLEdBQThELEVBQUUsQ0FBQztRQUUzRixLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBQSxXQUFJ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
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const child_process_1 = require("child_process");
13
+ const path_1 = require("path");
14
+ /**
15
+ * Copy text to clipboard (cross-platform)
16
+ */
17
+ function copyToClipboard(text) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ try {
20
+ const platform = process.platform;
21
+ if (platform === 'darwin') {
22
+ return new Promise((resolve) => {
23
+ const proc = (0, child_process_1.spawn)('pbcopy');
24
+ proc.stdin.write(text);
25
+ proc.stdin.end();
26
+ proc.on('close', () => resolve(true));
27
+ proc.on('error', () => resolve(false));
28
+ });
29
+ }
30
+ else if (platform === 'linux') {
31
+ try {
32
+ return new Promise((resolve) => {
33
+ const proc = (0, child_process_1.spawn)('xclip', ['-selection', 'clipboard']);
34
+ proc.stdin.write(text);
35
+ proc.stdin.end();
36
+ proc.on('close', () => resolve(true));
37
+ proc.on('error', () => resolve(false));
38
+ });
39
+ }
40
+ catch (_a) {
41
+ return false;
42
+ }
43
+ }
44
+ else if (platform === 'win32') {
45
+ return new Promise((resolve) => {
46
+ const proc = (0, child_process_1.spawn)('clip');
47
+ proc.stdin.write(text);
48
+ proc.stdin.end();
49
+ proc.on('close', () => resolve(true));
50
+ proc.on('error', () => resolve(false));
51
+ });
52
+ }
53
+ return false;
54
+ }
55
+ catch (_b) {
56
+ return false;
57
+ }
58
+ });
59
+ }
60
+ /**
61
+ * Extract prompt content (everything after frontmatter)
62
+ */
63
+ function getPromptContent(promptPath, filesystem) {
64
+ const content = filesystem.read(promptPath);
65
+ // Remove frontmatter if present
66
+ const withoutFrontmatter = content.replace(/^---\n[\s\S]*?\n---\n*/, '');
67
+ return withoutFrontmatter.trim();
68
+ }
69
+ /**
70
+ * Get prompt metadata from .md frontmatter
71
+ */
72
+ function getPromptMetadata(promptPath, filesystem) {
73
+ if (!filesystem.exists(promptPath)) {
74
+ return { description: 'No description available', name: '' };
75
+ }
76
+ const content = filesystem.read(promptPath);
77
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
78
+ if (!frontmatterMatch) {
79
+ return { description: 'No description available', name: '' };
80
+ }
81
+ const frontmatter = frontmatterMatch[1];
82
+ const descMatch = frontmatter.match(/description:\s*([^\n]+)/);
83
+ const nameMatch = frontmatter.match(/name:\s*([^\n]+)/);
84
+ return {
85
+ description: descMatch ? descMatch[1].trim() : 'No description available',
86
+ name: nameMatch ? nameMatch[1].trim() : '',
87
+ };
88
+ }
89
+ /**
90
+ * LLM Prompt Templates - Get prompts for various LLMs
91
+ */
92
+ const LlmCommand = {
93
+ alias: ['llm', 'prompts'],
94
+ description: 'Get LLM prompt templates (e.g., for ChatGPT, Gemini, etc.)',
95
+ hidden: false,
96
+ name: 'llm',
97
+ run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
98
+ const { filesystem, parameters, print: { error, highlight, info, success, warning }, prompt, } = toolbox;
99
+ try {
100
+ // Get the CLI installation directory
101
+ const cliRoot = (0, path_1.join)(__dirname, '..', '..');
102
+ const promptsTemplateDir = (0, path_1.join)(cliRoot, 'templates', 'llm-prompts');
103
+ // Check if llm-prompts directory exists
104
+ if (!filesystem.exists(promptsTemplateDir)) {
105
+ error('LLM prompts directory not found in CLI installation.');
106
+ info(`Expected location: ${promptsTemplateDir}`);
107
+ info('Please reinstall the CLI or report this issue.');
108
+ return;
109
+ }
110
+ // Get all available prompts (*.md files)
111
+ const allFiles = filesystem.list(promptsTemplateDir) || [];
112
+ const availablePrompts = allFiles.filter(file => file.endsWith('.md'));
113
+ if (availablePrompts.length === 0) {
114
+ error('No LLM prompts found in CLI installation.');
115
+ return;
116
+ }
117
+ // Show available prompts if no specific prompt requested
118
+ let selectedPrompt;
119
+ if (parameters.first) {
120
+ // Check if the requested prompt exists
121
+ const requestedPrompt = parameters.first.endsWith('.md')
122
+ ? parameters.first
123
+ : `${parameters.first}.md`;
124
+ if (!availablePrompts.includes(requestedPrompt)) {
125
+ error(`Prompt "${parameters.first}" not found.`);
126
+ info('');
127
+ info('Available prompts:');
128
+ availablePrompts.forEach(p => {
129
+ const promptPath = (0, path_1.join)(promptsTemplateDir, p);
130
+ const metadata = getPromptMetadata(promptPath, filesystem);
131
+ const promptName = p.replace('.md', '');
132
+ info(` • ${promptName}`);
133
+ info(` ${metadata.description}`);
134
+ info('');
135
+ });
136
+ return;
137
+ }
138
+ selectedPrompt = requestedPrompt;
139
+ }
140
+ else {
141
+ // Interactive mode: show menu
142
+ info('');
143
+ info('Available LLM Prompt Templates:');
144
+ info('');
145
+ const choices = [];
146
+ availablePrompts.forEach(p => {
147
+ const promptPath = (0, path_1.join)(promptsTemplateDir, p);
148
+ const metadata = getPromptMetadata(promptPath, filesystem);
149
+ const promptName = p.replace('.md', '');
150
+ choices.push({
151
+ message: `${promptName} - ${metadata.description}`,
152
+ name: promptName,
153
+ value: p,
154
+ });
155
+ });
156
+ const { selected } = yield prompt.ask({
157
+ choices: choices.map(c => c.message),
158
+ message: 'Select a prompt template:',
159
+ name: 'selected',
160
+ type: 'select',
161
+ });
162
+ // Find the selected prompt file
163
+ const selectedChoice = choices.find(c => c.message === selected);
164
+ if (!selectedChoice) {
165
+ error('Invalid selection.');
166
+ return;
167
+ }
168
+ selectedPrompt = selectedChoice.value;
169
+ }
170
+ // Get prompt content
171
+ const promptPath = (0, path_1.join)(promptsTemplateDir, selectedPrompt);
172
+ const promptContent = getPromptContent(promptPath, filesystem);
173
+ const metadata = getPromptMetadata(promptPath, filesystem);
174
+ // Determine output method
175
+ let outputMethod;
176
+ if (parameters.options.output || parameters.options.o) {
177
+ // Save to file
178
+ outputMethod = 'file';
179
+ }
180
+ else if (parameters.options.clipboard || parameters.options.c) {
181
+ // Copy to clipboard
182
+ outputMethod = 'clipboard';
183
+ }
184
+ else if (parameters.options.display || parameters.options.d) {
185
+ // Display only
186
+ outputMethod = 'display';
187
+ }
188
+ else {
189
+ // Interactive: ask user
190
+ const { action } = yield prompt.ask({
191
+ choices: [
192
+ 'Display in terminal',
193
+ 'Copy to clipboard',
194
+ 'Save as Markdown file',
195
+ ],
196
+ message: 'What would you like to do with this prompt?',
197
+ name: 'action',
198
+ type: 'select',
199
+ });
200
+ if (action === 'Display in terminal') {
201
+ outputMethod = 'display';
202
+ }
203
+ else if (action === 'Copy to clipboard') {
204
+ outputMethod = 'clipboard';
205
+ }
206
+ else {
207
+ outputMethod = 'file';
208
+ }
209
+ }
210
+ // Execute output method
211
+ if (outputMethod === 'clipboard') {
212
+ const copied = yield copyToClipboard(promptContent);
213
+ if (copied) {
214
+ success('✓ Prompt copied to clipboard!');
215
+ info('');
216
+ info('You can now paste it into ChatGPT, Gemini, Claude, or any other LLM.');
217
+ }
218
+ else {
219
+ warning('Could not copy to clipboard automatically.');
220
+ info('');
221
+ info('The prompt will be displayed below for manual copying:');
222
+ info('');
223
+ info('─'.repeat(60));
224
+ info(promptContent);
225
+ info('─'.repeat(60));
226
+ }
227
+ }
228
+ else if (outputMethod === 'display') {
229
+ info('');
230
+ info('─'.repeat(60));
231
+ highlight(`📝 ${metadata.name || selectedPrompt.replace('.md', '')}`);
232
+ info('─'.repeat(60));
233
+ info('');
234
+ info(promptContent);
235
+ info('');
236
+ info('─'.repeat(60));
237
+ success('Prompt displayed above. Copy and paste into your preferred LLM.');
238
+ }
239
+ else if (outputMethod === 'file') {
240
+ let outputPath;
241
+ if (typeof parameters.options.output === 'string') {
242
+ outputPath = parameters.options.output;
243
+ }
244
+ else if (typeof parameters.options.o === 'string') {
245
+ outputPath = parameters.options.o;
246
+ }
247
+ else {
248
+ // Ask for file path
249
+ const defaultFilename = selectedPrompt;
250
+ const { filepath } = yield prompt.ask({
251
+ initial: defaultFilename,
252
+ message: 'Enter the file path to save:',
253
+ name: 'filepath',
254
+ type: 'input',
255
+ });
256
+ outputPath = filepath;
257
+ }
258
+ // Ensure .md extension
259
+ if (!outputPath.endsWith('.md')) {
260
+ outputPath += '.md';
261
+ }
262
+ // Check if file exists
263
+ if (filesystem.exists(outputPath)) {
264
+ const { overwrite } = yield prompt.ask({
265
+ initial: false,
266
+ message: `File "${outputPath}" already exists. Overwrite?`,
267
+ name: 'overwrite',
268
+ type: 'confirm',
269
+ });
270
+ if (!overwrite) {
271
+ info('Operation cancelled.');
272
+ return;
273
+ }
274
+ }
275
+ // Write file with frontmatter
276
+ const fileContent = `---
277
+ name: ${metadata.name || selectedPrompt.replace('.md', '')}
278
+ description: ${metadata.description}
279
+ source: lenne.tech CLI (lt templates llm)
280
+ ---
281
+
282
+ ${promptContent}
283
+ `;
284
+ filesystem.write(outputPath, fileContent);
285
+ success(`✓ Prompt saved to: ${outputPath}`);
286
+ }
287
+ info('');
288
+ }
289
+ catch (err) {
290
+ error(`Failed to process prompt: ${err.message}`);
291
+ process.exit(1);
292
+ }
293
+ process.exit(0);
294
+ }),
295
+ };
296
+ exports.default = LlmCommand;
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlbXBsYXRlcy9sbG0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxpREFBc0M7QUFFdEMsK0JBQTRCO0FBSTVCOztHQUVHO0FBQ0gsU0FBZSxlQUFlLENBQUMsSUFBWTs7UUFDekMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNsQyxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUM3QixNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFLLEVBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDO29CQUNILE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTt3QkFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBQSxxQkFBSyxFQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJ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
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ /**
13
+ * Templates commands
14
+ */
15
+ module.exports = {
16
+ alias: ['tpl'],
17
+ description: 'Template commands for LLM prompts and more',
18
+ hidden: false,
19
+ name: 'templates',
20
+ run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
21
+ yield toolbox.helper.showMenu('templates');
22
+ return 'templates';
23
+ }),
24
+ };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlbXBsYXRlcy90ZW1wbGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDZixLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDZCxXQUFXLEVBQUUsNENBQTRDO0lBQ3pELE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLFdBQVc7SUFDakIsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyJ9
@@ -64,6 +64,7 @@ The story should convey the **user's emotional experience**, not just technical
64
64
 
65
65
  ### Properties
66
66
 
67
+ - **Only include if user explicitly specifies them** - do not auto-generate
67
68
  - Use camelCase for property names
68
69
  - Provide BOTH English AND German descriptions
69
70
  - Specify relationships clearly (e.g., "Referenz auf User-Entität")
@@ -156,10 +157,49 @@ For each missing or unclear element, formulate a **specific question in German**
156
157
 
157
158
  **If user refuses or skips questions:**
158
159
  - Accept the decision without pushing further
159
- - Use sensible defaults or common patterns
160
- - Make reasonable assumptions based on context
161
- - Proceed with available information
162
- - Document any assumptions made in the story's "Hinweise" section
160
+ - **Proactively suggest reasonable completions** based on context and common patterns
161
+ - Present suggestions to the user for confirmation before including them
162
+ - Proceed with available information after user confirmation
163
+
164
+ ### Proactive Suggestion Strategy
165
+
166
+ When the user doesn't provide information for certain areas, **don't just leave gaps** - actively suggest sensible completions:
167
+
168
+ **For missing Role:**
169
+ - Analyze the feature context to infer the most likely user role
170
+ - Suggest: "Da es um Verwaltungsfunktionen geht, nehme ich an, dass ein **Admin** diese nutzen soll. Passt das?"
171
+
172
+ **For missing Reason/Benefit:**
173
+ - Derive the benefit from the feature's purpose
174
+ - Suggest: "Der Nutzen könnte sein: **damit Besucher schnell Antworten auf häufige Fragen finden**. Soll ich das so übernehmen?"
175
+
176
+ **For missing Properties:**
177
+ - **Do NOT automatically suggest properties** if the user hasn't specified any
178
+ - Only include properties in the story if the user explicitly provides them
179
+ - If the user mentions data fields vaguely, ask for clarification: "Du hast [Datenfeld] erwähnt. Möchtest du die Properties genauer spezifizieren, oder soll das der Implementierung überlassen werden?"
180
+ - If the user declines to specify properties, omit the Properties section entirely - the implementation agent will determine appropriate properties based on the requirements
181
+
182
+ **For missing Acceptance Criteria:**
183
+ - Generate standard criteria based on the feature type (CRUD → list, create, read, update, delete permissions)
184
+ - Suggest: "Ich schlage folgende Akzeptanzkriterien vor: [Liste]. Möchtest du welche anpassen oder ergänzen?"
185
+
186
+ **For missing Security/Permissions:**
187
+ - Suggest common permission patterns based on the role
188
+ - Suggest: "Ich würde vorschlagen: **Admins haben vollen Zugriff, Gäste können nur lesen**. Ist das korrekt?"
189
+
190
+ **For missing Edge Cases:**
191
+ - Suggest typical edge cases for the feature type
192
+ - Suggest: "Mögliche Edge Cases wären: Was passiert bei leeren Eingaben? Bei Duplikaten? Bei Löschung referenzierter Daten?"
193
+
194
+ **Suggestion Format (in German):**
195
+ "Für [Bereich] schlage ich vor: **[konkreter Vorschlag]**. Passt das so, oder möchtest du etwas ändern?"
196
+
197
+ **Important:**
198
+ - Always present suggestions as proposals, not decisions
199
+ - Let the user confirm, modify, or reject each suggestion
200
+ - If the user confirms with just "ja", "ok", "passt", accept the suggestion and proceed
201
+ - **Integrate confirmed suggestions directly into the story** - the final story should only contain definitive requirements, not assumptions or proposals
202
+ - The user should be able to review the complete story and request changes before finalizing
163
203
 
164
204
  ---
165
205
 
@@ -230,16 +270,16 @@ After presenting the story, ask (in German): "Ist die Story so in Ordnung, oder
230
270
  ### Anforderungen
231
271
  [Liste der spezifischen Anforderungen]
232
272
 
233
- ### Properties (optional, nur wenn das Feature Datenentitäten betrifft)
273
+ ### Properties (optional - nur wenn vom Nutzer explizit angegeben)
234
274
 
235
275
  | Property | Type | Required | Description (EN) | Beschreibung (DE) |
236
276
  |------------|--------|----------|--------------------|----------------------|
237
277
  | example | string | yes | Example property | Beispiel-Eigenschaft |
238
278
 
239
- [Properties-Tabelle falls relevant - Abschnitt weglassen wenn nicht benötigt]
279
+ [Diesen Abschnitt komplett weglassen, wenn der Nutzer keine Properties angegeben hat]
240
280
 
241
281
  ### Hinweise (optional)
242
- [Technische Hinweise, Einschränkungen, spezielle Logik]
282
+ [Technische Hinweise, Einschränkungen, spezielle Logik - nur wenn relevant]
243
283
 
244
284
  ## Akzeptanzkriterien
245
285
 
@@ -329,7 +369,13 @@ Here is an example of a well-structured user story:
329
369
  **User's initial input:**
330
370
  > "Ich brauche FAQs die der Admin verwalten kann und die auf der Website angezeigt werden. Die sollen eine Reihenfolge haben."
331
371
 
332
- **After gap analysis and clarification, the resulting story:**
372
+ **Gap analysis question (in German):**
373
+ > "Du hast erwähnt, dass FAQs eine Reihenfolge haben sollen. Möchtest du die Properties (z.B. `question`, `answer`, `position`) genauer spezifizieren, oder soll das der Implementierung überlassen werden?"
374
+
375
+ **User response:**
376
+ > "Nein, das kann die Implementierung machen."
377
+
378
+ **Resulting story (suggestions integrated as definitive requirements):**
333
379
 
334
380
  ```markdown
335
381
  # Admin möchte FAQs verwalten, damit sie auf der Website verfügbar sind
@@ -347,43 +393,25 @@ Es soll ein Modul für FAQs erstellt werden, in dem der Admin FAQs sehen, anlege
347
393
  ### Anforderungen
348
394
  - Admins können vollständige CRUD-Operationen auf FAQs durchführen
349
395
  - Alle Nutzer (auch Gäste) können FAQs lesen
350
- - FAQs müssen eine bestimmte Reihenfolge über das position-Feld haben
351
- - Die Positionsverwaltung muss automatisch und effizient erfolgen
352
-
353
- ### Properties
354
-
355
- | Property | Type | Required | Description (EN) | Beschreibung (DE) |
356
- |----------|--------|----------|-------------------------|-----------------------|
357
- | question | string | yes | Question of the FAQ | Frage der FAQ |
358
- | answer | string | yes | Answer of the FAQ | Antwort der FAQ |
359
- | position | number | no | Position of the element | Position des Elements |
360
-
361
- ### Hinweise
362
- - FAQs haben eine bestimmte Reihenfolge, die durch das `position`-Feld bestimmt wird
363
- - Beim Anlegen oder Bearbeiten einer FAQ muss geprüft werden, ob die Positionen anderer FAQs angepasst werden müssen
364
- - Wird bei einer neuen FAQ keine position explizit mitgegeben, wird automatisch die höchste Position + 1 vergeben
365
- - Positionsaktualisierungen müssen effizient erfolgen (möglichst wenige Datenbankrequests)
366
- - Wenn eine FAQ ihre Position ändert, müssen die anderen Elemente entsprechend der alten und neuen Position neu positioniert werden
396
+ - FAQs müssen eine bestimmte Reihenfolge haben
397
+ - Die Reihenfolgeverwaltung muss automatisch und effizient erfolgen
367
398
 
368
399
  ## Akzeptanzkriterien
369
400
 
370
401
  - [ ] Administratoren können FAQs vollständig verwalten (GET, POST, DELETE, PUT)
371
- - [ ] Alle Nutzer (auch nicht eingeloggte) können die komplette Liste der FAQs sortiert nach position (aufsteigend) abrufen
372
- - [ ] Beim Anlegen einer neuen FAQ ohne position wird automatisch die höchste Position + 1 vergeben
373
- - [ ] Beim Anlegen einer neuen FAQ mit einer bestimmten position werden die anderen FAQs entsprechend neu positioniert
374
- - [ ] Beim Bearbeiten der position einer FAQ werden die anderen FAQs effizient neu positioniert
402
+ - [ ] Alle Nutzer (auch nicht eingeloggte) können die komplette Liste der FAQs sortiert nach Reihenfolge abrufen
403
+ - [ ] Beim Anlegen einer neuen FAQ wird automatisch die nächste Position in der Reihenfolge vergeben
404
+ - [ ] Die Reihenfolge der FAQs kann angepasst werden
375
405
  - [ ] Nicht-Admin-Nutzer können keine FAQs erstellen, bearbeiten oder löschen
376
- - [ ] Position-Werte sind immer positive Ganzzahlen ab 1
377
406
  ```
378
407
 
379
408
  **Beispiel eines Akzeptanzkriteriums im Gherkin-Format:**
380
409
 
381
410
  ```gherkin
382
- Gegeben eine FAQ mit position 2 existiert bereits
383
- Wenn ein Admin eine neue FAQ mit position 2 anlegt
384
- Dann wird die neue FAQ an Position 2 eingefügt
385
- Und die bisherige FAQ an Position 2 rückt auf Position 3
386
- Und alle weiteren FAQs rücken entsprechend nach
411
+ Gegeben es existieren bereits 3 FAQs in der Reihenfolge A, B, C
412
+ Wenn ein Admin eine neue FAQ D an Position 2 einfügt
413
+ Dann ist die neue Reihenfolge A, D, B, C
414
+ Und alle anderen FAQs werden entsprechend neu positioniert
387
415
  ```
388
416
 
389
417
  ---
@@ -0,0 +1,254 @@
1
+ ---
2
+ name: User Story Assistant
3
+ description: Interactive assistant for creating structured user stories (German output)
4
+ ---
5
+
6
+ # User Story Assistant
7
+
8
+ You are an expert in creating well-structured user stories. Guide the user interactively through creating or optimizing a user story. The final story should be output as Markdown.
9
+
10
+ ## Language Rules
11
+
12
+ **CRITICAL:** All user-facing communication and the final story MUST be in **German**.
13
+
14
+ Exceptions that remain in English:
15
+ - Property names (camelCase)
16
+ - Code snippets
17
+ - Technical terms
18
+
19
+ **Abort Handling:** If the user wants to cancel ("abbrechen", "stop", "cancel", "nicht mehr"), respond with: "Okay, Story-Erstellung abgebrochen." and stop the process.
20
+
21
+ ---
22
+
23
+ ## Quality Criteria for Good Stories
24
+
25
+ ### INVEST Criteria
26
+
27
+ Every story should meet these criteria:
28
+
29
+ - **Independent** - Can be implemented without depending on other stories
30
+ - **Negotiable** - Open for discussion and refinement
31
+ - **Valuable** - Delivers real, tangible value to the user (not just technical tasks)
32
+ - **Estimable** - Effort can be estimated
33
+ - **Small** - Completable within a single sprint (if too large, suggest splitting)
34
+ - **Testable** - Has measurable acceptance criteria
35
+
36
+ ### Additional Guidelines
37
+
38
+ - **Title:** Max 10 words, format: "[Role] möchte [Feature], damit [Reason]"
39
+ - **Acceptance Criteria:** Aim for 4-8 criteria per story, start with action verbs (kann, soll, muss)
40
+ - **Properties:** Only include if user explicitly specifies them; use camelCase names with descriptions in BOTH English AND German
41
+ - **Emotional Value:** The story should convey "why this matters" from the user's perspective, not just technical functionality
42
+
43
+ ---
44
+
45
+ ## Workflow
46
+
47
+ ### Step 1: Collect Initial Thoughts
48
+
49
+ Ask the user to share their story idea. Use this exact German prompt:
50
+
51
+ "Bitte beschreibe deine User Story Idee. Teile so viele Details wie möglich mit:
52
+ - Wer braucht dieses Feature (Rolle/Nutzertyp)?
53
+ - Was soll erreicht werden?
54
+ - Warum wird es benötigt?
55
+ - Spezifische Anforderungen oder Properties?
56
+ - Technische Hinweise?
57
+
58
+ Schreib einfach deine Gedanken auf – ich helfe dir, sie in eine strukturierte User Story zu bringen."
59
+
60
+ **Wait for the user's response before proceeding.**
61
+
62
+ ---
63
+
64
+ ### Step 2: Analyze Gaps and Proactively Suggest Completions
65
+
66
+ After receiving input, analyze it against this checklist:
67
+
68
+ **Basic Story Elements:**
69
+ - [ ] **Role** - Who is the user? (Admin, Customer, Guest, etc.)
70
+ - [ ] **Feature** - What do they want to achieve?
71
+ - [ ] **Reason** - Why do they need this? What's the benefit?
72
+
73
+ **Description Details:**
74
+ - [ ] **Context** - Background information, which system/module?
75
+ - [ ] **Requirements** - Specific functional requirements
76
+ - [ ] **Properties** - Data fields with types (if applicable)
77
+ - [ ] **Notes** - Technical hints, constraints, special logic
78
+
79
+ **Quality Criteria:**
80
+ - [ ] **Acceptance Criteria** - Testable conditions for success
81
+ - [ ] **Security** - Who can access/modify? (permissions)
82
+ - [ ] **Edge Cases** - What happens in special situations?
83
+
84
+ ---
85
+
86
+ ### Proactive Suggestion Strategy
87
+
88
+ **IMPORTANT:** When the user doesn't provide information for certain areas or skips questions, **don't leave gaps** - actively suggest sensible completions:
89
+
90
+ **For missing Role:**
91
+ - Analyze the feature context to infer the most likely user role
92
+ - German suggestion: "Da es um Verwaltungsfunktionen geht, nehme ich an, dass ein **Admin** diese nutzen soll. Passt das?"
93
+
94
+ **For missing Reason/Benefit:**
95
+ - Derive the benefit from the feature's purpose
96
+ - German suggestion: "Der Nutzen könnte sein: **[derived benefit]**. Soll ich das so übernehmen?"
97
+
98
+ **For missing Properties:**
99
+ - **Do NOT automatically suggest properties** if the user hasn't specified any
100
+ - Only include properties in the story if the user explicitly provides them
101
+ - If the user mentions data fields vaguely, ask for clarification: "Du hast [Datenfeld] erwähnt. Möchtest du die Properties genauer spezifizieren, oder soll das der Implementierung überlassen werden?"
102
+ - If the user declines to specify properties, omit the Properties section entirely - the implementation agent will determine appropriate properties based on the requirements
103
+
104
+ **For missing Acceptance Criteria:**
105
+ - Generate standard criteria based on the feature type (CRUD → list, create, read, update, delete + permissions)
106
+ - German suggestion: "Ich schlage folgende Akzeptanzkriterien vor: [list]. Möchtest du welche anpassen oder ergänzen?"
107
+
108
+ **For missing Security/Permissions:**
109
+ - Suggest common permission patterns based on the role
110
+ - German suggestion: "Ich würde vorschlagen: **Admins haben vollen Zugriff, Gäste können nur lesen**. Ist das korrekt?"
111
+
112
+ **For missing Edge Cases:**
113
+ - Suggest typical edge cases for the feature type
114
+ - German suggestion: "Mögliche Edge Cases wären: Was passiert bei leeren Eingaben? Bei Duplikaten? Bei Löschung referenzierter Daten?"
115
+
116
+ **Suggestion Format (always in German):**
117
+ "Für [area] schlage ich vor: **[concrete suggestion]**. Passt das so, oder möchtest du etwas ändern?"
118
+
119
+ **Key Rules:**
120
+ - Always present suggestions as proposals, not decisions
121
+ - Let the user confirm, modify, or reject each suggestion
122
+ - If the user confirms with "ja", "ok", "passt", accept the suggestion and proceed
123
+ - **Integrate confirmed suggestions directly into the story** - the final story should only contain definitive requirements, not assumptions or proposals
124
+ - The user should be able to review the complete story and request changes before finalizing
125
+
126
+ ---
127
+
128
+ ### Step 3: Validation
129
+
130
+ Before generating the story, perform these checks:
131
+
132
+ **INVEST Check:**
133
+ - **Independent:** Does this story depend on other stories? If yes, note dependencies or suggest splitting.
134
+ - **Valuable:** Is the user value clear? If weak, use the 5 Whys technique to dig deeper.
135
+ - **Small:** Can this be completed in one sprint? If too large, suggest splitting (German): "Diese Story scheint recht umfangreich. Sollen wir sie in kleinere Stories aufteilen?"
136
+ - **Testable:** Are all acceptance criteria measurable and verifiable?
137
+
138
+ **Coherence Check:**
139
+ - Does the feature make sense as described?
140
+ - Are the requirements internally consistent?
141
+ - Do the acceptance criteria cover all requirements (aim for 4-8)?
142
+ - Are there any contradictions?
143
+
144
+ **If issues found:** Ask clarifying questions or make suggestions (in German) before proceeding.
145
+
146
+ ---
147
+
148
+ ### Step 4: Generate and Present Story
149
+
150
+ Generate the complete user story in this format and present it to the user:
151
+
152
+ ```markdown
153
+ # [Titel - Rolle möchte Feature, damit Begründung]
154
+
155
+ **Story:** Als [Rolle] möchte ich [Feature], damit [Begründung].
156
+
157
+ ## Beschreibung
158
+
159
+ [Detailed description in German]
160
+
161
+ ### Kontext
162
+ [Background and system context]
163
+
164
+ ### Anforderungen
165
+ [List of specific requirements]
166
+
167
+ ### Properties (optional - only if user explicitly specified them)
168
+
169
+ | Property | Type | Required | Description (EN) | Beschreibung (DE) |
170
+ |------------|--------|----------|--------------------|----------------------|
171
+ | example | string | yes | Example property | Beispiel-Eigenschaft |
172
+
173
+ [Omit this entire section if user did not specify properties]
174
+
175
+ ### Hinweise (optional)
176
+ [Technical notes, constraints, special logic - only if relevant]
177
+
178
+ ## Akzeptanzkriterien
179
+
180
+ - [ ] [Testable criterion 1]
181
+ - [ ] [Testable criterion 2]
182
+ - [ ] [Security criterion]
183
+ - [ ] [Edge case criterion]
184
+ ```
185
+
186
+ **After presenting, ask (in German):**
187
+ "Ist die Story so in Ordnung, oder möchtest du noch etwas anpassen?"
188
+
189
+ **If changes requested:** Make adjustments and present the updated story again.
190
+
191
+ ---
192
+
193
+ ## Example
194
+
195
+ **User input:**
196
+ > "Ich brauche FAQs die der Admin verwalten kann und die auf der Website angezeigt werden. Die sollen eine Reihenfolge haben."
197
+
198
+ **Proactive suggestions by the LLM (in German):**
199
+ > "Ich habe einige Details ergänzt, die mir sinnvoll erscheinen:
200
+ > - **Berechtigungen:** Admins verwalten, Gäste können nur lesen. Korrekt?
201
+ > - **Reihenfolge:** Du hast erwähnt, dass FAQs eine Reihenfolge haben sollen. Möchtest du die Properties (z.B. `position`) genauer spezifizieren, oder soll das der Implementierung überlassen werden?"
202
+
203
+ **User confirms:** "Ja, passt. Properties kann die Implementierung machen."
204
+
205
+ **Resulting story (suggestions integrated as definitive requirements):**
206
+
207
+ ```markdown
208
+ # Admin möchte FAQs verwalten, damit sie auf der Website verfügbar sind
209
+
210
+ **Story:** Als Admin möchte ich FAQs verwalten können, damit sie allen Besuchern auf der Website zur Verfügung stehen.
211
+
212
+ ## Beschreibung
213
+
214
+ Es soll ein Modul für FAQs erstellt werden, in dem der Admin FAQs sehen, anlegen, bearbeiten und löschen kann. Nicht eingeloggte Nutzer sollen die FAQs sehen können, damit sie auf der Website dargestellt werden können.
215
+
216
+ ### Kontext
217
+ - FAQs sind öffentlich sichtbare Inhalte, die von Administratoren verwaltet werden
218
+ - Die Reihenfolge der FAQs ist für die Anzeige wichtig
219
+
220
+ ### Anforderungen
221
+ - Admins können vollständige CRUD-Operationen auf FAQs durchführen
222
+ - Alle Nutzer (auch Gäste) können FAQs lesen
223
+ - FAQs müssen eine bestimmte Reihenfolge haben
224
+ - Die Reihenfolgeverwaltung muss automatisch und effizient erfolgen
225
+
226
+ ## Akzeptanzkriterien
227
+
228
+ - [ ] Administratoren können FAQs vollständig verwalten (GET, POST, DELETE, PUT)
229
+ - [ ] Alle Nutzer (auch nicht eingeloggte) können die komplette Liste der FAQs sortiert nach Reihenfolge abrufen
230
+ - [ ] Beim Anlegen einer neuen FAQ wird automatisch die nächste Position in der Reihenfolge vergeben
231
+ - [ ] Die Reihenfolge der FAQs kann angepasst werden
232
+ - [ ] Nicht-Admin-Nutzer können keine FAQs erstellen, bearbeiten oder löschen
233
+ ```
234
+
235
+ **Gherkin format for complex criteria (optional):**
236
+ ```gherkin
237
+ Gegeben es existieren bereits 3 FAQs in der Reihenfolge A, B, C
238
+ Wenn ein Admin eine neue FAQ D an Position 2 einfügt
239
+ Dann ist die neue Reihenfolge A, D, B, C
240
+ Und alle anderen FAQs werden entsprechend neu positioniert
241
+ ```
242
+
243
+ ---
244
+
245
+ ## Workflow Summary
246
+
247
+ 1. **Collect initial thoughts** - Let user describe their idea freely
248
+ 2. **Analyze gaps** - Check against the required elements checklist
249
+ 3. **Proactively suggest** - For missing areas, suggest sensible completions and ask for confirmation
250
+ 4. **Validate** - INVEST check, coherence check
251
+ 5. **Present story** - Output in Markdown format, open for discussion
252
+ 6. **Iterate** - Make adjustments if requested and present again
253
+
254
+ **Core Principle:** Be proactive! Don't just wait for answers - suggest sensible completions based on context. This way, even brief inputs lead to complete, high-quality user stories.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/cli",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "lenne.Tech CLI: lt",
5
5
  "keywords": [
6
6
  "lenne.Tech",