appiq-solution 1.0.0 โ†’ 1.0.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/README.md ADDED
@@ -0,0 +1,162 @@
1
+ # ๐Ÿš€ Appiq Solution - Super Einfache KI-Agent Installation
2
+
3
+ *Built with โค๏ธ based on the amazing Bmad-Method*
4
+
5
+ ## โšก One-Command Installation
6
+
7
+ ```bash
8
+ npx appiq-solution install
9
+ ```
10
+
11
+ **Das war's!** ๐ŸŽฏ Kein komplizierter Setup mehr.
12
+
13
+ ## ๐ŸŽฎ Was passiert automatisch?
14
+
15
+ ### 1. **๐Ÿ” Intelligente Projekt-Erkennung**
16
+ - โœ… **Automatisch erkennt:** Greenfield vs. Brownfield
17
+ - โœ… **Analysiert:** Bestehenden Code, Dokumentation, Tech-Stack
18
+ - โœ… **Empfiehlt:** Optimalen Workflow fรผr Ihr Projekt
19
+
20
+ ### 2. **๐Ÿ› ๏ธ IDE-Integration (One-Click)**
21
+ - โœ… **Cursor** โ†’ `.cursor/rules/` mit `.mdc` Dateien
22
+ - โœ… **Claude Code** โ†’ `.claude/commands/Appiq/` mit `.md` Dateien
23
+ - โœ… **Windsurf** โ†’ `.windsurf/rules/` mit `.md` Dateien
24
+ - โœ… **VS Code + Cline** โ†’ `.clinerules/` mit `.md` Dateien
25
+
26
+ ### 3. **๐Ÿ“ Automatische Datei-Organisation**
27
+
28
+ **Neue Projekte (Greenfield):**
29
+ ```
30
+ your-project/
31
+ โ”œโ”€โ”€ docs/
32
+ โ”‚ โ”œโ”€โ”€ prd.md โ† PRD wird hier erstellt
33
+ โ”‚ โ”œโ”€โ”€ architecture.md โ† Architektur wird hier erstellt
34
+ โ”‚ โ””โ”€โ”€ stories/ โ† User Stories werden hier erstellt
35
+ โ”œโ”€โ”€ appiq-solution/
36
+ โ”‚ โ”œโ”€โ”€ agents/ โ† Optimierte KI-Agents
37
+ โ”‚ โ””โ”€โ”€ commands/ โ† One-Click Kommandos
38
+ โ””โ”€โ”€ .cursor/rules/ โ† IDE-spezifische Integration
39
+ ```
40
+
41
+ **Bestehende Projekte (Brownfield):**
42
+ ```
43
+ your-existing-project/
44
+ โ”œโ”€โ”€ docs/ โ† Bestehende Docs werden gescannt
45
+ โ”‚ โ”œโ”€โ”€ prd.md โ† PRD falls vorhanden, sonst erstellt
46
+ โ”‚ โ””โ”€โ”€ architecture.md โ† Architektur-Review
47
+ โ”œโ”€โ”€ appiq-solution/ โ† Neue Appiq Solution Installation
48
+ โ””โ”€โ”€ .cursor/rules/ โ† IDE Integration (nicht-invasiv)
49
+ ```
50
+
51
+ ## ๐Ÿš€ Super Einfache Nutzung
52
+
53
+ ### Schritt 1: Installation
54
+ ```bash
55
+ npx appiq-solution install
56
+ ```
57
+
58
+ ### Schritt 2: Agent laden (Cursor Beispiel)
59
+ ```bash
60
+ # Appiq Launcher ist bereits in .cursor/rules/smart-launcher.mdc
61
+ # Einfach in Cursor sagen: "Agiere als Appiq Launcher"
62
+ ```
63
+
64
+ ### Schritt 3: One-Command Start
65
+ ```bash
66
+ # Fรผr NEUE Projekte:
67
+ /start
68
+
69
+ # Fรผr BESTEHENDE Projekte:
70
+ /analyze
71
+ ```
72
+
73
+ **Das war's!** ๐ŸŽ‰ Das System fรผhrt Sie automatisch durch alles.
74
+
75
+ ## ๐ŸŽฏ One-Click Workflows
76
+
77
+ ### Greenfield (Neue Projekte)
78
+ ```
79
+ /start โ†’ PRD โ†’ Architektur โ†’ Stories โ†’ Code โ†’ Tests
80
+ ```
81
+
82
+ ### Brownfield (Bestehende Projekte)
83
+ ```
84
+ /analyze โ†’ Review โ†’ Neue Features โ†’ Integration โ†’ Tests
85
+ ```
86
+
87
+ ## ๐Ÿค– Optimierte Agents
88
+
89
+ | Agent | Kommando | Funktion |
90
+ |-------|----------|----------|
91
+ | **Appiq Launcher** | `/start` | Intelligenter Projekt-Start |
92
+ | **Project Manager** | `/prd` | PRD & Dokumentation |
93
+ | **System Architect** | `/architecture` | Technische Architektur |
94
+ | **Story Master** | `/story` | User Stories & Sprints |
95
+ | **Senior Developer** | `/code` | Code Implementation |
96
+ | **QA Expert** | `/test` | Testing & Validierung |
97
+
98
+ ## ๐Ÿ’ก Warum Appiq Solution?
99
+
100
+ ### โŒ **Vorher (Kompliziert):**
101
+ - โœ— Komplexer Web-Client Setup
102
+ - โœ— Unklare Anweisungen
103
+ - โœ— Viele manuelle Schritte
104
+ - โœ— Verwirrende Datei-Organisation
105
+
106
+ ### โœ… **Jetzt (Super Einfach):**
107
+ - โœ… **Ein Kommando:** `npx appiq-solution install`
108
+ - โœ… **Automatische Erkennung:** Greenfield/Brownfield
109
+ - โœ… **Klare Anweisungen:** Wo gehรถrt was hin
110
+ - โœ… **One-Click Workflows:** Alles automatisiert
111
+
112
+ ## ๐Ÿ†˜ Hilfe & Support
113
+
114
+ ### Quick Commands
115
+ - **`/help`** - Alle verfรผgbaren Kommandos
116
+ - **`/status`** - Aktueller Projekt-Status
117
+ - **`/next`** - Nรคchster Schritt
118
+
119
+ ### Troubleshooting
120
+ ```bash
121
+ # Installation prรผfen
122
+ ls appiq-solution/
123
+
124
+ # Agent-Liste anzeigen
125
+ ls appiq-solution/agents/
126
+
127
+ # IDE-Integration prรผfen
128
+ ls .cursor/rules/ # fรผr Cursor
129
+ ls .claude/commands/ # fรผr Claude Code
130
+ ```
131
+
132
+ ## ๐ŸŽฎ Beispiel-Session
133
+
134
+ ```bash
135
+ # Installation
136
+ $ npx appiq-solution install
137
+ ๐Ÿ” Projekt-Analyse... โ†’ Brownfield erkannt
138
+ ๐Ÿ› ๏ธ IDE: Cursor ausgewรคhlt
139
+ โœ… Installation abgeschlossen!
140
+
141
+ # In Cursor IDE
142
+ > "Agiere als Appiq Launcher"
143
+ > /analyze
144
+
145
+ ๐Ÿ” Analyzing existing project...
146
+ โœ… Found: package.json (Node.js project)
147
+ โœ… Found: src/ directory with React components
148
+ โœ… Missing: PRD documentation
149
+ ๐Ÿ“‹ Recommendation: Create PRD first, then add new features
150
+
151
+ > /prd
152
+
153
+ ๐Ÿ“ Creating PRD for existing React project...
154
+ โœ… PRD created: docs/prd.md
155
+ ๐ŸŽฏ Next: /architecture to review technical setup
156
+ ```
157
+
158
+ **So einfach ist das!** ๐Ÿš€
159
+
160
+ ---
161
+ *Appiq Solution - Entwicklung war nie einfacher.*
162
+ *Built with โค๏ธ based on Bmad-Method*
@@ -0,0 +1,833 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Appiq Solution Smart Installer
5
+ *
6
+ * Super einfache Installation mit One-Click Workflows
7
+ * Usage: npx appiq-solution install
8
+ *
9
+ * Built with โค๏ธ based on the amazing Bmad-Method
10
+ * Credits: https://github.com/Viktor-Hermann/APPIQ-METHOD
11
+ */
12
+
13
+ const fs = require('fs');
14
+ const path = require('path');
15
+ const inquirer = require('inquirer');
16
+ const chalk = require('chalk');
17
+
18
+ class AppiqSolutionInstaller {
19
+ constructor() {
20
+ this.projectRoot = process.cwd();
21
+ this.appiqPath = path.join(this.projectRoot, "appiq-solution");
22
+ this.config = {
23
+ version: "1.0.0",
24
+ projectType: null, // 'greenfield' or 'brownfield'
25
+ techStack: {},
26
+ selectedIDEs: [],
27
+ projectName: null,
28
+ projectIdea: null,
29
+ targetUsers: null,
30
+ projectPlan: null,
31
+ planApproved: false,
32
+ };
33
+ }
34
+
35
+ async install() {
36
+ console.log(chalk.bold.cyan("๐Ÿš€ Appiq Solution Smart Installer v1.0.0"));
37
+ console.log(chalk.cyan("============================================"));
38
+ console.log(chalk.dim("Built with โค๏ธ based on Bmad-Method"));
39
+ console.log(chalk.dim("https://github.com/Viktor-Hermann/APPIQ-METHOD\n"));
40
+
41
+ try {
42
+ // Phase 1: Projekt-Typ Detection
43
+ await this.detectProjectType();
44
+
45
+ // Phase 2: Projektidee erfassen
46
+ await this.collectProjectIdea();
47
+
48
+ // Phase 3: IDE Selection (MULTISELECT)
49
+ await this.selectIDE();
50
+
51
+ // Phase 4: Projektplan erstellen
52
+ await this.createProjectPlan();
53
+
54
+ // Phase 5: Plan-Freigabe
55
+ await this.approvePlan();
56
+
57
+ // Phase 6: Installation
58
+ await this.performInstallation();
59
+
60
+ // Phase 7: One-Click Setup
61
+ await this.setupOneClickWorkflows();
62
+
63
+ // Phase 8: Agent-Orchestrierung vorbereiten
64
+ await this.setupAgentOrchestration();
65
+
66
+ // Phase 9: Simple Instructions
67
+ await this.showSimpleInstructions();
68
+ } catch (error) {
69
+ console.error(chalk.red("โŒ Installation failed:"), error.message);
70
+ process.exit(1);
71
+ }
72
+ }
73
+
74
+ async detectProjectType() {
75
+ console.log(chalk.yellow("๐Ÿ” Projekt-Analyse..."));
76
+
77
+ // Auto-Detection
78
+ const hasPackageJson = fs.existsSync(
79
+ path.join(this.projectRoot, "package.json")
80
+ );
81
+ const hasPubspec = fs.existsSync(
82
+ path.join(this.projectRoot, "pubspec.yaml")
83
+ );
84
+ const hasExistingCode = this.hasExistingSourceCode();
85
+ const hasDocumentation = this.hasExistingDocumentation();
86
+
87
+ let suggestedType = "greenfield";
88
+ let reason = "Neues Projekt erkannt";
89
+
90
+ if (hasExistingCode || hasDocumentation) {
91
+ suggestedType = "brownfield";
92
+ reason = "Existierenden Code/Dokumentation gefunden";
93
+ }
94
+
95
+ console.log(chalk.gray(`๐Ÿ’ก Analyse: ${reason}`));
96
+ console.log(
97
+ chalk.gray(
98
+ `๐Ÿ“Š Empfehlung: ${
99
+ suggestedType === "greenfield"
100
+ ? "Greenfield (Neues Projekt)"
101
+ : "Brownfield (Bestehendes Projekt)"
102
+ }`
103
+ )
104
+ );
105
+
106
+ // User Confirmation
107
+ const { projectType } = await inquirer.prompt([
108
+ {
109
+ type: "list",
110
+ name: "projectType",
111
+ message: "๐ŸŽฏ Welcher Projekt-Typ ist das?",
112
+ choices: [
113
+ {
114
+ name: `โœจ Greenfield - Neues Projekt (Empfohlen: ${
115
+ suggestedType === "greenfield" ? "โœ…" : "โŒ"
116
+ })`,
117
+ value: "greenfield",
118
+ short: "Greenfield",
119
+ },
120
+ {
121
+ name: `๐Ÿ”ง Brownfield - Bestehendes Projekt (Empfohlen: ${
122
+ suggestedType === "brownfield" ? "โœ…" : "โŒ"
123
+ })`,
124
+ value: "brownfield",
125
+ short: "Brownfield",
126
+ },
127
+ ],
128
+ default: suggestedType,
129
+ },
130
+ ]);
131
+
132
+ this.config.projectType = projectType;
133
+ console.log(
134
+ chalk.green(
135
+ `โœ… Projekt-Typ: ${
136
+ projectType === "greenfield"
137
+ ? "Greenfield (Neu)"
138
+ : "Brownfield (Bestehend)"
139
+ }\n`
140
+ )
141
+ );
142
+ }
143
+
144
+ async selectIDE() {
145
+ console.log(chalk.yellow("๐Ÿ› ๏ธ IDE Auswahl"));
146
+ console.log(chalk.bold.yellow.bgRed(" โš ๏ธ MULTISELECT: Verwenden Sie SPACEBAR zum Auswรคhlen mehrerer IDEs! "));
147
+ console.log(chalk.gray("Wรคhlen Sie ALLE IDEs aus, die Sie nutzen:\n"));
148
+
149
+ const { ides } = await inquirer.prompt([
150
+ {
151
+ type: "checkbox",
152
+ name: "ides",
153
+ message: "๐ŸŽฏ Welche IDEs nutzen Sie? (SPACEBAR = auswรคhlen, ENTER = bestรคtigen)",
154
+ choices: [
155
+ { name: "๐Ÿ”ต Cursor", value: "cursor" },
156
+ { name: "๐ŸŸฃ Claude Code CLI", value: "claude-code" },
157
+ { name: "๐ŸŸข Windsurf", value: "windsurf" },
158
+ { name: "๐Ÿ”ถ VS Code + Cline", value: "cline" },
159
+ { name: "๐ŸŸ  Trae", value: "trae" },
160
+ { name: "๐Ÿ”ด Roo Code", value: "roo" },
161
+ { name: "๐ŸŸช Gemini CLI", value: "gemini" },
162
+ { name: "โšซ GitHub Copilot", value: "github-copilot" },
163
+ ],
164
+ validate: (input) => {
165
+ if (input.length === 0) {
166
+ return "Bitte wรคhlen Sie mindestens eine IDE aus!";
167
+ }
168
+ return true;
169
+ },
170
+ },
171
+ ]);
172
+
173
+ this.config.selectedIDEs = ides;
174
+ const ideNames = ides.map(ide => this.getIDEName(ide)).join(", ");
175
+ console.log(chalk.green(`โœ… IDEs: ${ideNames}\n`));
176
+ }
177
+
178
+ async collectProjectIdea() {
179
+ console.log(chalk.yellow("๐Ÿ’ก Projektidee erfassen"));
180
+ console.log(chalk.gray("Beschreiben Sie Ihr Projekt-Vorhaben:\n"));
181
+
182
+ const { projectIdea, projectName, targetUsers } = await inquirer.prompt([
183
+ {
184
+ type: "input",
185
+ name: "projectName",
186
+ message: "๐Ÿท๏ธ Wie soll Ihr Projekt heiรŸen?",
187
+ validate: (input) => input.length > 0 ? true : "Bitte geben Sie einen Projektnamen ein!"
188
+ },
189
+ {
190
+ type: "editor",
191
+ name: "projectIdea",
192
+ message: "๐Ÿ’ก Beschreiben Sie Ihre Projektidee (detailliert):",
193
+ validate: (input) => input.length > 10 ? true : "Bitte beschreiben Sie Ihr Projekt ausfรผhrlicher!"
194
+ },
195
+ {
196
+ type: "input",
197
+ name: "targetUsers",
198
+ message: "๐Ÿ‘ฅ Wer sind Ihre Zielgruppen/User?",
199
+ validate: (input) => input.length > 0 ? true : "Bitte beschreiben Sie Ihre Zielgruppe!"
200
+ }
201
+ ]);
202
+
203
+ this.config.projectName = projectName;
204
+ this.config.projectIdea = projectIdea;
205
+ this.config.targetUsers = targetUsers;
206
+
207
+ console.log(chalk.green(`โœ… Projektidee erfasst: "${projectName}"\n`));
208
+ }
209
+
210
+ async createProjectPlan() {
211
+ console.log(chalk.yellow("๐Ÿ“‹ Projektplan wird erstellt..."));
212
+ console.log(chalk.gray("Basierend auf Ihrer Idee und dem Projekt-Typ\n"));
213
+
214
+ // Hier wรผrde normalerweise die team-fullstack.yaml verwendet
215
+ const plan = this.generateProjectPlan();
216
+ this.config.projectPlan = plan;
217
+
218
+ console.log(chalk.cyan("๐Ÿ“‹ Ihr Projektplan:"));
219
+ console.log(chalk.white("โ”€".repeat(50)));
220
+ console.log(plan);
221
+ console.log(chalk.white("โ”€".repeat(50) + "\n"));
222
+ }
223
+
224
+ async approvePlan() {
225
+ const { approved, changes } = await inquirer.prompt([
226
+ {
227
+ type: "confirm",
228
+ name: "approved",
229
+ message: "โœ… Sind Sie mit diesem Plan zufrieden?",
230
+ default: true
231
+ },
232
+ {
233
+ type: "input",
234
+ name: "changes",
235
+ message: "๐Ÿ“ Welche ร„nderungen mรถchten Sie? (oder ENTER fรผr keine ร„nderungen)",
236
+ when: (answers) => !answers.approved
237
+ }
238
+ ]);
239
+
240
+ if (!approved && changes) {
241
+ console.log(chalk.yellow("๐Ÿ“ Plan wird angepasst..."));
242
+ this.config.planChanges = changes;
243
+ // Hier wรผrde Plan angepasst werden
244
+ console.log(chalk.green("โœ… Plan wurde angepasst!\n"));
245
+ } else {
246
+ console.log(chalk.green("โœ… Plan freigegeben - Entwicklung kann starten!\n"));
247
+ }
248
+
249
+ this.config.planApproved = true;
250
+ }
251
+
252
+ generateProjectPlan() {
253
+ const { projectType, projectName, projectIdea, targetUsers } = this.config;
254
+
255
+ return `๐ŸŽฏ PROJEKTPLAN: ${projectName}
256
+
257
+ ๐Ÿ“Š PROJEKT-TYP: ${projectType === 'greenfield' ? 'Greenfield (Neues Projekt)' : 'Brownfield (Bestehendes Projekt)'}
258
+ ๐Ÿ‘ฅ ZIELGRUPPE: ${targetUsers}
259
+
260
+ ๐Ÿ’ก PROJEKTIDEE:
261
+ ${projectIdea}
262
+
263
+ ๐Ÿš€ ENTWICKLUNGS-PIPELINE:
264
+ ${projectType === 'greenfield' ? `
265
+ 1. ๐Ÿ“‹ PO (Product Owner) โ†’ PRD erstellen
266
+ 2. ๐Ÿ—๏ธ Architect โ†’ System-Architektur designen
267
+ 3. ๐ŸŽจ UX Expert โ†’ UI/UX Design
268
+ 4. ๐Ÿ“ Story Master โ†’ User Stories aufbrechen
269
+ 5. ๐Ÿ’ป Developer โ†’ Features implementieren
270
+ 6. โœ… QA Expert โ†’ Testing & Validierung
271
+ 7. ๐Ÿ“Š SM (Scrum Master) โ†’ Sprint-Koordination
272
+ ` : `
273
+ 1. ๐Ÿ“‹ PO โ†’ Bestehende Dokumentation analysieren
274
+ 2. ๐Ÿ—๏ธ Architect โ†’ Architektur-Review
275
+ 3. ๐Ÿ“ Story Master โ†’ Neue Features planen
276
+ 4. ๐Ÿ’ป Developer โ†’ Features in bestehende Basis integrieren
277
+ 5. โœ… QA Expert โ†’ Regression Testing
278
+ 6. ๐Ÿ“Š SM โ†’ Change Management
279
+ `}
280
+
281
+ ๐ŸŽฎ ONE-CLICK BEFEHLE:
282
+ - /start โ†’ Gesamten Workflow starten
283
+ - /plan โ†’ Detailplanung
284
+ - /develop โ†’ Entwicklung beginnen
285
+ - /review โ†’ Code Review
286
+ - /deploy โ†’ Deployment vorbereiten`;
287
+ }
288
+
289
+ async setupAgentOrchestration() {
290
+ console.log(chalk.yellow("๐ŸŽญ Agent-Orchestrierung vorbereiten..."));
291
+
292
+ // Team-Fullstack.yaml Integration
293
+ const orchestrationConfig = {
294
+ agents: ['po', 'architect', 'ux-expert', 'story-master', 'developer', 'qa-expert', 'sm'],
295
+ workflows: this.config.projectType === 'greenfield' ?
296
+ ['greenfield-fullstack.yaml', 'greenfield-ui.yaml', 'greenfield-service.yaml'] :
297
+ ['brownfield-fullstack.yaml', 'brownfield-ui.yaml', 'brownfield-service.yaml'],
298
+ planApproved: this.config.planApproved
299
+ };
300
+
301
+ // Orchestrierung-Datei erstellen
302
+ const orchestrationPath = path.join(this.appiqPath, 'orchestration.yaml');
303
+ fs.writeFileSync(orchestrationPath, this.generateOrchestrationConfig(orchestrationConfig));
304
+
305
+ console.log(chalk.green("โœ… Agent-Orchestrierung vorbereitet!\n"));
306
+ }
307
+
308
+ generateOrchestrationConfig(config) {
309
+ return `# Appiq Solution Agent Orchestration
310
+ # Built with โค๏ธ based on Bmad-Method
311
+
312
+ project:
313
+ name: ${this.config.projectName}
314
+ type: ${this.config.projectType}
315
+ plan_approved: ${this.config.planApproved}
316
+
317
+ agents:
318
+ ${config.agents.map(agent => ` - ${agent}`).join('\n')}
319
+
320
+ workflows:
321
+ ${config.workflows.map(workflow => ` - ${workflow}`).join('\n')}
322
+
323
+ execution_order:
324
+ 1: "po โ†’ PRD & Requirements"
325
+ 2: "architect โ†’ System Design"
326
+ 3: "ux-expert โ†’ UI/UX Design"
327
+ 4: "story-master โ†’ User Stories"
328
+ 5: "developer โ†’ Implementation"
329
+ 6: "qa-expert โ†’ Testing"
330
+ 7: "sm โ†’ Sprint Management"
331
+
332
+ ides:
333
+ ${this.config.selectedIDEs.map(ide => ` - ${ide}`).join('\n')}
334
+ `;
335
+ }
336
+
337
+ async performInstallation() {
338
+ console.log(chalk.yellow("๐Ÿ“ฆ Installation lรคuft..."));
339
+
340
+ // Create appiq-solution directory
341
+ if (!fs.existsSync(this.appiqPath)) {
342
+ fs.mkdirSync(this.appiqPath, { recursive: true });
343
+ }
344
+
345
+ // Install optimized agents
346
+ await this.installOptimizedAgents();
347
+
348
+ // Install project-specific configs
349
+ await this.installProjectConfig();
350
+
351
+ // Setup IDE integration
352
+ await this.setupIDEIntegration();
353
+
354
+ console.log(chalk.green("โœ… Installation abgeschlossen!\n"));
355
+ }
356
+
357
+ async installOptimizedAgents() {
358
+ console.log(chalk.gray(" ๐Ÿ“„ Optimierte Agents installieren..."));
359
+
360
+ const agentsDir = path.join(this.appiqPath, "agents");
361
+ if (!fs.existsSync(agentsDir)) {
362
+ fs.mkdirSync(agentsDir, { recursive: true });
363
+ }
364
+
365
+ // Core optimized agents
366
+ const agents = [
367
+ "smart-launcher",
368
+ "project-manager",
369
+ "architect",
370
+ "story-master",
371
+ "developer",
372
+ "qa-expert",
373
+ ];
374
+
375
+ for (const agent of agents) {
376
+ await this.createOptimizedAgent(agent);
377
+ }
378
+ }
379
+
380
+ async createOptimizedAgent(agentName) {
381
+ const agentContent = this.generateOptimizedAgentContent(agentName);
382
+ const filePath = path.join(this.appiqPath, "agents", `${agentName}.md`);
383
+ fs.writeFileSync(filePath, agentContent);
384
+ }
385
+
386
+ generateOptimizedAgentContent(agentName) {
387
+ const agentConfigs = {
388
+ "smart-launcher": {
389
+ name: "Appiq Launcher",
390
+ role: "Intelligenter Projekt-Starter",
391
+ commands: ["/start", "/quick-setup", "/help"],
392
+ description:
393
+ "Startet automatisch den optimalen Workflow basierend auf Ihrem Projekt-Typ",
394
+ },
395
+ "project-manager": {
396
+ name: "Project Manager",
397
+ role: "PRD & Projekt-Planung",
398
+ commands: ["/prd", "/plan", "/epic"],
399
+ description: "Erstellt PRD und Projekt-Dokumentation",
400
+ },
401
+ architect: {
402
+ name: "System Architect",
403
+ role: "Technische Architektur",
404
+ commands: ["/architecture", "/tech-stack", "/design"],
405
+ description: "Entwickelt System-Architektur und Tech-Stack",
406
+ },
407
+ "story-master": {
408
+ name: "Story Master",
409
+ role: "User Stories & Sprint Planning",
410
+ commands: ["/story", "/sprint", "/tasks"],
411
+ description: "Erstellt User Stories und Sprint-Planung",
412
+ },
413
+ developer: {
414
+ name: "Senior Developer",
415
+ role: "Code Implementation",
416
+ commands: ["/code", "/implement", "/fix"],
417
+ description: "Implementiert Features und behebt Bugs",
418
+ },
419
+ "qa-expert": {
420
+ name: "QA Expert",
421
+ role: "Testing & Qualitรคt",
422
+ commands: ["/test", "/review", "/validate"],
423
+ description: "Fรผhrt Tests durch und validiert Code-Qualitรคt",
424
+ },
425
+ };
426
+
427
+ const config = agentConfigs[agentName];
428
+
429
+ return `# ${config.name}
430
+
431
+ ## ๐ŸŽฏ Rolle
432
+ ${config.role}
433
+
434
+ ## ๐Ÿ“‹ Verfรผgbare Kommandos
435
+ ${config.commands
436
+ .map((cmd) => `- **${cmd}** - ${config.description}`)
437
+ .join("\n")}
438
+
439
+ ## ๐Ÿš€ One-Click Workflows
440
+
441
+ ### Fรผr ${
442
+ this.config.projectType === "greenfield" ? "NEUE" : "BESTEHENDE"
443
+ } Projekte:
444
+
445
+ ${
446
+ this.config.projectType === "greenfield"
447
+ ? this.generateGreenfieldWorkflow(config)
448
+ : this.generateBrownfieldWorkflow(config)
449
+ }
450
+
451
+ ## ๐ŸŽฎ Einfache Nutzung
452
+
453
+ 1. **Laden Sie diesen Agent in Ihre IDE**
454
+ 2. **Sagen Sie:** "Agiere als ${config.name}"
455
+ 3. **Verwenden Sie:** ${config.commands[0]} fรผr Quick-Start
456
+
457
+ ---
458
+ *Automatisch optimiert fรผr ${this.config.selectedIDEs.map(ide => this.getIDEName(ide)).join(', ')}*
459
+ *Powered by Appiq - Based on Bmad-Method*
460
+ `;
461
+ }
462
+
463
+ generateGreenfieldWorkflow(config) {
464
+ const workflows = {
465
+ "Appiq Launcher": `
466
+ **๐Ÿš€ Schnell-Start fรผr neues Projekt:**
467
+ 1. \`/start\` - Automatische Projekt-Analyse
468
+ 2. Erstellt automatisch: PRD-Vorlage, Architektur-Basis, erste Stories
469
+ 3. **Wo alles hingehรถrt:** Alle Dateien werden automatisch in \`docs/\` erstellt`,
470
+
471
+ "Project Manager": `
472
+ **๐Ÿ“‹ PRD Erstellung:**
473
+ 1. \`/prd\` - Startet PRD-Assistent
474
+ 2. **Datei wird erstellt:** \`docs/prd.md\`
475
+ 3. **Nรคchster Schritt:** Architect fรผr Architektur`,
476
+
477
+ "System Architect": `
478
+ **๐Ÿ—๏ธ Architektur erstellen:**
479
+ 1. \`/architecture\` - Basierend auf PRD
480
+ 2. **Datei wird erstellt:** \`docs/architecture.md\`
481
+ 3. **Nรคchster Schritt:** Story Master fรผr erste Stories`,
482
+
483
+ "Story Master": `
484
+ **๐Ÿ“ Erste Stories:**
485
+ 1. \`/story\` - Erstellt erste User Story
486
+ 2. **Datei wird erstellt:** \`docs/stories/story-001.md\`
487
+ 3. **Nรคchster Schritt:** Developer fรผr Implementation`,
488
+
489
+ "Senior Developer": `
490
+ **๐Ÿ’ป Implementation:**
491
+ 1. \`/implement\` - Implementiert aktuelle Story
492
+ 2. **Erstellt/bearbeitet:** Entsprechende Code-Dateien
493
+ 3. **Nรคchster Schritt:** QA Expert fรผr Review`,
494
+
495
+ "QA Expert": `
496
+ **โœ… Testing & Review:**
497
+ 1. \`/review\` - Reviewed aktuellen Code
498
+ 2. **Erstellt:** Test-Dateien und Reports
499
+ 3. **Nรคchster Schritt:** Zurรผck zu Story Master fรผr nรคchste Story`,
500
+ };
501
+
502
+ return workflows[config.name] || "Standard Greenfield Workflow";
503
+ }
504
+
505
+ generateBrownfieldWorkflow(config) {
506
+ const workflows = {
507
+ "Appiq Launcher": `
508
+ **๐Ÿ”ง Schnell-Start fรผr bestehendes Projekt:**
509
+ 1. \`/analyze\` - Analysiert bestehendes Projekt
510
+ 2. **Findet:** Existierende Docs, Code-Struktur, Tech-Stack
511
+ 3. **Erstellt:** Angepasste Workflows fรผr Ihr Projekt`,
512
+
513
+ "Project Manager": `
514
+ **๐Ÿ“‹ Bestehende Dokumentation:**
515
+ 1. \`/analyze-docs\` - Scannt bestehende Dokumentation
516
+ 2. **Legt PRD ab in:** \`docs/prd.md\` (falls nicht vorhanden)
517
+ 3. **Nรคchster Schritt:** Architect fรผr Architektur-Review`,
518
+
519
+ "System Architect": `
520
+ **๐Ÿ—๏ธ Architektur-Review:**
521
+ 1. \`/review-architecture\` - Analysiert bestehende Struktur
522
+ 2. **Erstellt/updated:** \`docs/architecture.md\`
523
+ 3. **Nรคchster Schritt:** Story Master fรผr neue Features`,
524
+
525
+ "Story Master": `
526
+ **๐Ÿ“ Feature Stories:**
527
+ 1. \`/new-feature\` - Neue Story fรผr bestehendes Projekt
528
+ 2. **Datei wird erstellt:** \`docs/stories/feature-XXX.md\`
529
+ 3. **Berรผcksichtigt:** Bestehende Code-Basis`,
530
+
531
+ "Senior Developer": `
532
+ **๐Ÿ’ป Feature Implementation:**
533
+ 1. \`/add-feature\` - Implementiert in bestehendem Code
534
+ 2. **Bearbeitet:** Bestehende Dateien sicher
535
+ 3. **Erstellt:** Neue Dateien wo nรถtig`,
536
+
537
+ "QA Expert": `
538
+ **โœ… Regression Testing:**
539
+ 1. \`/regression-test\` - Testet neue Features
540
+ 2. **Validiert:** Keine Breaking Changes
541
+ 3. **Erstellt:** Test-Reports fรผr bestehende + neue Features`,
542
+ };
543
+
544
+ return workflows[config.name] || "Standard Brownfield Workflow";
545
+ }
546
+
547
+ async setupOneClickWorkflows() {
548
+ console.log(chalk.yellow("โšก One-Click Workflows einrichten..."));
549
+
550
+ // Create quick commands
551
+ const commandsDir = path.join(this.appiqPath, "commands");
552
+ if (!fs.existsSync(commandsDir)) {
553
+ fs.mkdirSync(commandsDir, { recursive: true });
554
+ }
555
+
556
+ // Project-type specific quick starts
557
+ const quickStartContent = this.generateQuickStartScript();
558
+ fs.writeFileSync(
559
+ path.join(commandsDir, "quick-start.md"),
560
+ quickStartContent
561
+ );
562
+
563
+ console.log(chalk.green("โœ… One-Click Workflows bereit!\n"));
564
+ }
565
+
566
+ generateQuickStartScript() {
567
+ return `# ๐Ÿš€ Appiq Solution Quick Start
568
+
569
+ ## Fรผr ${
570
+ this.config.projectType === "greenfield" ? "NEUE" : "BESTEHENDE"
571
+ } Projekte
572
+
573
+ ### โšก One-Command Start:
574
+
575
+ \`\`\`bash
576
+ # In Ihrer IDE, kopieren Sie einfach:
577
+ ${
578
+ this.config.projectType === "greenfield"
579
+ ? "/start new-project"
580
+ : "/analyze existing-project"
581
+ }
582
+ \`\`\`
583
+
584
+ ### ๐Ÿ“ Wo gehรถrt was hin?
585
+
586
+ ${
587
+ this.config.projectType === "greenfield"
588
+ ? `
589
+ **NEUE PROJEKTE:**
590
+ - โœ… **PRD:** \`docs/prd.md\` (wird automatisch erstellt)
591
+ - โœ… **Architektur:** \`docs/architecture.md\` (wird automatisch erstellt)
592
+ - โœ… **Stories:** \`docs/stories/\` (wird automatisch erstellt)
593
+ - โœ… **Code:** Ihr gewรคhltes Projekt-Layout
594
+
595
+ *Erstellt mit Appiq Solution - Basierend auf Bmad-Method*
596
+ `
597
+ : `
598
+ **BESTEHENDE PROJEKTE:**
599
+ - โœ… **PRD:** Legen Sie bestehende PRD in \`docs/prd.md\`
600
+ - โœ… **Architektur:** Bestehende Architektur in \`docs/architecture.md\`
601
+ - โœ… **Stories:** Neue Features in \`docs/stories/\`
602
+ - โœ… **Code:** Arbeitet mit Ihrer bestehenden Struktur
603
+ `
604
+ }
605
+
606
+ ### ๐ŸŽฏ 3-Schritt Erfolgsformel:
607
+
608
+ 1. **Agent laden** โ†’ Agent-Datei in IDE kopieren
609
+ 2. **Kommando ausfรผhren** โ†’ \`${
610
+ this.config.projectType === "greenfield" ? "/start" : "/analyze"
611
+ }\`
612
+ 3. **Folgen Sie den automatischen Anweisungen** โ†’ System fรผhrt Sie durch alles
613
+
614
+ ### ๐Ÿ†˜ Hilfe:
615
+
616
+ - **\`/help\`** - Zeigt alle verfรผgbaren Kommandos
617
+ - **\`/status\`** - Aktueller Projekt-Status
618
+ - **\`/next\`** - Was ist der nรคchste Schritt?
619
+
620
+ ---
621
+ *Optimiert fรผr ${this.config.selectedIDEs.map(ide => this.getIDEName(ide)).join(', ')} - ${new Date().toLocaleDateString("de-DE")}*
622
+ *Powered by Appiq Solution - Built with โค๏ธ based on Bmad-Method*
623
+ `;
624
+ }
625
+
626
+ async setupIDEIntegration() {
627
+ if (this.config.selectedIDEs.includes("manual") && this.config.selectedIDEs.length === 1) return;
628
+
629
+ console.log(chalk.gray(" ๐Ÿ”ง Mehrere IDE-Integrationen..."));
630
+
631
+ for (const ide of this.config.selectedIDEs) {
632
+ if (ide === "manual") continue;
633
+
634
+ console.log(chalk.gray(` ๐Ÿ“ ${this.getIDEName(ide)} wird konfiguriert...`));
635
+
636
+ const ideConfig = this.getIDEConfig(ide);
637
+ const ideDir = path.join(this.projectRoot, ideConfig.dir);
638
+
639
+ if (!fs.existsSync(ideDir)) {
640
+ fs.mkdirSync(ideDir, { recursive: true });
641
+ }
642
+
643
+ // Copy agents to IDE-specific format
644
+ const agentsPath = path.join(this.appiqPath, "agents");
645
+ const agents = fs.readdirSync(agentsPath);
646
+
647
+ for (const agent of agents) {
648
+ const sourcePath = path.join(agentsPath, agent);
649
+ const targetPath = path.join(
650
+ ideDir,
651
+ agent.replace(".md", ideConfig.suffix)
652
+ );
653
+ fs.copyFileSync(sourcePath, targetPath);
654
+ }
655
+
656
+ console.log(chalk.green(` โœ… ${this.getIDEName(ide)} konfiguriert`));
657
+ }
658
+
659
+ console.log(chalk.green(" โœ… Alle IDE-Integrationen abgeschlossen!"));
660
+ }
661
+
662
+ getIDEConfig(ide) {
663
+ const configs = {
664
+ cursor: { dir: ".cursor/rules", suffix: ".mdc" },
665
+ "claude-code": { dir: ".claude/commands/Appiq", suffix: ".md" },
666
+ windsurf: { dir: ".windsurf/rules", suffix: ".md" },
667
+ cline: { dir: ".clinerules", suffix: ".md" },
668
+ trae: { dir: ".trae/rules", suffix: ".md" },
669
+ roo: { dir: ".roo/agents", suffix: ".md" },
670
+ gemini: { dir: ".gemini/commands", suffix: ".md" },
671
+ "github-copilot": { dir: ".github/copilot", suffix: ".md" },
672
+ };
673
+ return configs[ide] || { dir: ".appiq-solution", suffix: ".md" };
674
+ }
675
+
676
+ getIDEName(ide) {
677
+ const names = {
678
+ cursor: "Cursor",
679
+ "claude-code": "Claude Code CLI",
680
+ windsurf: "Windsurf",
681
+ cline: "VS Code + Cline",
682
+ trae: "Trae",
683
+ roo: "Roo Code",
684
+ gemini: "Gemini CLI",
685
+ "github-copilot": "GitHub Copilot",
686
+ manual: "Manuell",
687
+ };
688
+ return names[ide] || ide;
689
+ }
690
+
691
+ async showSimpleInstructions() {
692
+ console.log(chalk.bold.green("๐ŸŽ‰ Appiq Installation Erfolgreich!\n"));
693
+ console.log(chalk.dim("Built with โค๏ธ based on the amazing Bmad-Method"));
694
+ console.log(chalk.dim("https://github.com/Viktor-Hermann/APPIQ-METHOD\n"));
695
+
696
+ console.log(chalk.cyan("๐Ÿ“‹ Nรคchste Schritte (Super einfach):"));
697
+ console.log(chalk.white("โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n"));
698
+
699
+ if (this.config.selectedIDEs.length > 0 && !this.config.selectedIDEs.includes("manual")) {
700
+ console.log(
701
+ chalk.yellow(`1. Ihre IDEs รถffnen: ${this.config.selectedIDEs.map(ide => this.getIDEName(ide)).join(', ')}`)
702
+ );
703
+ console.log(chalk.gray(` โ†’ Agents sind bereits in allen IDEs installiert!\n`));
704
+ }
705
+
706
+ console.log(chalk.yellow("2. Appiq Launcher laden:"));
707
+ console.log(
708
+ chalk.white(
709
+ ` โ†’ Kopieren Sie: ${chalk.bold(
710
+ "appiq-solution/agents/smart-launcher.md"
711
+ )}`
712
+ )
713
+ );
714
+ console.log(chalk.gray(` โ†’ In Ihre IDE einfรผgen\n`));
715
+
716
+ console.log(chalk.yellow("3. Sagen Sie Ihrer IDE:"));
717
+ console.log(
718
+ chalk.white(` โ†’ ${chalk.bold('"Agiere als Appiq Launcher"')}\n`)
719
+ );
720
+
721
+ console.log(chalk.yellow("4. One-Command Start:"));
722
+ console.log(
723
+ chalk.white(
724
+ chalk.bold(
725
+ ` โ†’ ${
726
+ this.config.projectType === "greenfield" ? "/start" : "/analyze"
727
+ }`
728
+ )
729
+ )
730
+ );
731
+ console.log(
732
+ chalk.gray(` โ†’ Das System fรผhrt Sie automatisch durch alles!\n`)
733
+ );
734
+
735
+ console.log(chalk.cyan("๐ŸŽฏ Das war's! Kein komplizierter Setup mehr."));
736
+ console.log(chalk.green("๐Ÿš€ Viel Erfolg mit Appiq!\n"));
737
+
738
+ // Quick reference
739
+ console.log(chalk.dim("โ”".repeat(50)));
740
+ console.log(chalk.dim("๐Ÿ“ Quick Reference:"));
741
+ console.log(chalk.dim(` โ€ข Agents: appiq-solution/agents/`));
742
+ console.log(
743
+ chalk.dim(` โ€ข Quick Start: appiq-solution/commands/quick-start.md`)
744
+ );
745
+ console.log(chalk.dim(` โ€ข Projekt-Typ: ${this.config.projectType}`));
746
+ console.log(
747
+ chalk.dim(` โ€ข IDEs: ${this.config.selectedIDEs.map(ide => this.getIDEName(ide)).join(', ')}`)
748
+ );
749
+ }
750
+
751
+ // Helper methods
752
+ hasExistingSourceCode() {
753
+ const sourceDirs = ["src", "lib", "app", "components", "pages"];
754
+ return sourceDirs.some(
755
+ (dir) =>
756
+ fs.existsSync(path.join(this.projectRoot, dir)) &&
757
+ fs.readdirSync(path.join(this.projectRoot, dir)).length > 0
758
+ );
759
+ }
760
+
761
+ hasExistingDocumentation() {
762
+ const docFiles = ["README.md", "docs", "documentation"];
763
+ return docFiles.some((file) =>
764
+ fs.existsSync(path.join(this.projectRoot, file))
765
+ );
766
+ }
767
+
768
+ async installProjectConfig() {
769
+ const configContent = this.generateProjectConfig();
770
+ fs.writeFileSync(
771
+ path.join(this.appiqPath, "project-config.yaml"),
772
+ configContent
773
+ );
774
+ }
775
+
776
+ generateProjectConfig() {
777
+ return `# Appiq Solution Project Configuration
778
+ # Built with โค๏ธ based on Bmad-Method
779
+ version: "1.0.0"
780
+ project:
781
+ type: ${this.config.projectType}
782
+ created: ${new Date().toISOString()}
783
+ name: ${this.config.projectName || 'Unbenanntes Projekt'}
784
+ plan_approved: ${this.config.planApproved}
785
+
786
+ # Wo die wichtigen Dateien liegen
787
+ paths:
788
+ prd: "docs/prd.md"
789
+ architecture: "docs/architecture.md"
790
+ stories: "docs/stories/"
791
+ agents: "appiq-solution/agents/"
792
+ orchestration: "appiq-solution/orchestration.yaml"
793
+
794
+ # One-Click Workflows
795
+ workflows:
796
+ ${this.config.projectType === "greenfield" ? "greenfield" : "brownfield"}:
797
+ start_command: "${
798
+ this.config.projectType === "greenfield" ? "/start" : "/analyze"
799
+ }"
800
+ agents_sequence:
801
+ - smart-launcher
802
+ - project-manager
803
+ - architect
804
+ - story-master
805
+ - developer
806
+ - qa-expert
807
+
808
+ # IDE Integration (Mehrere IDEs)
809
+ ides:
810
+ ${this.config.selectedIDEs.map(ide => ` - name: ${this.getIDEName(ide)}
811
+ config_path: ${this.getIDEConfig(ide).dir}
812
+ file_format: ${this.getIDEConfig(ide).suffix}`).join('\n')}
813
+ `;
814
+ }
815
+ }
816
+
817
+ // Run installer if called directly
818
+ if (require.main === module) {
819
+ // Check if 'install' command is provided
820
+ const args = process.argv.slice(2);
821
+
822
+ if (args.length === 0 || args[0] === "install") {
823
+ const installer = new AppiqSolutionInstaller();
824
+ installer.install().catch(console.error);
825
+ } else {
826
+ console.log(
827
+ chalk.red("โŒ Unknown command. Use: npx appiq-solution install")
828
+ );
829
+ process.exit(1);
830
+ }
831
+ }
832
+
833
+ module.exports = AppiqSolutionInstaller;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appiq-solution",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "๐Ÿš€ Super einfache KI-Agent Installation mit One-Click Workflows - Built with โค๏ธ based on Bmad-Method",
5
5
  "main": "tools/appiq-installer.js",
6
6
  "bin": {