@tydung26/product-kit 1.2.0 → 1.3.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
@@ -1,27 +1,41 @@
1
1
  # product-kit
2
2
 
3
- PM commands for Claude Code, Antigravity, and OpenCode AI assistants.
3
+ Product engineer skills kit for Claude Code, Antigravity, and OpenCode AI assistants.
4
4
 
5
5
  ## Install
6
6
 
7
7
  ```bash
8
+ # pnpm
9
+ pnpm add -g @tydung26/product-kit
10
+
11
+ # npm
8
12
  npm install -g @tydung26/product-kit
9
13
  ```
10
14
 
11
15
  ## Usage
12
16
 
13
17
  ```bash
14
- pkit init # Interactive: pick tool + commands
15
- pkit init --yes # Install all commands to all tools
16
- pkit list # Show available/installed commands
17
- pkit update # Update all installed commands
18
- pkit remove pkit:discover
19
- pkit config # View configuration
20
- pkit config set toolPaths.antigravity /custom/path
21
- pkit doctor # Diagnose installation issues
18
+ # Setup
19
+ pkit init # Interactive: pick tool skills → scope
20
+ pkit init --yes # Install all skills to claude (global)
21
+ pkit i # Alias for init
22
+
23
+ # Add skills (skip full init)
24
+ pkit add # Interactive: pick scope → skills
25
+ pkit add pkit:discover # Add specific skill (prompts for scope)
26
+ pkit add pkit:discover --scope global --tool claude
27
+
28
+ # Manage
29
+ pkit list # Show available/installed skills
30
+ pkit ls # Alias for list
31
+ pkit update # Update all installed skills (both scopes)
32
+ pkit u # Alias for update
33
+ pkit remove pkit:discover # Remove specific skill (both scopes)
34
+ pkit rm --all # Remove all installed skills
35
+ pkit doctor # Diagnose installation issues
22
36
  ```
23
37
 
24
- ## Commands
38
+ ## Skills
25
39
 
26
40
  | Slash Command | Purpose |
27
41
  | ---------------------- | ------------------------------------------------------------------ |
@@ -32,10 +46,10 @@ pkit doctor # Diagnose installation issues
32
46
 
33
47
  ## Install Paths
34
48
 
35
- | Tool | Global path |
36
- | ---------------------- | ------------------------------- |
37
- | Claude Code + OpenCode | `~/.claude/skills/` |
38
- | Antigravity | `~/.gemini/antigravity/skills/` |
49
+ | Tool | Global | Project |
50
+ | ---------------------- | ------------------------------- | ---------------------- |
51
+ | Claude Code + OpenCode | `~/.claude/skills/<skill>/` | `.claude/skills/<skill>/` |
52
+ | Antigravity | `~/.gemini/antigravity/skills/<skill>/` | `.agent/skills/<skill>/` |
39
53
 
40
54
  ## License
41
55
 
@@ -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,QAoCtC"}
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,QAqCtC"}
@@ -12,19 +12,20 @@ function registerRemove(cli) {
12
12
  .option('-a, --all', 'Remove all installed pkit skills')
13
13
  .action(async (skills, opts) => {
14
14
  (0, prompts_1.intro)('pkit — removing skills');
15
+ // Scan both global and project scopes for installed skills
16
+ const installed = (0, installation_1.scanInstalledSkills)();
15
17
  let toRemove = skills;
16
- // --all flag: remove everything installed
18
+ // --all flag: remove everything found
17
19
  if (opts.all) {
18
- toRemove = [...new Set((0, installation_1.getManifestEntries)().map(e => e.name))];
20
+ toRemove = installed;
19
21
  }
20
22
  // If no skills named, prompt to pick from installed
21
23
  if (toRemove.length === 0) {
22
- const installedNames = [...new Set((0, installation_1.getManifestEntries)().map(e => e.name))];
23
- if (installedNames.length === 0) {
24
+ if (installed.length === 0) {
24
25
  logger_1.log.warn('No skills installed.');
25
26
  return;
26
27
  }
27
- const selected = await (0, prompts_1.promptSkillSelection)(installedNames);
28
+ const selected = await (0, prompts_1.promptSkillSelection)(installed);
28
29
  if (!selected)
29
30
  return;
30
31
  toRemove = selected;
@@ -1 +1 @@
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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/remove/index.ts"],"names":[],"mappings":";;AAOA,wCAqCC;AA3CD,6DAA+E;AAC/E,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,2DAA2D;QAC3D,MAAM,SAAS,GAAG,IAAA,kCAAmB,GAAE,CAAC;QACxC,IAAI,QAAQ,GAAG,MAAM,CAAC;QAEtB,sCAAsC;QACtC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC;QAED,oDAAoD;QACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,YAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAoB,EAAC,SAAS,CAAC,CAAC;YACvD,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"}
@@ -12,10 +12,10 @@ function registerUpdate(cli) {
12
12
  .option('--scope <scope>', 'Scope: global or project', { default: 'global' })
13
13
  .action(async (skills, opts) => {
14
14
  (0, prompts_1.intro)('pkit — updating skills');
15
- // Default: update all installed skills
15
+ // Default: update all installed skills found in both scopes
16
16
  const toUpdate = skills.length
17
17
  ? skills
18
- : [...new Set((0, installation_1.getManifestEntries)().map(e => e.name))];
18
+ : (0, installation_1.scanInstalledSkills)();
19
19
  if (toUpdate.length === 0) {
20
20
  logger_1.log.warn('No skills installed. Run: pkit install');
21
21
  return;
@@ -1 +1 @@
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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":";;AAQA,wCA4BC;AAnCD,6DAA+E;AAC/E,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,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAA,kCAAmB,GAAE,CAAC;QAE1B,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"}
@@ -8,6 +8,5 @@ export type CopyResult = {
8
8
  status: 'failed';
9
9
  error: string;
10
10
  };
11
- export declare function copyCommandFile(srcFile: string, destBase: string, force: boolean): Promise<CopyResult>;
12
- export declare const copySkillDir: typeof copyCommandFile;
11
+ export declare function copySkillDir(srcDir: string, dirName: string, destBase: string, force: boolean): Promise<CopyResult>;
13
12
  //# sourceMappingURL=copy-skill-files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy-skill-files.d.ts","sourceRoot":"","sources":["../../../src/domains/installation/copy-skill-files.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAIxC,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CAqBrB;AAGD,eAAO,MAAM,YAAY,wBAAkB,CAAC"}
1
+ {"version":3,"file":"copy-skill-files.d.ts","sourceRoot":"","sources":["../../../src/domains/installation/copy-skill-files.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAIxC,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CAoBrB"}
@@ -1,33 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.copySkillDir = void 0;
4
- exports.copyCommandFile = copyCommandFile;
3
+ exports.copySkillDir = copySkillDir;
5
4
  const fs_1 = require("fs");
6
5
  const fs_extra_1 = require("fs-extra");
7
6
  const path_1 = require("path");
8
- // Safely copies a single command .md file to destBase/filename.md.
9
- // Validates paths to prevent directory traversal attacks.
10
- async function copyCommandFile(srcFile, destBase, force) {
11
- const filename = (0, path_1.basename)(srcFile);
12
- // Path traversal guard: resolved dest must be inside destBase
13
- const destFile = (0, path_1.join)(destBase, filename);
14
- if (!(0, path_1.resolve)(destFile).startsWith((0, path_1.resolve)(destBase))) {
15
- return { status: 'failed', error: `Path traversal attempt blocked for: ${filename}` };
7
+ // Copies a skill directory (e.g. skills/discover/) into destBase/<dirName>/
8
+ // Preserves folder structure so each skill lives in its own subdirectory.
9
+ async function copySkillDir(srcDir, dirName, destBase, force) {
10
+ const destDir = (0, path_1.join)(destBase, dirName);
11
+ // Path traversal guard
12
+ if (!(0, path_1.resolve)(destDir).startsWith((0, path_1.resolve)(destBase))) {
13
+ return { status: 'failed', error: `Path traversal attempt blocked for: ${dirName}` };
16
14
  }
17
- if ((0, fs_1.existsSync)(destFile) && !force) {
15
+ if ((0, fs_1.existsSync)(destDir) && !force) {
18
16
  return { status: 'skipped', reason: 'already installed (use --force to overwrite)' };
19
17
  }
20
18
  try {
21
19
  await (0, fs_extra_1.ensureDir)(destBase);
22
- if ((0, fs_1.existsSync)(destFile) && force)
23
- await (0, fs_extra_1.remove)(destFile);
24
- await (0, fs_extra_1.copy)(srcFile, destFile, { overwrite: force });
25
- return { status: 'installed', destPath: destFile };
20
+ if ((0, fs_1.existsSync)(destDir) && force)
21
+ await (0, fs_extra_1.remove)(destDir);
22
+ await (0, fs_extra_1.copy)(srcDir, destDir, { overwrite: force });
23
+ return { status: 'installed', destPath: destDir };
26
24
  }
27
25
  catch (err) {
28
26
  return { status: 'failed', error: err instanceof Error ? err.message : String(err) };
29
27
  }
30
28
  }
31
- // Legacy alias for any callers using the old name
32
- exports.copySkillDir = copyCommandFile;
33
29
  //# sourceMappingURL=copy-skill-files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy-skill-files.js","sourceRoot":"","sources":["../../../src/domains/installation/copy-skill-files.ts"],"names":[],"mappings":";;;AAWA,0CAyBC;AApCD,2BAAgC;AAChC,uCAAmD;AACnD,+BAA+C;AAO/C,mEAAmE;AACnE,0DAA0D;AACnD,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,QAAgB,EAChB,KAAc;IAEd,MAAM,QAAQ,GAAG,IAAA,eAAQ,EAAC,OAAO,CAAC,CAAC;IAEnC,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,uCAAuC,QAAQ,EAAE,EAAE,CAAC;IACxF,CAAC;IAED,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC;IACvF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,oBAAS,EAAC,QAAQ,CAAC,CAAC;QAC1B,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,IAAI,KAAK;YAAE,MAAM,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,IAAA,eAAI,EAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACvF,CAAC;AACH,CAAC;AAED,kDAAkD;AACrC,QAAA,YAAY,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"copy-skill-files.js","sourceRoot":"","sources":["../../../src/domains/installation/copy-skill-files.ts"],"names":[],"mappings":";;AAWA,oCAyBC;AApCD,2BAAgC;AAChC,uCAAmD;AACnD,+BAAqC;AAOrC,4EAA4E;AAC5E,0EAA0E;AACnE,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,OAAe,EACf,QAAgB,EAChB,KAAc;IAEd,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAExC,uBAAuB;IACvB,IAAI,CAAC,IAAA,cAAO,EAAC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,uCAAuC,OAAO,EAAE,EAAE,CAAC;IACvF,CAAC;IAED,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC;IACvF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,oBAAS,EAAC,QAAQ,CAAC,CAAC;QAC1B,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,IAAI,KAAK;YAAE,MAAM,IAAA,iBAAM,EAAC,OAAO,CAAC,CAAC;QACxD,MAAM,IAAA,eAAI,EAAC,MAAM,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACvF,CAAC;AACH,CAAC"}
@@ -5,5 +5,6 @@ export declare function removeSkills(names: string[]): Promise<void>;
5
5
  export declare function updateSkills(names: string[], opts: InstallOptions & {
6
6
  toolOverride?: boolean;
7
7
  }): Promise<void>;
8
+ export declare function scanInstalledSkills(): string[];
8
9
  export { getManifestEntries };
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/installation/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAA2C,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,aAAa,CAAC;AAW5D,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCxF;AAGD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE;AAID,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BpH;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/installation/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAA2C,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGjG,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,aAAa,CAAC;AAW5D,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCxF;AAID,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCjE;AAID,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BpH;AAID,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAqB9C;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -37,6 +37,7 @@ exports.getManifestEntries = void 0;
37
37
  exports.installSkills = installSkills;
38
38
  exports.removeSkills = removeSkills;
39
39
  exports.updateSkills = updateSkills;
40
+ exports.scanInstalledSkills = scanInstalledSkills;
40
41
  const fs_1 = require("fs");
41
42
  const path_1 = require("path");
42
43
  const skills_1 = require("../skills");
@@ -45,6 +46,7 @@ const copy_skill_files_1 = require("./copy-skill-files");
45
46
  const manifest_manager_1 = require("./manifest-manager");
46
47
  Object.defineProperty(exports, "getManifestEntries", { enumerable: true, get: function () { return manifest_manager_1.getManifestEntries; } });
47
48
  const logger_1 = require("../../shared/logger");
49
+ const paths_1 = require("../../shared/paths");
48
50
  // Read current package version for manifest tracking
49
51
  function getPkgVersion() {
50
52
  try {
@@ -69,7 +71,7 @@ async function installSkills(names, opts) {
69
71
  const pkgVersion = getPkgVersion();
70
72
  for (const skill of toInstall) {
71
73
  for (const destBase of destPaths) {
72
- const result = await (0, copy_skill_files_1.copyCommandFile)(skill.filePath, destBase, opts.force ?? false);
74
+ const result = await (0, copy_skill_files_1.copySkillDir)(skill.dirPath, skill.dirName, destBase, opts.force ?? false);
73
75
  if (result.status === 'installed') {
74
76
  logger_1.log.success(`Installed: ${skill.name} → ${result.destPath}`);
75
77
  (0, manifest_manager_1.addManifestEntry)({
@@ -89,24 +91,38 @@ async function installSkills(names, opts) {
89
91
  }
90
92
  }
91
93
  }
92
- // Remove skills by name, deleting files from all recorded install paths
94
+ // Remove skills by name from both manifest and actual directories on disk.
95
+ // Scans global + project scopes so skills installed outside manifest are also removed.
93
96
  async function removeSkills(names) {
94
97
  const { remove } = await Promise.resolve().then(() => __importStar(require('fs-extra')));
98
+ const allDirs = [
99
+ paths_1.DEFAULT_TOOL_PATHS.claude,
100
+ paths_1.DEFAULT_TOOL_PATHS.antigravity,
101
+ (0, path_1.join)(process.cwd(), paths_1.PROJECT_TOOL_SEGMENTS.claude),
102
+ (0, path_1.join)(process.cwd(), paths_1.PROJECT_TOOL_SEGMENTS.antigravity),
103
+ ];
95
104
  for (const name of names) {
96
- const removed = (0, manifest_manager_1.removeManifestEntries)(name);
97
- if (removed.length === 0) {
98
- logger_1.log.warn(`Not installed: ${name}`);
99
- continue;
100
- }
101
- for (const entry of removed) {
102
- try {
103
- await remove(entry.destPath);
104
- logger_1.log.success(`Removed: ${name} from ${entry.destPath}`);
105
- }
106
- catch (err) {
107
- logger_1.log.error(`Failed to remove ${entry.destPath}: ${err instanceof Error ? err.message : String(err)}`);
105
+ // Strip "pkit:" prefix to get directory name
106
+ const dirName = name.replace(/^pkit:/, '');
107
+ let removed = false;
108
+ // Remove from manifest
109
+ (0, manifest_manager_1.removeManifestEntries)(name);
110
+ // Remove actual directories from all scopes
111
+ for (const base of allDirs) {
112
+ const skillDir = (0, path_1.join)(base, dirName);
113
+ if ((0, fs_1.existsSync)(skillDir)) {
114
+ try {
115
+ await remove(skillDir);
116
+ logger_1.log.success(`Removed: ${name} from ${skillDir}`);
117
+ removed = true;
118
+ }
119
+ catch (err) {
120
+ logger_1.log.error(`Failed to remove ${skillDir}: ${err instanceof Error ? err.message : String(err)}`);
121
+ }
108
122
  }
109
123
  }
124
+ if (!removed)
125
+ logger_1.log.warn(`Not installed: ${name}`);
110
126
  }
111
127
  }
112
128
  // Update skills using manifest-recorded tools (not blindly 'all').
@@ -140,4 +156,30 @@ async function updateSkills(names, opts) {
140
156
  });
141
157
  }
142
158
  }
159
+ // Scan both global and project scope directories for installed pkit skills.
160
+ // Returns deduplicated list of skill command names (e.g. "pkit:discover").
161
+ function scanInstalledSkills() {
162
+ const dirs = [
163
+ paths_1.DEFAULT_TOOL_PATHS.claude,
164
+ paths_1.DEFAULT_TOOL_PATHS.antigravity,
165
+ (0, path_1.join)(process.cwd(), paths_1.PROJECT_TOOL_SEGMENTS.claude),
166
+ (0, path_1.join)(process.cwd(), paths_1.PROJECT_TOOL_SEGMENTS.antigravity),
167
+ ];
168
+ const found = new Set();
169
+ for (const base of dirs) {
170
+ if (!(0, fs_1.existsSync)(base))
171
+ continue;
172
+ try {
173
+ for (const entry of (0, fs_1.readdirSync)(base, { withFileTypes: true })) {
174
+ if (!entry.isDirectory())
175
+ continue;
176
+ if ((0, fs_1.existsSync)((0, path_1.join)(base, entry.name, 'SKILL.md'))) {
177
+ found.add(`pkit:${entry.name}`);
178
+ }
179
+ }
180
+ }
181
+ catch { /* skip unreadable dirs */ }
182
+ }
183
+ return [...found];
184
+ }
143
185
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domains/installation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domains/installation/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-loader.d.ts","sourceRoot":"","sources":["../../../src/domains/skills/skill-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAQzC,wBAAgB,mBAAmB,IAAI,KAAK,EAAE,CAsB7C;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE/D"}
1
+ {"version":3,"file":"skill-loader.d.ts","sourceRoot":"","sources":["../../../src/domains/skills/skill-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAQzC,wBAAgB,mBAAmB,IAAI,KAAK,EAAE,CAuB7C;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE/D"}
@@ -26,7 +26,8 @@ function loadAvailableSkills() {
26
26
  try {
27
27
  const content = (0, fs_1.readFileSync)(filePath, 'utf8');
28
28
  const meta = (0, skill_validator_1.validateSkillContent)(content, filePath);
29
- skills.push({ name: dirNameToCommandName(entry.name), filePath, meta });
29
+ const dirPath = (0, path_1.join)(paths_1.PACKAGE_COMMANDS_DIR, entry.name);
30
+ skills.push({ name: dirNameToCommandName(entry.name), filePath, dirPath, dirName: entry.name, meta });
30
31
  }
31
32
  catch {
32
33
  // Skip invalid skill files silently in production
@@ -1 +1 @@
1
- {"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../../src/domains/skills/skill-loader.ts"],"names":[],"mappings":";;AAYA,kDAsBC;AAGD,0CAEC;AAvCD,2BAA2D;AAC3D,+BAA4B;AAC5B,8CAA0D;AAC1D,uDAAyD;AAGzD,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,QAAQ,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,gFAAgF;AAChF,SAAgB,mBAAmB;IACjC,IAAI,CAAC,IAAA,eAAU,EAAC,4BAAoB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAA,gBAAW,EAAC,4BAAoB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,gDAAgD;QAChD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,4BAAoB,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;YAAE,SAAS;QAEpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAA,sCAAoB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qDAAqD;AACrD,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../../src/domains/skills/skill-loader.ts"],"names":[],"mappings":";;AAYA,kDAuBC;AAGD,0CAEC;AAxCD,2BAA2D;AAC3D,+BAA4B;AAC5B,8CAA0D;AAC1D,uDAAyD;AAGzD,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,QAAQ,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,gFAAgF;AAChF,SAAgB,mBAAmB;IACjC,IAAI,CAAC,IAAA,eAAU,EAAC,4BAAoB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAA,gBAAW,EAAC,4BAAoB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,gDAAgD;QAChD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,4BAAoB,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;YAAE,SAAS;QAEpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAA,sCAAoB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,4BAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxG,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qDAAqD;AACrD,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC1D,CAAC"}
package/dist/index.js CHANGED
@@ -6,7 +6,6 @@ const list_1 = require("./commands/list");
6
6
  const update_1 = require("./commands/update");
7
7
  const add_1 = require("./commands/add");
8
8
  const remove_1 = require("./commands/remove");
9
- const config_1 = require("./commands/config");
10
9
  const doctor_1 = require("./commands/doctor");
11
10
  const cli = (0, setup_1.createCli)();
12
11
  (0, install_1.registerInstall)(cli);
@@ -14,7 +13,6 @@ const cli = (0, setup_1.createCli)();
14
13
  (0, list_1.registerList)(cli);
15
14
  (0, update_1.registerUpdate)(cli);
16
15
  (0, remove_1.registerRemove)(cli);
17
- (0, config_1.registerConfig)(cli);
18
16
  (0, doctor_1.registerDoctor)(cli);
19
17
  // Show help if no command given
20
18
  cli.on('command:*', () => {
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,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"}
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;AAEnD,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;AAEpB,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"}
@@ -7,6 +7,8 @@ export interface SkillMeta {
7
7
  export interface Skill {
8
8
  name: string;
9
9
  filePath: string;
10
+ dirPath: string;
11
+ dirName: string;
10
12
  meta: SkillMeta;
11
13
  }
12
14
  export interface InstallOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC;AAGrE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGhD,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;CACjB;AAGD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC;AAGrE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGhD,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;CACjB;AAGD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tydung26/product-kit",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "🐳 Product engineer skills kit",
5
5
  "bin": {
6
6
  "pkit": "bin/pkit.js"