myaidev-method 0.3.5 → 0.3.7

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.
Files changed (2) hide show
  1. package/bin/cli.js +134 -87
  2. package/package.json +1 -1
package/bin/cli.js CHANGED
@@ -128,7 +128,7 @@ async function loadWorkflowSystem() {
128
128
  }
129
129
 
130
130
  program
131
- .version("0.3.5")
131
+ .version("0.3.7")
132
132
  .enablePositionalOptions()
133
133
  .description(
134
134
  "MyAIDev Method - Comprehensive development framework with SPARC methodology",
@@ -519,10 +519,31 @@ program
519
519
  .option("--codex", "Initialize for Codex CLI")
520
520
  .option("--pack <pack>", "Install a specific pack: content, design, dev, or full")
521
521
  .action(async (options) => {
522
+ const pkgJson = await fs.readJson(path.join(__dirname, "..", "package.json"));
523
+ const version = pkgJson.version;
524
+ const orange = chalk.hex("#FFA500");
525
+ const dim = chalk.dim;
526
+
522
527
  try {
523
528
  const cwd = process.cwd();
524
529
 
525
- // Step 1: Determine CLI type
530
+ // ── Welcome screen ──────────────────────────────────────────────
531
+ console.log(getASCIIBanner());
532
+ console.log(
533
+ chalk.bold.white(" Welcome to ") +
534
+ orange.bold(`MyAIDev Method v${version}`) +
535
+ chalk.bold.white("!\n"),
536
+ );
537
+ console.log(
538
+ dim(" AI-powered skills for content creation, design, software\n") +
539
+ dim(" development, security, and deployment — installed directly\n") +
540
+ dim(" into your AI coding assistant.\n"),
541
+ );
542
+ console.log(
543
+ chalk.white(" ════════════════════════════════════════════════════════\n"),
544
+ );
545
+
546
+ // ── Step 1: CLI type ────────────────────────────────────────────
526
547
  let cliType = null;
527
548
  if (options.claude) {
528
549
  cliType = "claude";
@@ -535,11 +556,11 @@ program
535
556
  {
536
557
  type: "list",
537
558
  name: "cliType",
538
- message: "Which AI CLI are you configuring for?",
559
+ message: "Which AI CLI are you using?",
539
560
  choices: [
540
- { name: "Claude Code (Recommended)", value: "claude" },
541
- { name: "Gemini CLI", value: "gemini" },
542
- { name: "Codex CLI / OpenCode", value: "codex" },
561
+ { name: `${chalk.bold.cyan("Claude Code")} ${dim("(Recommended)")}`, value: "claude" },
562
+ { name: `${chalk.bold.white("Gemini CLI")}`, value: "gemini" },
563
+ { name: `${chalk.bold.white("Codex CLI")} ${dim("/ OpenCode")}`, value: "codex" },
543
564
  ],
544
565
  default: "claude",
545
566
  },
@@ -547,38 +568,52 @@ program
547
568
  cliType = answer.cliType;
548
569
  }
549
570
 
550
- // Step 2: Determine pack
571
+ // ── Step 2: Pack selection ──────────────────────────────────────
551
572
  let pack = options.pack || null;
552
573
  if (pack && !["content", "design", "dev", "full"].includes(pack)) {
553
- console.log(chalk.red(`\nUnknown pack: "${pack}"`));
554
- console.log(chalk.gray("Available packs: content, design, dev, full\n"));
574
+ console.log(chalk.red(`\n Unknown pack: "${pack}"`));
575
+ console.log(dim(" Available packs: content, design, dev, full\n"));
555
576
  process.exit(1);
556
577
  }
557
578
 
558
579
  if (!pack) {
559
- console.log("");
580
+ // Print the full menu so all options are always visible
581
+ const contentPack = INSTALL_PACKS.content;
582
+ const designPack = INSTALL_PACKS.design;
583
+ const devPack = INSTALL_PACKS.dev;
584
+
585
+ console.log(chalk.bold.white(" Available Skill Packs:\n"));
586
+ console.log(dim(" ──────────────────────────────────────────────────────────\n"));
587
+
588
+ console.log(` ${chalk.green.bold(" [1] 📝 Content Creation")} ${dim(`${contentPack.skills.length} skills`)}`);
589
+ console.log(dim(" For marketers & content teams"));
590
+ console.log(dim(" Writing, SEO, visuals, infographics, publishing\n"));
591
+
592
+ console.log(` ${chalk.magenta.bold(" [2] 🎨 Design")} ${dim(`${designPack.skills.length} skills`)}`);
593
+ console.log(dim(" For designers & creative teams"));
594
+ console.log(dim(" Figma capture, visual generation, infographics\n"));
595
+
596
+ console.log(` ${chalk.blue.bold(" [3] ⚡ Development")} ${dim(`${devPack.skills.length} skills`)}`);
597
+ console.log(dim(" For software engineers"));
598
+ console.log(dim(" SPARC workflow, security, deployment, git, publishing\n"));
599
+
600
+ console.log(` ${orange.bold(" [4] 🚀 Full")} ${dim("all skills")}`);
601
+ console.log(dim(" Everything — all packs combined\n"));
602
+
603
+ console.log(dim(" ──────────────────────────────────────────────────────────"));
604
+ console.log(dim(" You can add more packs later with: npx myaidev-method init --pack <name>\n"));
605
+
606
+ const packMap = { "1": "content", "2": "design", "3": "dev", "4": "full" };
560
607
  const answer = await inquirer.prompt([
561
608
  {
562
609
  type: "list",
563
610
  name: "pack",
564
- message: "What do you want to use MyAIDev Method for?",
611
+ message: "Select a pack to install:",
565
612
  choices: [
566
- {
567
- name: `${chalk.green("Content Creation")} ${chalk.gray("— For marketers: writing, SEO, visuals, publishing")}`,
568
- value: "content",
569
- },
570
- {
571
- name: `${chalk.magenta("Design")} ${chalk.gray("— For designers: Figma capture, visual generation")}`,
572
- value: "design",
573
- },
574
- {
575
- name: `${chalk.blue("Development")} ${chalk.gray("— For engineers: SPARC, security, deploy, git")}`,
576
- value: "dev",
577
- },
578
- {
579
- name: `${chalk.yellow("Full")} ${chalk.gray("— Everything (all skills)")}`,
580
- value: "full",
581
- },
613
+ { name: `${chalk.green("1")} 📝 Content Creation`, value: "content" },
614
+ { name: `${chalk.magenta("2")} 🎨 Design`, value: "design" },
615
+ { name: `${chalk.blue("3")} ⚡ Development`, value: "dev" },
616
+ { name: `${orange("4")} 🚀 Full (all skills)`, value: "full" },
582
617
  ],
583
618
  },
584
619
  ]);
@@ -588,17 +623,24 @@ program
588
623
  // Resolve skill list
589
624
  let skillList;
590
625
  let packLabel;
626
+ let packEmoji;
591
627
  if (pack === "full") {
592
- skillList = null; // null = install all
593
- packLabel = "Full (all skills)";
628
+ skillList = null;
629
+ packLabel = "Full";
630
+ packEmoji = "🚀";
594
631
  } else {
595
632
  const packDef = INSTALL_PACKS[pack];
596
633
  skillList = packDef.skills;
597
- packLabel = `${packDef.name} — ${packDef.audience}`;
634
+ packLabel = packDef.name;
635
+ packEmoji = pack === "content" ? "📝" : pack === "design" ? "🎨" : "⚡";
598
636
  }
599
637
 
600
- // Step 3: Install
601
- const spinner = ora(`Installing ${packLabel}...`).start();
638
+ // ── Step 3: Install ─────────────────────────────────────────────
639
+ console.log("");
640
+ const spinner = ora({
641
+ text: `Installing ${packEmoji} ${packLabel} pack for ${cliType}...`,
642
+ color: "cyan",
643
+ }).start();
602
644
 
603
645
  if (cliType === "claude") {
604
646
  await setupClaude(cwd, skillList);
@@ -608,68 +650,73 @@ program
608
650
  await setupCodex(cwd, skillList);
609
651
  }
610
652
 
653
+ const skillCount = skillList ? skillList.length : 38;
611
654
  spinner.succeed(
612
- chalk.green(`Successfully initialized ${cliType} with ${packLabel}!`),
655
+ chalk.green(`${packEmoji} ${packLabel} pack installed — ${skillCount} skills ready!`),
613
656
  );
614
657
 
615
- // Display ASCII banner
616
- console.log(getASCIIBanner());
617
- console.log(getSPARCBreakdown());
618
- console.log(getInitSuccessMessage(cliType));
658
+ // ── Summary ─────────────────────────────────────────────────────
659
+ console.log(
660
+ chalk.white("\n ════════════════════════════════════════════════════════\n"),
661
+ );
662
+ console.log(chalk.bold.white(" Installed Skills:\n"));
619
663
 
620
- // Display installed skills summary
621
- if (cliType === "claude") {
622
- const installedCount = skillList
623
- ? skillList.length
624
- : (await fs.readdir(path.join(cwd, ".claude", "skills"))).filter(
625
- async (d) => (await fs.stat(path.join(cwd, ".claude", "skills", d))).isDirectory()
626
- ).length;
627
-
628
- console.log(chalk.magenta(`\n🧠 Skills Installed (.claude/skills/):`));
629
- console.log(chalk.gray(` ${packLabel} ${skillList ? skillList.length : 'all'} skills\n`));
630
-
631
- if (pack === "content" || pack === "full") {
632
- console.log(chalk.green(" Content: myai-content-writer, myai-content-production-coordinator, myai-content-ideation"));
633
- console.log(chalk.green(" Visual: myai-visual-generator, myai-infographic"));
634
- console.log(chalk.yellow(" Publishing: wordpress, payloadcms, docusaurus, mintlify, astro"));
635
- }
636
- if (pack === "design" || pack === "full") {
637
- console.log(chalk.magenta(" Design: myaidev-figma, myaidev-figma-configure"));
638
- console.log(chalk.magenta(" Visual: myai-visual-generator, myai-infographic"));
639
- }
640
- if (pack === "dev" || pack === "full") {
641
- console.log(chalk.blue(" SPARC: myaidev-workflow, myaidev-architect, myaidev-coder, myaidev-tester"));
642
- console.log(chalk.cyan(" Git: git-workflow (pr, release, sync, hotfix)"));
643
- console.log(chalk.red(" Security: security-tester, security-auditor"));
644
- console.log(chalk.blue(" Deploy: deployer, coolify-deployer, openstack-manager"));
645
- console.log(chalk.blue(" Skills: myai-skill-builder, skill-contributor"));
664
+ if (pack === "content" || pack === "full") {
665
+ console.log(chalk.green(" 📝 Content ") + dim("myai-content-writer, myai-content-production-coordinator"));
666
+ console.log(chalk.green(" 🎯 SEO/Quality ") + dim("myai-content-verifier, myai-content-ideation"));
667
+ console.log(chalk.green(" 🖼 Visual ") + dim("myai-visual-generator, myai-infographic"));
668
+ console.log(chalk.yellow(" 📤 Publishing ") + dim("wordpress, payloadcms, docusaurus, mintlify, astro"));
669
+ }
670
+ if (pack === "design" || pack === "full") {
671
+ console.log(chalk.magenta(" 🎨 Design ") + dim("myaidev-figma, myaidev-figma-configure"));
672
+ if (pack === "design") {
673
+ console.log(chalk.magenta(" 🖼 Visual ") + dim("myai-visual-generator, myai-infographic"));
646
674
  }
647
- console.log(chalk.gray(" Config: configure, company-config, myai-configurator"));
675
+ }
676
+ if (pack === "dev" || pack === "full") {
677
+ console.log(chalk.blue(" ⚡ SPARC ") + dim("myaidev-workflow, architect, coder, tester, reviewer, documenter"));
678
+ console.log(chalk.blue(" 🔧 Tools ") + dim("analyze, debug, refactor, performance, migrate"));
679
+ console.log(chalk.cyan(" 🔀 Git ") + dim("git-workflow (pr, release, sync, hotfix)"));
680
+ console.log(chalk.red(" 🛡 Security ") + dim("security-tester, security-auditor"));
681
+ console.log(chalk.blue(" 📦 Deploy ") + dim("deployer, coolify-deployer, openstack-manager"));
682
+ console.log(chalk.blue(" 🧰 Skill Dev ") + dim("myai-skill-builder, skill-contributor"));
683
+ }
684
+ console.log(dim(" ⚙️ Config configure, company-config, myai-configurator"));
648
685
 
649
- console.log(chalk.cyan("\n⚙️ Get started:"));
650
- console.log(
651
- chalk.white(" 1. npx myaidev-method login") +
652
- chalk.gray(" — authenticate with the marketplace"),
653
- );
654
- console.log(
655
- chalk.white(" 2. npx myaidev-method addon list") +
656
- chalk.gray(" — browse available skills"),
657
- );
658
- console.log(
659
- chalk.white(" 3. npx myaidev-method addon install <name>") +
660
- chalk.gray(" — install a skill"),
661
- );
662
- console.log(
663
- chalk.gray("\n • Use the configure skill to set up platform credentials"),
664
- );
665
- console.log(
666
- chalk.gray(" • Add more skills later: npx myaidev-method init --claude --pack <pack>"),
667
- );
668
- console.log(
669
- chalk.gray(" Visit: https://github.com/myaione/myaidev-method"),
670
- );
686
+ // ── Next steps ──────────────────────────────────────────────────
687
+ console.log(
688
+ chalk.white("\n ════════════════════════════════════════════════════════\n"),
689
+ );
690
+ console.log(chalk.bold.white(" Next Steps:\n"));
691
+ console.log(
692
+ chalk.white(" 1. ") + chalk.cyan("Restart your AI CLI") + dim(" to load the new skills"),
693
+ );
694
+ console.log(
695
+ chalk.white(" 2. ") + chalk.cyan("npx myaidev-method login") + dim(" — connect to the marketplace"),
696
+ );
697
+ console.log(
698
+ chalk.white(" 3. ") + dim("Start using skills naturally in conversation, e.g.:"),
699
+ );
700
+
701
+ if (pack === "content") {
702
+ console.log(dim(' "Write a blog post about AI in healthcare"'));
703
+ } else if (pack === "design") {
704
+ console.log(dim(' "Capture the homepage of stripe.com into Figma"'));
705
+ } else if (pack === "dev") {
706
+ console.log(dim(' "Build a REST API for user management"'));
707
+ } else {
708
+ console.log(dim(' "Build a REST API" or "Write a blog post about AI"'));
671
709
  }
672
- console.log(chalk.cyan(`\n🔄 Restart ${cliType} to load skills!`));
710
+
711
+ console.log(
712
+ dim("\n • Add more packs: ") + chalk.white("npx myaidev-method init --pack <name>"),
713
+ );
714
+ console.log(
715
+ dim(" • Browse skills: ") + chalk.white("npx myaidev-method addon list"),
716
+ );
717
+ console.log(
718
+ dim(" • Documentation: ") + chalk.white("https://github.com/myaione/myaidev-method\n"),
719
+ );
673
720
  } catch (error) {
674
721
  if (error.name === 'ExitPromptError') {
675
722
  console.log(chalk.gray("\nCancelled.\n"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myaidev-method",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "description": "Comprehensive development framework with SPARC methodology for AI-assisted software development, security testing (PTES, OWASP, penetration testing, compliance auditing), AI visual content generation (Gemini, OpenAI GPT Image 1.5, Imagen, FLUX 2, Veo 3), OpenStack VM management, multi-platform publishing (WordPress, PayloadCMS, Astro, Docusaurus, Mintlify), and Coolify deployment",
5
5
  "mcpName": "io.github.myaione/myaidev-method",
6
6
  "main": "src/index.js",