pikakit 3.9.81 → 3.9.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Transform your AI Agent into a FAANG-level engineering team
6
6
 
7
- [![npm version](https://img.shields.io/badge/npm-v3.9.81-7c3aed?style=for-the-badge&logo=npm&logoColor=white&labelColor=18181b)](https://www.npmjs.com/package/pikakit)
7
+ [![npm version](https://img.shields.io/badge/npm-v3.9.82-7c3aed?style=for-the-badge&logo=npm&logoColor=white&labelColor=18181b)](https://www.npmjs.com/package/pikakit)
8
8
  [![Skills](https://img.shields.io/badge/skills-67-06b6d4?style=for-the-badge&labelColor=18181b)](https://github.com/pikakit/agent-skills)
9
9
  [![Agents](https://img.shields.io/badge/agents-26-f59e0b?style=for-the-badge&labelColor=18181b)](https://github.com/pikakit/agent-skills)
10
10
  [![Workflows](https://img.shields.io/badge/workflows-25-10b981?style=for-the-badge&labelColor=18181b)](https://github.com/pikakit/agent-skills)
@@ -418,7 +418,7 @@ UNLICENSED — See [LICENSE](LICENSE) for details.
418
418
 
419
419
  <div align="center">
420
420
 
421
- **⚡ PikaKit v3.9.81**
421
+ **⚡ PikaKit v3.9.82**
422
422
 
423
423
  *Composable Skills · Coordinated Agents · Intelligent Execution*
424
424
 
@@ -629,13 +629,24 @@ export async function run(spec) {
629
629
  // Final Success Box (compact) - THE ONLY OUTPUT
630
630
  stepLine();
631
631
 
632
- // Build compact summary
632
+ // Build compact summary — always show TOTAL counts (not just newly installed)
633
633
  const items = [];
634
634
  items.push(`${c.cyan("✓")} Skills: ${selectedSkills.length}`);
635
- if (workflowsInstalled > 0) items.push(`${c.cyan("✓")} Workflows: ${workflowsInstalled}`);
636
- if (agentsInstalled > 0) items.push(`${c.cyan("✓")} Agents: ${agentsInstalled}`);
637
- if (geminiInstalled) items.push(`${c.cyan("✓")} GEMINI.md`);
638
- if (archInstalled) items.push(`${c.cyan("")} ARCHITECTURE.md`);
635
+
636
+ // Count total workflows in target directory
637
+ const totalWorkflows = fs.existsSync(targetWorkflowsDir)
638
+ ? fs.readdirSync(targetWorkflowsDir).filter(f => f.endsWith(".md")).length
639
+ : 0;
640
+ if (totalWorkflows > 0) items.push(`${c.cyan("✓")} Workflows: ${totalWorkflows}`);
641
+
642
+ // Count total agents in target directory
643
+ const totalAgents = fs.existsSync(targetAgentsDir)
644
+ ? fs.readdirSync(targetAgentsDir).filter(f => f.endsWith(".md")).length
645
+ : 0;
646
+ if (totalAgents > 0) items.push(`${c.cyan("✓")} Agents: ${totalAgents}`);
647
+
648
+ if (fs.existsSync(geminiDest)) items.push(`${c.cyan("✓")} GEMINI.md`);
649
+ if (fs.existsSync(archDest)) items.push(`${c.cyan("✓")} ARCHITECTURE.md`);
639
650
  if (extensionInstalled) items.push(`${c.cyan("✓")} VS Code Extension`);
640
651
 
641
652
  console.log(boxen(items.join("\n"), {
@@ -688,11 +699,13 @@ export async function run(spec) {
688
699
 
689
700
  // Final success message (single clean box)
690
701
  stepLine();
702
+ stepLine();
691
703
  console.log(boxen(
692
704
  `${c.cyan("Next Steps:")}\n` +
693
- ` ${c.dim("1.")} Run ${c.cyan("npx kit")} to access CLI tools\n` +
694
- ` ${c.dim("2.")} Use ${c.cyan("/autopilot")} in your AI agent\n` +
695
- ` ${c.dim("3.")} Explore skills with ${c.cyan("npx kit list")}`,
705
+ ` ${c.dim("1.")} Use ${c.cyan("/build")} to create apps with multi-agent coordination\n` +
706
+ ` ${c.dim("2.")} Use ${c.cyan("/autopilot")} for autonomous end-to-end execution\n` +
707
+ ` ${c.dim("3.")} Use ${c.cyan("/think")} to brainstorm before coding\n` +
708
+ ` ${c.dim("4.")} Run ${c.cyan("npx kit list")} to explore all ${selectedSkills.length} installed skills`,
696
709
  {
697
710
  padding: 1,
698
711
  borderColor: "cyan",
@@ -701,5 +714,6 @@ export async function run(spec) {
701
714
  titleAlignment: "center"
702
715
  }
703
716
  ).split("\n").map(l => `${c.gray(S.branch)} ${l}`).join("\n"));
717
+ stepLine();
704
718
  step(`${c.green("✓")} ${c.bold("Installation Complete!")}`);
705
719
  }
package/bin/lib/ui.js CHANGED
@@ -4,8 +4,10 @@
4
4
 
5
5
  import kleur from "kleur";
6
6
  import boxen from "boxen";
7
- import { intro, outro, multiselect, select, confirm, isCancel, cancel, text } from "@clack/prompts";
8
- import ora from "ora";
7
+ import {
8
+ intro, outro, multiselect, select, confirm, isCancel, cancel, text,
9
+ spinner as clackSpinner, log as clackLog
10
+ } from "@clack/prompts";
9
11
  import gradient from "gradient-string";
10
12
 
11
13
  export { intro, outro, multiselect, select, confirm, isCancel, cancel, text };
@@ -23,40 +25,22 @@ const PIKAKIT_BANNER = `
23
25
  const pikaGradient = gradient(['#ffffff', '#bbbbbb', '#888888', '#555555']);
24
26
 
25
27
  /**
26
- * Create a spinner
28
+ * Create a spinner (uses @clack/prompts spinner to avoid rendering conflicts)
27
29
  */
28
30
  export function spinner() {
31
+ const s = clackSpinner();
29
32
  return {
30
- _s: null,
31
33
  start(msg) {
32
- this._s = ora({
33
- text: " " + msg,
34
- prefixText: "",
35
- color: "blue",
36
- spinner: {
37
- interval: 80,
38
- frames: ['◒', '◐', '◓', '◑']
39
- }
40
- }).start();
34
+ s.start(msg);
41
35
  },
42
36
  stop(msg) {
43
- if (this._s) {
44
- this._s.stopAndPersist({
45
- symbol: c.cyan(S.diamond),
46
- text: " " + msg
47
- });
48
- }
37
+ s.stop(msg);
49
38
  },
50
39
  fail(msg) {
51
- if (this._s) {
52
- this._s.stopAndPersist({
53
- symbol: c.red(S.cross),
54
- text: " " + msg
55
- });
56
- }
40
+ s.stop(msg, 1);
57
41
  },
58
42
  message(msg) {
59
- if (this._s) this._s.text = " " + msg;
43
+ s.message(msg);
60
44
  }
61
45
  };
62
46
  }
@@ -94,14 +78,14 @@ export const c = {
94
78
  // --- UI Functions ---
95
79
 
96
80
  /**
97
- * Print a step in the tree
81
+ * Print a step in the tree (uses @clack log to stay in rendering lifecycle)
98
82
  * @param {string} text - Step text
99
83
  * @param {string} [icon] - Icon to use
100
84
  * @param {keyof typeof c} [color] - Color name
101
85
  */
102
86
  export function step(text, icon = S.diamond, color = "cyan") {
103
87
  const colorFn = c[color] || c.cyan;
104
- console.log(`${colorFn(icon)} ${text}`);
88
+ clackLog.message(text, { symbol: colorFn(icon) });
105
89
  }
106
90
 
107
91
  /**
@@ -109,14 +93,14 @@ export function step(text, icon = S.diamond, color = "cyan") {
109
93
  * @param {string} text - Step text
110
94
  */
111
95
  export function activeStep(text) {
112
- console.log(`${c.blue(S.diamondFilled)} ${text}`);
96
+ clackLog.message(text, { symbol: c.blue(S.diamondFilled) });
113
97
  }
114
98
 
115
99
  /**
116
100
  * Print empty branch line
117
101
  */
118
102
  export function stepLine() {
119
- console.log(`${c.gray(S.branch)}`);
103
+ clackLog.message('', { symbol: '' });
120
104
  }
121
105
 
122
106
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pikakit",
3
- "version": "3.9.81",
3
+ "version": "3.9.82",
4
4
  "description": "PikaKit — Install 67 skills, 25 workflows, 26 agents into your AI project. One command.",
5
5
  "license": "MIT",
6
6
  "author": "pikakit <pikakit@gmail.com>",