@skilly-hand/skilly-hand 0.26.7 → 0.27.0

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/CHANGELOG.md CHANGED
@@ -16,6 +16,21 @@ All notable changes to this project are documented in this file.
16
16
  ### Removed
17
17
  - _None._
18
18
 
19
+ ## [0.27.0] - 2026-05-16
20
+ [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.27.0)
21
+
22
+ ### Added
23
+ - _None._
24
+
25
+ ### Changed
26
+ - _None._
27
+
28
+ ### Fixed
29
+ - _None._
30
+
31
+ ### Removed
32
+ - _None._
33
+
19
34
  ## [0.26.7] - 2026-05-12
20
35
  [View on npm](https://www.npmjs.com/package/@skilly-hand/skilly-hand/v/0.26.7)
21
36
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/skilly-hand",
3
- "version": "0.26.7",
3
+ "version": "0.27.0",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "type": "module",
6
6
  "repository": {
@@ -28,6 +28,7 @@
28
28
  "engines": {
29
29
  "node": ">=22.0.0"
30
30
  },
31
+ "packageManager": "pnpm@11.1.2",
31
32
  "scripts": {
32
33
  "build": "node ./scripts/build-catalog-index.mjs",
33
34
  "catalog:check": "node ./scripts/check-catalog.mjs",
@@ -53,11 +54,11 @@
53
54
  "detect": "node ./packages/cli/src/bin.js detect",
54
55
  "list": "node ./packages/cli/src/bin.js list",
55
56
  "doctor": "node ./packages/cli/src/bin.js doctor",
56
- "site:dev": "npm run dev -w @skilly-hand/site",
57
- "site:build": "npm run build -w @skilly-hand/site",
58
- "site:preview": "npm run preview -w @skilly-hand/site"
57
+ "site:dev": "pnpm --filter @skilly-hand/site dev",
58
+ "site:build": "pnpm --filter @skilly-hand/site build",
59
+ "site:preview": "pnpm --filter @skilly-hand/site preview"
59
60
  },
60
61
  "dependencies": {
61
- "inquirer": "13.4.1"
62
+ "@inquirer/prompts": "8.4.3"
62
63
  }
63
64
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/catalog",
3
- "version": "0.26.7",
3
+ "version": "0.27.0",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/cli",
3
- "version": "0.26.7",
3
+ "version": "0.27.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,4 +1,9 @@
1
- import inquirer from "inquirer";
1
+ import {
2
+ checkbox as checkboxPrompt,
3
+ confirm as confirmPrompt,
4
+ search as searchPrompt,
5
+ select as selectPrompt
6
+ } from "@inquirer/prompts";
2
7
  import { filterCommands, getInteractiveCommands } from "./command-registry.js";
3
8
 
4
9
  function writeBlock(write, title, body) {
@@ -74,21 +79,25 @@ const COMMAND_HINTS = {
74
79
  uninstall: "Tip: run `npx skilly-hand install` anytime to restore managed files."
75
80
  };
76
81
 
82
+ const DEFAULT_PROMPT_FNS = {
83
+ checkbox: checkboxPrompt,
84
+ confirm: confirmPrompt,
85
+ search: searchPrompt,
86
+ select: selectPrompt
87
+ };
88
+
77
89
  export function createInquirerInteractiveUi({
78
- prompt = (questions) => inquirer.prompt(questions),
90
+ promptFns = {},
79
91
  write = (value) => process.stdout.write(value)
80
92
  } = {}) {
93
+ const prompts = { ...DEFAULT_PROMPT_FNS, ...promptFns };
94
+
81
95
  async function confirm({ message, defaultValue = false }) {
82
96
  try {
83
- const response = await prompt([
84
- {
85
- type: "confirm",
86
- name: "confirmed",
87
- message: String(message),
88
- default: defaultValue
89
- }
90
- ]);
91
- return Boolean(response.confirmed);
97
+ return Boolean(await prompts.confirm({
98
+ message: String(message),
99
+ default: defaultValue
100
+ }));
92
101
  } catch (error) {
93
102
  if (error?.name === "ExitPromptError") return false;
94
103
  throw error;
@@ -100,21 +109,17 @@ export function createInquirerInteractiveUi({
100
109
  writeBlock(write, "Guided Home", buildGuidedHomeIntro());
101
110
 
102
111
  while (true) {
103
- const { command } = await prompt([
104
- {
105
- type: "search",
106
- name: "command",
107
- message: `${header}: choose a command`,
108
- source: async (term) =>
109
- filterCommands(commands, term).map((item) => ({
110
- name: commandChoiceName(item),
111
- value: item.value,
112
- description: `${item.bestFor} | aliases: ${(item.aliases || []).join(", ") || "none"}`
113
- })),
114
- default: "install",
115
- pageSize: 10
116
- }
117
- ]);
112
+ const command = await prompts.search({
113
+ message: `${header}: choose a command`,
114
+ source: async (term) =>
115
+ filterCommands(commands, term).map((item) => ({
116
+ name: commandChoiceName(item),
117
+ value: item.value,
118
+ description: `${item.bestFor} | aliases: ${(item.aliases || []).join(", ") || "none"}`
119
+ })),
120
+ default: "install",
121
+ pageSize: 10
122
+ });
118
123
 
119
124
  if (command === "exit") return;
120
125
  if (command === "command-guide") {
@@ -129,27 +134,19 @@ export function createInquirerInteractiveUi({
129
134
 
130
135
  writeBlock(write, "Install Tips", installTipsBlock());
131
136
 
132
- const { selectedSkillIds } = await prompt([
133
- {
134
- type: "checkbox",
135
- name: "selectedSkillIds",
136
- message: "Select skills to install",
137
- choices: skillChoices,
138
- pageSize: 16
139
- }
140
- ]);
137
+ const selectedSkillIds = await prompts.checkbox({
138
+ message: "Select skills to install",
139
+ choices: skillChoices,
140
+ pageSize: 16
141
+ });
141
142
 
142
143
  writeBlock(write, "Assistant Target Tips", agentTipsBlock());
143
144
 
144
- const { selectedAgents } = await prompt([
145
- {
146
- type: "checkbox",
147
- name: "selectedAgents",
148
- message: "Select assistant targets",
149
- choices: agentChoices,
150
- pageSize: 12
151
- }
152
- ]);
145
+ const selectedAgents = await prompts.checkbox({
146
+ message: "Select assistant targets",
147
+ choices: agentChoices,
148
+ pageSize: 12
149
+ });
153
150
 
154
151
  const previewBundle = await actions.previewInstallBundle({
155
152
  selectedSkillIds,
@@ -157,17 +154,13 @@ export function createInquirerInteractiveUi({
157
154
  });
158
155
  writeBlock(write, "Install Preview", previewBundle?.text || "");
159
156
 
160
- const { installDecision } = await prompt([
161
- {
162
- type: "list",
163
- name: "installDecision",
164
- message: "Next action (type 'apply' to install, or 'menu' to go back)",
165
- choices: [
166
- { name: "Apply installation", value: "apply" },
167
- { name: "Back to command menu", value: "menu" }
168
- ]
169
- }
170
- ]);
157
+ const installDecision = await prompts.select({
158
+ message: "Next action (type 'apply' to install, or 'menu' to go back)",
159
+ choices: [
160
+ { name: "Apply installation", value: "apply" },
161
+ { name: "Back to command menu", value: "menu" }
162
+ ]
163
+ });
171
164
 
172
165
  if (installDecision === "apply") {
173
166
  const applyBundle = await actions.applyInstallBundle({
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/core",
3
- "version": "0.26.7",
3
+ "version": "0.27.0",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilly-hand/detectors",
3
- "version": "0.26.7",
3
+ "version": "0.27.0",
4
4
  "private": true,
5
5
  "type": "module"
6
6
  }
@@ -1,21 +0,0 @@
1
- [
2
- "accessibility-audit",
3
- "agents-root-orchestrator",
4
- "angular-guidelines",
5
- "figma-mcp-0to1",
6
- "frontend-design",
7
- "gsap-animation",
8
- "motion-animation",
9
- "output-optimizer",
10
- "project-security",
11
- "project-teacher",
12
- "prompt-engineering",
13
- "react-guidelines",
14
- "review-rangers",
15
- "roaster",
16
- "skill-creator",
17
- "spec-driven-development",
18
- "test-driven-development",
19
- "token-optimizer",
20
- "user-story-crafting"
21
- ]