@tydung26/product-kit 1.0.1 → 1.2.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/README.md CHANGED
@@ -23,19 +23,19 @@ pkit doctor # Diagnose installation issues
23
23
 
24
24
  ## Commands
25
25
 
26
- | Slash Command | Purpose |
27
- |---|---|
28
- | `/pkit:discover` | Discovery → customer slicing → clustered ideas → top picks |
29
- | `/pkit:market-intel` | Competitor profiles → feature matrix → whitespace → strategic recs |
30
- | `/pkit:roadmap` | NOW/NEXT/LATER table → risk register → exec narrative |
31
- | `/pkit:product-design` | PRD → brand guideline → wireframes → polished design |
26
+ | Slash Command | Purpose |
27
+ | ---------------------- | ------------------------------------------------------------------ |
28
+ | `/pkit:discover` | Discovery → customer slicing → clustered ideas → top picks |
29
+ | `/pkit:market-intel` | Competitor profiles → feature matrix → whitespace → strategic recs |
30
+ | `/pkit:roadmap` | NOW/NEXT/LATER table → risk register → exec narrative |
31
+ | `/pkit:product-design` | PRD → brand guideline → wireframes → polished design |
32
32
 
33
33
  ## Install Paths
34
34
 
35
- | Tool | Global path |
36
- |---|---|
37
- | Claude Code + OpenCode | `~/.claude/skills/` |
38
- | Antigravity | `~/.gemini/antigravity/skills/` |
35
+ | Tool | Global path |
36
+ | ---------------------- | ------------------------------- |
37
+ | Claude Code + OpenCode | `~/.claude/skills/` |
38
+ | Antigravity | `~/.gemini/antigravity/skills/` |
39
39
 
40
40
  ## License
41
41
 
@@ -0,0 +1,3 @@
1
+ import type { CAC } from 'cac';
2
+ export declare function registerAdd(cli: CAC): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAW/B,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,QAkCnC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerAdd = registerAdd;
4
+ const skills_1 = require("../../domains/skills");
5
+ const installation_1 = require("../../domains/installation");
6
+ const prompts_1 = require("../../domains/ui/prompts");
7
+ function registerAdd(cli) {
8
+ cli
9
+ .command('add [...skills]', 'Add specific skills (skips init setup)')
10
+ .option('--tool <tool>', 'Target tool (default: claude)')
11
+ .option('--scope <scope>', 'Scope (default: global)')
12
+ .action(async (skills, opts) => {
13
+ (0, prompts_1.intro)('pkit — add skills');
14
+ const tool = opts.tool ?? 'claude';
15
+ // Ask scope if not provided via flag
16
+ let scope = opts.scope;
17
+ if (!scope) {
18
+ scope = await (0, prompts_1.promptScopeSelection)() ?? undefined;
19
+ if (!scope)
20
+ return;
21
+ }
22
+ // If no skills named, show picker
23
+ let skillNames = skills;
24
+ if (skillNames.length === 0) {
25
+ const available = (0, skills_1.loadAvailableSkills)().map(s => s.name);
26
+ const selected = await (0, prompts_1.promptSkillSelection)(available);
27
+ if (!selected)
28
+ return;
29
+ skillNames = selected;
30
+ }
31
+ await (0, installation_1.installSkills)(skillNames, {
32
+ tools: tool,
33
+ scope: scope,
34
+ force: true,
35
+ });
36
+ (0, prompts_1.outro)('Done!');
37
+ });
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":";;AAWA,kCAkCC;AA5CD,iDAA2D;AAC3D,6DAA2D;AAC3D,sDAAoG;AAQpG,SAAgB,WAAW,CAAC,GAAQ;IAClC,GAAG;SACA,OAAO,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SACpE,MAAM,CAAC,eAAe,EAAE,+BAA+B,CAAC;SACxD,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAa,EAAE,EAAE;QAChD,IAAA,eAAK,EAAC,mBAAmB,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;QAEnC,qCAAqC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,IAAA,8BAAoB,GAAE,IAAI,SAAS,CAAC;YAClD,IAAI,CAAC,KAAK;gBAAE,OAAO;QACrB,CAAC;QAED,kCAAkC;QAClC,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAA,4BAAmB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAoB,EAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;QAED,MAAM,IAAA,4BAAa,EAAC,UAAU,EAAE;YAC9B,KAAK,EAAE,IAAgB;YACvB,KAAK,EAAE,KAAqB;YAC5B,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,OAAO,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/install/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAc/B,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,QA2CvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/install/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAa/B,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,QAuDvC"}
@@ -7,17 +7,18 @@ const prompts_1 = require("../../domains/ui/prompts");
7
7
  function registerInstall(cli) {
8
8
  cli
9
9
  .command('init [...skills]', 'Install PM commands to AI coding tools')
10
+ .alias('i')
10
11
  .option('--tool <tool>', 'Target tool: claude, antigravity, opencode, all')
11
- .option('--scope <scope>', 'Scope: global or project', { default: 'global' })
12
+ .option('--scope <scope>', 'Scope: global or project')
12
13
  .option('--force', 'Overwrite existing installations')
13
- .option('-y, --yes', 'Skip interactive prompts (installs all skills to all tools)')
14
+ .option('-y, --yes', 'Skip interactive prompts (installs all skills to claude, global)')
14
15
  .action(async (skills, opts) => {
15
16
  (0, prompts_1.intro)('pkit — PM skills installer');
16
- // Resolve tool: use flag, non-interactive default, or prompt
17
+ // Step 1: Which AI tool?
17
18
  let tool = opts.tool;
18
19
  if (!tool) {
19
20
  if (opts.yes) {
20
- tool = 'all';
21
+ tool = 'claude';
21
22
  }
22
23
  else {
23
24
  tool = await (0, prompts_1.promptToolSelection)() ?? undefined;
@@ -25,7 +26,7 @@ function registerInstall(cli) {
25
26
  return;
26
27
  }
27
28
  }
28
- // Resolve skill names: use args, or prompt, or all (with -y)
29
+ // Step 2: Which skills?
29
30
  let skillNames = skills;
30
31
  if (skillNames.length === 0) {
31
32
  const available = (0, skills_1.loadAvailableSkills)().map(s => s.name);
@@ -39,9 +40,21 @@ function registerInstall(cli) {
39
40
  skillNames = selected;
40
41
  }
41
42
  }
43
+ // Step 3: Global or project scope?
44
+ let scope = opts.scope;
45
+ if (!scope) {
46
+ if (opts.yes) {
47
+ scope = 'global';
48
+ }
49
+ else {
50
+ scope = await (0, prompts_1.promptScopeSelection)() ?? undefined;
51
+ if (!scope)
52
+ return;
53
+ }
54
+ }
42
55
  await (0, installation_1.installSkills)(skillNames, {
43
56
  tools: tool,
44
- scope: opts.scope,
57
+ scope: scope,
45
58
  force: opts.force,
46
59
  yes: opts.yes,
47
60
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/install/index.ts"],"names":[],"mappings":";;AAcA,0CA2CC;AAxDD,iDAA2D;AAC3D,6DAA2D;AAC3D,sDAAmG;AAWnG,SAAgB,eAAe,CAAC,GAAQ;IACtC,GAAG;SACA,OAAO,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;SACrE,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAC5E,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;SACrD,MAAM,CAAC,WAAW,EAAE,6DAA6D,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAiB,EAAE,EAAE;QACpD,IAAA,eAAK,EAAC,4BAA4B,CAAC,CAAC;QAEpC,6DAA6D;QAC7D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,IAAA,6BAAmB,GAAE,IAAI,SAAS,CAAC;gBAChD,IAAI,CAAC,IAAI;oBAAE,OAAO;YACpB,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAA,4BAAmB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAoB,EAAC,SAAS,CAAC,CAAC;gBACvD,IAAI,CAAC,QAAQ;oBAAE,OAAO;gBACtB,UAAU,GAAG,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,IAAA,4BAAa,EAAC,UAAU,EAAE;YAC9B,KAAK,EAAE,IAAgB;YACvB,KAAK,EAAE,IAAI,CAAC,KAAqB;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,kEAAkE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/install/index.ts"],"names":[],"mappings":";;AAaA,0CAuDC;AAnED,iDAA2D;AAC3D,6DAA2D;AAC3D,sDAAyH;AAUzH,SAAgB,eAAe,CAAC,GAAQ;IACtC,GAAG;SACA,OAAO,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;SACrE,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;SACrD,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;SACrD,MAAM,CAAC,WAAW,EAAE,kEAAkE,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAiB,EAAE,EAAE;QACpD,IAAA,eAAK,EAAC,4BAA4B,CAAC,CAAC;QAEpC,yBAAyB;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,QAAQ,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,IAAA,6BAAmB,GAAE,IAAI,SAAS,CAAC;gBAChD,IAAI,CAAC,IAAI;oBAAE,OAAO;YACpB,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAA,4BAAmB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAoB,EAAC,SAAS,CAAC,CAAC;gBACvD,IAAI,CAAC,QAAQ;oBAAE,OAAO;gBACtB,UAAU,GAAG,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,KAAK,GAAG,QAAQ,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,MAAM,IAAA,8BAAoB,GAAE,IAAI,SAAS,CAAC;gBAClD,IAAI,CAAC,KAAK;oBAAE,OAAO;YACrB,CAAC;QACH,CAAC;QAED,MAAM,IAAA,4BAAa,EAAC,UAAU,EAAE;YAC9B,KAAK,EAAE,IAAgB;YACvB,KAAK,EAAE,KAAqB;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,kEAAkE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/list/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAK/B,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,QAmBpC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/list/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAK/B,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,QAoBpC"}
@@ -7,6 +7,7 @@ const logger_1 = require("../../shared/logger");
7
7
  function registerList(cli) {
8
8
  cli
9
9
  .command('list', 'List available and installed PM skills')
10
+ .alias('ls')
10
11
  .action(() => {
11
12
  const available = (0, skills_1.loadAvailableSkills)();
12
13
  const installed = new Set((0, installation_1.getManifestEntries)().map(e => e.name));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/list/index.ts"],"names":[],"mappings":";;AAKA,oCAmBC;AAvBD,iDAA2D;AAC3D,6DAAgE;AAChE,gDAA0C;AAE1C,SAAgB,YAAY,CAAC,GAAQ;IACnC,GAAG;SACA,OAAO,CAAC,MAAM,EAAE,wCAAwC,CAAC;SACzD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,SAAS,GAAG,IAAA,4BAAmB,GAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,YAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;YACzE,2CAA2C;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtE,YAAG,CAAC,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3E,YAAG,CAAC,KAAK,CAAC,KAAK,cAAc,IAAI,SAAS,CAAC,MAAM,mBAAmB,CAAC,CAAC;QACtE,YAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/list/index.ts"],"names":[],"mappings":";;AAKA,oCAoBC;AAxBD,iDAA2D;AAC3D,6DAAgE;AAChE,gDAA0C;AAE1C,SAAgB,YAAY,CAAC,GAAQ;IACnC,GAAG;SACA,OAAO,CAAC,MAAM,EAAE,wCAAwC,CAAC;SACzD,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,SAAS,GAAG,IAAA,4BAAmB,GAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,YAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;YACzE,2CAA2C;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtE,YAAG,CAAC,KAAK,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3E,YAAG,CAAC,KAAK,CAAC,KAAK,cAAc,IAAI,SAAS,CAAC,MAAM,mBAAmB,CAAC,CAAC;QACtE,YAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/remove/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAO/B,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,QA4BtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/remove/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAO/B,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,QAoCtC"}
@@ -7,11 +7,17 @@ const logger_1 = require("../../shared/logger");
7
7
  function registerRemove(cli) {
8
8
  cli
9
9
  .command('remove [...skills]', 'Remove installed PM skills')
10
+ .alias('rm')
10
11
  .option('-y, --yes', 'Skip confirmation prompt')
12
+ .option('-a, --all', 'Remove all installed pkit skills')
11
13
  .action(async (skills, opts) => {
12
14
  (0, prompts_1.intro)('pkit — removing skills');
13
- // If no skills named, prompt to pick from installed
14
15
  let toRemove = skills;
16
+ // --all flag: remove everything installed
17
+ if (opts.all) {
18
+ toRemove = [...new Set((0, installation_1.getManifestEntries)().map(e => e.name))];
19
+ }
20
+ // If no skills named, prompt to pick from installed
15
21
  if (toRemove.length === 0) {
16
22
  const installedNames = [...new Set((0, installation_1.getManifestEntries)().map(e => e.name))];
17
23
  if (installedNames.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/remove/index.ts"],"names":[],"mappings":";;AAOA,wCA4BC;AAlCD,6DAA8E;AAC9E,sDAA6F;AAC7F,gDAA0C;AAI1C,SAAgB,cAAc,CAAC,GAAQ;IACrC,GAAG;SACA,OAAO,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;SAC3D,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAgB,EAAE,EAAE;QACnD,IAAA,eAAK,EAAC,wBAAwB,CAAC,CAAC;QAEhC,oDAAoD;QACpD,IAAI,QAAQ,GAAG,MAAM,CAAC;QACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,YAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAoB,EAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAa,EAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,EAAE,EAAE,CAAC;gBAAC,YAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAA,2BAAY,EAAC,QAAQ,CAAC,CAAC;QAC7B,IAAA,eAAK,EAAC,OAAO,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/remove/index.ts"],"names":[],"mappings":";;AAOA,wCAoCC;AA1CD,6DAA8E;AAC9E,sDAA6F;AAC7F,gDAA0C;AAI1C,SAAgB,cAAc,CAAC,GAAQ;IACrC,GAAG;SACA,OAAO,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;SAC3D,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAgB,EAAE,EAAE;QACnD,IAAA,eAAK,EAAC,wBAAwB,CAAC,CAAC;QAEhC,IAAI,QAAQ,GAAG,MAAM,CAAC;QAEtB,0CAA0C;QAC1C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,oDAAoD;QACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,YAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAoB,EAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAa,EAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,EAAE,EAAE,CAAC;gBAAC,YAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAA,2BAAY,EAAC,QAAQ,CAAC,CAAC;QAC7B,IAAA,eAAK,EAAC,OAAO,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAQ/B,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,QA2BtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAQ/B,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,QA4BtC"}
@@ -7,6 +7,7 @@ const logger_1 = require("../../shared/logger");
7
7
  function registerUpdate(cli) {
8
8
  cli
9
9
  .command('update [...skills]', 'Update installed PM skills to latest version')
10
+ .alias('u')
10
11
  .option('--tool <tool>', 'Target tool: claude, antigravity, opencode, all')
11
12
  .option('--scope <scope>', 'Scope: global or project', { default: 'global' })
12
13
  .action(async (skills, opts) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":";;AAQA,wCA2BC;AAlCD,6DAA8E;AAC9E,sDAAwD;AACxD,gDAA0C;AAK1C,SAAgB,cAAc,CAAC,GAAQ;IACrC,GAAG;SACA,OAAO,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;SAC7E,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAgB,EAAE,EAAE;QACnD,IAAA,eAAK,EAAC,wBAAwB,CAAC,CAAC;QAEhC,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,YAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,IAAA,2BAAY,EAAC,QAAQ,EAAE;YAC3B,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YACzB,KAAK,EAAE,IAAI,CAAC,KAAqB;YACjC,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SAC1B,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,iBAAiB,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":";;AAQA,wCA4BC;AAnCD,6DAA8E;AAC9E,sDAAwD;AACxD,gDAA0C;AAK1C,SAAgB,cAAc,CAAC,GAAQ;IACrC,GAAG;SACA,OAAO,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;SAC7E,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAgB,EAAE,EAAE;QACnD,IAAA,eAAK,EAAC,wBAAwB,CAAC,CAAC;QAEhC,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,iCAAkB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,YAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,IAAA,2BAAY,EAAC,QAAQ,EAAE;YAC3B,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YACzB,KAAK,EAAE,IAAI,CAAC,KAAqB;YACjC,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SAC1B,CAAC,CAAC;QAEH,IAAA,eAAK,EAAC,iBAAiB,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import * as p from '@clack/prompts';
2
- import type { ToolName } from '../../types';
2
+ import type { ToolName, InstallScope } from '../../types';
3
3
  export declare function promptToolSelection(): Promise<ToolName | null>;
4
4
  export declare function promptSkillSelection(skillNames: string[]): Promise<string[] | null>;
5
+ export declare function promptScopeSelection(): Promise<InstallScope | null>;
5
6
  export declare function promptConfirm(message: string): Promise<boolean>;
6
7
  export declare const intro: (title?: string, opts?: p.CommonOptions) => void, outro: (message?: string, opts?: p.CommonOptions) => void, spinner: ({ indicator, onCancel, output, cancelMessage, errorMessage, frames, delay, signal, ...opts }?: p.SpinnerOptions) => p.SpinnerResult, clackLog: {
7
8
  message: (message?: string | string[], { symbol, secondarySymbol, output, spacing, withGuide, }?: p.LogMessageOptions) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/domains/ui/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAYpE;AAGD,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAQzF;AAGD,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIrE;AAED,eAAO,MAAQ,KAAK,oDAAE,KAAK,sDAAE,OAAO,wIAAO,QAAQ;qBACo2K,CAAC,6EAA6E,CAAC;gCAA8D,CAAC;mCAAiE,CAAC;gCAA8D,CAAC;gCAA8D,CAAC;mCAAoG,CAAC;iCAA+D,CAAC;CADj1L,CAAC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/domains/ui/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG1D,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAWpE;AAGD,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAkBzF;AAGD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAUzE;AAGD,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIrE;AAED,eAAO,MAAQ,KAAK,oDAAE,KAAK,sDAAE,OAAO,wIAAO,QAAQ;qBACmtJ,CAAC,6EAA6E,CAAC;gCAA8D,CAAC;mCAAiE,CAAC;gCAA8D,CAAC;gCAA8D,CAAC;mCAAoG,CAAC;iCAA+D,CAAC;CADhsK,CAAC"}
@@ -36,17 +36,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.clackLog = exports.spinner = exports.outro = exports.intro = void 0;
37
37
  exports.promptToolSelection = promptToolSelection;
38
38
  exports.promptSkillSelection = promptSkillSelection;
39
+ exports.promptScopeSelection = promptScopeSelection;
39
40
  exports.promptConfirm = promptConfirm;
40
41
  const p = __importStar(require("@clack/prompts"));
41
- // Interactive multi-select for tool choice when --tool not provided
42
+ // Step 1: Which AI tool? Default: claude
42
43
  async function promptToolSelection() {
43
44
  const selected = await p.select({
44
45
  message: 'Install skills to which AI tool?',
45
46
  options: [
46
- { value: 'all', label: 'All tools', hint: 'Claude Code + Antigravity (recommended)' },
47
- { value: 'claude', label: 'Claude Code', hint: 'Also covers OpenCode (~/.claude/skills/)' },
47
+ { value: 'claude', label: 'Claude Code', hint: 'also covers OpenCode (recommended)' },
48
48
  { value: 'antigravity', label: 'Antigravity', hint: '~/.gemini/antigravity/skills/' },
49
- { value: 'opencode', label: 'OpenCode only', hint: '~/.config/opencode/skills/' },
49
+ { value: 'all', label: 'All tools', hint: 'Claude Code + Antigravity' },
50
50
  ],
51
51
  });
52
52
  if (p.isCancel(selected)) {
@@ -55,17 +55,41 @@ async function promptToolSelection() {
55
55
  }
56
56
  return selected;
57
57
  }
58
- // Interactive multi-select for skill names when none provided
58
+ // Step 2: Which skills? Default: all
59
59
  async function promptSkillSelection(skillNames) {
60
+ const allLabel = `All skills (${skillNames.length})`;
61
+ const choices = [
62
+ { value: '__all__', label: allLabel, hint: 'recommended' },
63
+ ...skillNames.map(n => ({ value: n, label: n })),
64
+ ];
60
65
  const selected = await p.multiselect({
61
66
  message: 'Select skills to install:',
62
- options: skillNames.map(n => ({ value: n, label: n })),
67
+ options: choices,
63
68
  required: true,
64
69
  });
65
70
  if (p.isCancel(selected)) {
66
71
  p.cancel('Cancelled.');
67
72
  return null;
68
73
  }
74
+ const result = selected;
75
+ // If "All skills" was selected, return full list
76
+ if (result.includes('__all__'))
77
+ return skillNames;
78
+ return result;
79
+ }
80
+ // Step 3: Global or project scope?
81
+ async function promptScopeSelection() {
82
+ const selected = await p.select({
83
+ message: 'Install to global or project scope?',
84
+ options: [
85
+ { value: 'global', label: 'Global', hint: '~/.claude/skills/ (recommended)' },
86
+ { value: 'project', label: 'Project', hint: '.claude/skills/ in current directory' },
87
+ ],
88
+ });
89
+ if (p.isCancel(selected)) {
90
+ p.cancel('Cancelled.');
91
+ return null;
92
+ }
69
93
  return selected;
70
94
  }
71
95
  // Confirm destructive actions
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/domains/ui/prompts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kDAYC;AAGD,oDAQC;AAGD,sCAIC;AAlCD,kDAAoC;AAGpC,oEAAoE;AAC7D,KAAK,UAAU,mBAAmB;IACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,MAAM,CAAW;QACxC,OAAO,EAAE,kCAAkC;QAC3C,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,yCAAyC,EAAE;YACrF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,0CAA0C,EAAE;YAC3F,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,+BAA+B,EAAE;YACrF,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,4BAA4B,EAAE;SAClF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAClE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8DAA8D;AACvD,KAAK,UAAU,oBAAoB,CAAC,UAAoB;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,WAAW,CAAS;QAC3C,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAClE,OAAO,QAAoB,CAAC;AAC9B,CAAC;AAED,8BAA8B;AACvB,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,EAAa,CAAC;AACvB,CAAC;AAEc,aAAK,GAAoC,CAAC,QAAnC,aAAK,GAA6B,CAAC,QAA5B,eAAO,GAAoB,CAAC,UAAd,gBAAQ,GAAK,CAAC,KAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/domains/ui/prompts.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,11 +4,13 @@ const setup_1 = require("./cli/setup");
4
4
  const install_1 = require("./commands/install");
5
5
  const list_1 = require("./commands/list");
6
6
  const update_1 = require("./commands/update");
7
+ const add_1 = require("./commands/add");
7
8
  const remove_1 = require("./commands/remove");
8
9
  const config_1 = require("./commands/config");
9
10
  const doctor_1 = require("./commands/doctor");
10
11
  const cli = (0, setup_1.createCli)();
11
12
  (0, install_1.registerInstall)(cli);
13
+ (0, add_1.registerAdd)(cli);
12
14
  (0, list_1.registerList)(cli);
13
15
  (0, update_1.registerUpdate)(cli);
14
16
  (0, remove_1.registerRemove)(cli);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,uCAAwC;AACxC,gDAAqD;AACrD,0CAA+C;AAC/C,8CAAmD;AACnD,8CAAmD;AACnD,8CAAmD;AACnD,8CAAmD;AAEnD,MAAM,GAAG,GAAG,IAAA,iBAAS,GAAE,CAAC;AAExB,IAAA,yBAAe,EAAC,GAAG,CAAC,CAAC;AACrB,IAAA,mBAAY,EAAC,GAAG,CAAC,CAAC;AAClB,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AACpB,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AACpB,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AACpB,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AAEpB,gCAAgC;AAChC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,GAAG,CAAC,UAAU,EAAE,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,uCAAwC;AACxC,gDAAqD;AACrD,0CAA+C;AAC/C,8CAAmD;AACnD,wCAA6C;AAC7C,8CAAmD;AACnD,8CAAmD;AACnD,8CAAmD;AAEnD,MAAM,GAAG,GAAG,IAAA,iBAAS,GAAE,CAAC;AAExB,IAAA,yBAAe,EAAC,GAAG,CAAC,CAAC;AACrB,IAAA,iBAAW,EAAC,GAAG,CAAC,CAAC;AACjB,IAAA,mBAAY,EAAC,GAAG,CAAC,CAAC;AAClB,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AACpB,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AACpB,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AACpB,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AAEpB,gCAAgC;AAChC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,GAAG,CAAC,UAAU,EAAE,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tydung26/product-kit",
3
- "version": "1.0.1",
3
+ "version": "1.2.0",
4
4
  "description": "🐳 Product engineer skills kit",
5
5
  "bin": {
6
6
  "pkit": "bin/pkit.js"
@@ -10,7 +10,7 @@
10
10
  "build": "tsc",
11
11
  "dev": "tsx src/index.ts",
12
12
  "lint": "tsc --noEmit",
13
- "test": "node --test tests/*.test.mjs",
13
+ "test": "vitest run",
14
14
  "prepublishOnly": "npm run lint && npm run build && npm test"
15
15
  },
16
16
  "engines": {
@@ -45,6 +45,7 @@
45
45
  "@types/fs-extra": "^11.0.4",
46
46
  "@types/node": "^25.3.0",
47
47
  "tsx": "^4.21.0",
48
- "typescript": "^5.9.3"
48
+ "typescript": "^5.9.3",
49
+ "vitest": "^4.0.18"
49
50
  }
50
51
  }