myaidev-method 0.3.5 → 0.3.6

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 +140 -75
  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.6")
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,70 @@ 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
+ console.log(
581
+ dim("\n Choose a skill pack based on your role. You can always\n") +
582
+ dim(" add more packs later with: ") +
583
+ chalk.white("npx myaidev-method init --pack <name>\n"),
584
+ );
585
+
586
+ // Build rich pack descriptions
587
+ const contentPack = INSTALL_PACKS.content;
588
+ const designPack = INSTALL_PACKS.design;
589
+ const devPack = INSTALL_PACKS.dev;
590
+
560
591
  const answer = await inquirer.prompt([
561
592
  {
562
593
  type: "list",
563
594
  name: "pack",
564
- message: "What do you want to use MyAIDev Method for?",
595
+ message: "Select a skill pack to install:",
565
596
  choices: [
597
+ new inquirer.Separator(dim(" ─── Skill Packs ──────────────────────────────────────")),
566
598
  {
567
- name: `${chalk.green("Content Creation")} ${chalk.gray("— For marketers: writing, SEO, visuals, publishing")}`,
599
+ name: [
600
+ ` ${chalk.green.bold("📝 Content Creation")} ${dim(`${contentPack.skills.length} skills`)}`,
601
+ ` ${dim("For marketers & content teams")}`,
602
+ ` ${dim("Writing, SEO, visuals, infographics, multi-platform publishing")}`,
603
+ ].join("\n"),
568
604
  value: "content",
605
+ short: "Content Creation",
569
606
  },
570
607
  {
571
- name: `${chalk.magenta("Design")} ${chalk.gray("— For designers: Figma capture, visual generation")}`,
608
+ name: [
609
+ ` ${chalk.magenta.bold("🎨 Design")} ${dim(`${designPack.skills.length} skills`)}`,
610
+ ` ${dim("For designers & creative teams")}`,
611
+ ` ${dim("Figma capture, visual generation, infographics")}`,
612
+ ].join("\n"),
572
613
  value: "design",
614
+ short: "Design",
573
615
  },
574
616
  {
575
- name: `${chalk.blue("Development")} ${chalk.gray("— For engineers: SPARC, security, deploy, git")}`,
617
+ name: [
618
+ ` ${chalk.blue.bold("⚡ Development")} ${dim(`${devPack.skills.length} skills`)}`,
619
+ ` ${dim("For software engineers")}`,
620
+ ` ${dim("SPARC workflow, security testing, deployment, git, publishing")}`,
621
+ ].join("\n"),
576
622
  value: "dev",
623
+ short: "Development",
577
624
  },
625
+ new inquirer.Separator(""),
578
626
  {
579
- name: `${chalk.yellow("Full")} ${chalk.gray("— Everything (all skills)")}`,
627
+ name: [
628
+ ` ${orange.bold("🚀 Full")} ${dim("38 skills")}`,
629
+ ` ${dim("Everything — all packs combined")}`,
630
+ ].join("\n"),
580
631
  value: "full",
632
+ short: "Full",
581
633
  },
634
+ new inquirer.Separator(dim(" ──────────────────────────────────────────────────────")),
582
635
  ],
583
636
  },
584
637
  ]);
@@ -588,17 +641,24 @@ program
588
641
  // Resolve skill list
589
642
  let skillList;
590
643
  let packLabel;
644
+ let packEmoji;
591
645
  if (pack === "full") {
592
- skillList = null; // null = install all
593
- packLabel = "Full (all skills)";
646
+ skillList = null;
647
+ packLabel = "Full";
648
+ packEmoji = "🚀";
594
649
  } else {
595
650
  const packDef = INSTALL_PACKS[pack];
596
651
  skillList = packDef.skills;
597
- packLabel = `${packDef.name} — ${packDef.audience}`;
652
+ packLabel = packDef.name;
653
+ packEmoji = pack === "content" ? "📝" : pack === "design" ? "🎨" : "⚡";
598
654
  }
599
655
 
600
- // Step 3: Install
601
- const spinner = ora(`Installing ${packLabel}...`).start();
656
+ // ── Step 3: Install ─────────────────────────────────────────────
657
+ console.log("");
658
+ const spinner = ora({
659
+ text: `Installing ${packEmoji} ${packLabel} pack for ${cliType}...`,
660
+ color: "cyan",
661
+ }).start();
602
662
 
603
663
  if (cliType === "claude") {
604
664
  await setupClaude(cwd, skillList);
@@ -608,68 +668,73 @@ program
608
668
  await setupCodex(cwd, skillList);
609
669
  }
610
670
 
671
+ const skillCount = skillList ? skillList.length : 38;
611
672
  spinner.succeed(
612
- chalk.green(`Successfully initialized ${cliType} with ${packLabel}!`),
673
+ chalk.green(`${packEmoji} ${packLabel} pack installed — ${skillCount} skills ready!`),
613
674
  );
614
675
 
615
- // Display ASCII banner
616
- console.log(getASCIIBanner());
617
- console.log(getSPARCBreakdown());
618
- console.log(getInitSuccessMessage(cliType));
676
+ // ── Summary ─────────────────────────────────────────────────────
677
+ console.log(
678
+ chalk.white("\n ════════════════════════════════════════════════════════\n"),
679
+ );
680
+ console.log(chalk.bold.white(" Installed Skills:\n"));
619
681
 
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"));
682
+ if (pack === "content" || pack === "full") {
683
+ console.log(chalk.green(" 📝 Content ") + dim("myai-content-writer, myai-content-production-coordinator"));
684
+ console.log(chalk.green(" 🎯 SEO/Quality ") + dim("myai-content-verifier, myai-content-ideation"));
685
+ console.log(chalk.green(" 🖼 Visual ") + dim("myai-visual-generator, myai-infographic"));
686
+ console.log(chalk.yellow(" 📤 Publishing ") + dim("wordpress, payloadcms, docusaurus, mintlify, astro"));
687
+ }
688
+ if (pack === "design" || pack === "full") {
689
+ console.log(chalk.magenta(" 🎨 Design ") + dim("myaidev-figma, myaidev-figma-configure"));
690
+ if (pack === "design") {
691
+ console.log(chalk.magenta(" 🖼 Visual ") + dim("myai-visual-generator, myai-infographic"));
646
692
  }
647
- console.log(chalk.gray(" Config: configure, company-config, myai-configurator"));
693
+ }
694
+ if (pack === "dev" || pack === "full") {
695
+ console.log(chalk.blue(" ⚡ SPARC ") + dim("myaidev-workflow, architect, coder, tester, reviewer, documenter"));
696
+ console.log(chalk.blue(" 🔧 Tools ") + dim("analyze, debug, refactor, performance, migrate"));
697
+ console.log(chalk.cyan(" 🔀 Git ") + dim("git-workflow (pr, release, sync, hotfix)"));
698
+ console.log(chalk.red(" 🛡 Security ") + dim("security-tester, security-auditor"));
699
+ console.log(chalk.blue(" 📦 Deploy ") + dim("deployer, coolify-deployer, openstack-manager"));
700
+ console.log(chalk.blue(" 🧰 Skill Dev ") + dim("myai-skill-builder, skill-contributor"));
701
+ }
702
+ console.log(dim(" ⚙️ Config configure, company-config, myai-configurator"));
648
703
 
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
- );
704
+ // ── Next steps ──────────────────────────────────────────────────
705
+ console.log(
706
+ chalk.white("\n ════════════════════════════════════════════════════════\n"),
707
+ );
708
+ console.log(chalk.bold.white(" Next Steps:\n"));
709
+ console.log(
710
+ chalk.white(" 1. ") + chalk.cyan("Restart your AI CLI") + dim(" to load the new skills"),
711
+ );
712
+ console.log(
713
+ chalk.white(" 2. ") + chalk.cyan("npx myaidev-method login") + dim(" — connect to the marketplace"),
714
+ );
715
+ console.log(
716
+ chalk.white(" 3. ") + dim("Start using skills naturally in conversation, e.g.:"),
717
+ );
718
+
719
+ if (pack === "content") {
720
+ console.log(dim(' "Write a blog post about AI in healthcare"'));
721
+ } else if (pack === "design") {
722
+ console.log(dim(' "Capture the homepage of stripe.com into Figma"'));
723
+ } else if (pack === "dev") {
724
+ console.log(dim(' "Build a REST API for user management"'));
725
+ } else {
726
+ console.log(dim(' "Build a REST API" or "Write a blog post about AI"'));
671
727
  }
672
- console.log(chalk.cyan(`\n🔄 Restart ${cliType} to load skills!`));
728
+
729
+ console.log(
730
+ dim("\n • Add more packs: ") + chalk.white("npx myaidev-method init --pack <name>"),
731
+ );
732
+ console.log(
733
+ dim(" • Browse skills: ") + chalk.white("npx myaidev-method addon list"),
734
+ );
735
+ console.log(
736
+ dim(" • Documentation: ") + chalk.white("https://github.com/myaione/myaidev-method\n"),
737
+ );
673
738
  } catch (error) {
674
739
  if (error.name === 'ExitPromptError') {
675
740
  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.6",
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",