killer-skills 1.6.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.
Files changed (136) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/LICENSE +21 -0
  3. package/README.md +360 -0
  4. package/dist/commands/completion.d.ts +8 -0
  5. package/dist/commands/completion.d.ts.map +1 -0
  6. package/dist/commands/completion.js +242 -0
  7. package/dist/commands/completion.js.map +1 -0
  8. package/dist/commands/config.d.ts +24 -0
  9. package/dist/commands/config.d.ts.map +1 -0
  10. package/dist/commands/config.js +132 -0
  11. package/dist/commands/config.js.map +1 -0
  12. package/dist/commands/create.d.ts +9 -0
  13. package/dist/commands/create.d.ts.map +1 -0
  14. package/dist/commands/create.js +361 -0
  15. package/dist/commands/create.js.map +1 -0
  16. package/dist/commands/deps.d.ts +8 -0
  17. package/dist/commands/deps.d.ts.map +1 -0
  18. package/dist/commands/deps.js +144 -0
  19. package/dist/commands/deps.js.map +1 -0
  20. package/dist/commands/do.d.ts +13 -0
  21. package/dist/commands/do.d.ts.map +1 -0
  22. package/dist/commands/do.js +223 -0
  23. package/dist/commands/do.js.map +1 -0
  24. package/dist/commands/init.d.ts +8 -0
  25. package/dist/commands/init.d.ts.map +1 -0
  26. package/dist/commands/init.js +191 -0
  27. package/dist/commands/init.js.map +1 -0
  28. package/dist/commands/install.d.ts +13 -0
  29. package/dist/commands/install.d.ts.map +1 -0
  30. package/dist/commands/install.js +234 -0
  31. package/dist/commands/install.js.map +1 -0
  32. package/dist/commands/list.d.ts +9 -0
  33. package/dist/commands/list.d.ts.map +1 -0
  34. package/dist/commands/list.js +103 -0
  35. package/dist/commands/list.js.map +1 -0
  36. package/dist/commands/manage.d.ts +9 -0
  37. package/dist/commands/manage.d.ts.map +1 -0
  38. package/dist/commands/manage.js +132 -0
  39. package/dist/commands/manage.js.map +1 -0
  40. package/dist/commands/outdated.d.ts +9 -0
  41. package/dist/commands/outdated.d.ts.map +1 -0
  42. package/dist/commands/outdated.js +168 -0
  43. package/dist/commands/outdated.js.map +1 -0
  44. package/dist/commands/plugin.d.ts +8 -0
  45. package/dist/commands/plugin.d.ts.map +1 -0
  46. package/dist/commands/plugin.js +98 -0
  47. package/dist/commands/plugin.js.map +1 -0
  48. package/dist/commands/publish.d.ts +8 -0
  49. package/dist/commands/publish.d.ts.map +1 -0
  50. package/dist/commands/publish.js +199 -0
  51. package/dist/commands/publish.js.map +1 -0
  52. package/dist/commands/read.d.ts +9 -0
  53. package/dist/commands/read.d.ts.map +1 -0
  54. package/dist/commands/read.js +69 -0
  55. package/dist/commands/read.js.map +1 -0
  56. package/dist/commands/search.d.ts +8 -0
  57. package/dist/commands/search.d.ts.map +1 -0
  58. package/dist/commands/search.js +105 -0
  59. package/dist/commands/search.js.map +1 -0
  60. package/dist/commands/stats.d.ts +16 -0
  61. package/dist/commands/stats.d.ts.map +1 -0
  62. package/dist/commands/stats.js +137 -0
  63. package/dist/commands/stats.js.map +1 -0
  64. package/dist/commands/submit.d.ts +9 -0
  65. package/dist/commands/submit.d.ts.map +1 -0
  66. package/dist/commands/submit.js +245 -0
  67. package/dist/commands/submit.js.map +1 -0
  68. package/dist/commands/sync.d.ts +11 -0
  69. package/dist/commands/sync.d.ts.map +1 -0
  70. package/dist/commands/sync.js +134 -0
  71. package/dist/commands/sync.js.map +1 -0
  72. package/dist/commands/update.d.ts +9 -0
  73. package/dist/commands/update.d.ts.map +1 -0
  74. package/dist/commands/update.js +175 -0
  75. package/dist/commands/update.js.map +1 -0
  76. package/dist/config/claude.d.ts +2 -0
  77. package/dist/config/claude.d.ts.map +1 -0
  78. package/dist/config/claude.js +19 -0
  79. package/dist/config/claude.js.map +1 -0
  80. package/dist/config/cursor.d.ts +2 -0
  81. package/dist/config/cursor.d.ts.map +1 -0
  82. package/dist/config/cursor.js +18 -0
  83. package/dist/config/cursor.js.map +1 -0
  84. package/dist/config/ides.d.ts +19 -0
  85. package/dist/config/ides.d.ts.map +1 -0
  86. package/dist/config/ides.js +221 -0
  87. package/dist/config/ides.js.map +1 -0
  88. package/dist/index.d.ts +3 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +57 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/mcp-server.d.ts +11 -0
  93. package/dist/mcp-server.d.ts.map +1 -0
  94. package/dist/mcp-server.js +264 -0
  95. package/dist/mcp-server.js.map +1 -0
  96. package/dist/registry.d.ts +8 -0
  97. package/dist/registry.d.ts.map +1 -0
  98. package/dist/registry.js +34 -0
  99. package/dist/registry.js.map +1 -0
  100. package/dist/types.d.ts +78 -0
  101. package/dist/types.d.ts.map +1 -0
  102. package/dist/types.js +7 -0
  103. package/dist/types.js.map +1 -0
  104. package/dist/utils/agents-md.d.ts +33 -0
  105. package/dist/utils/agents-md.d.ts.map +1 -0
  106. package/dist/utils/agents-md.js +137 -0
  107. package/dist/utils/agents-md.js.map +1 -0
  108. package/dist/utils/dependencies.d.ts +49 -0
  109. package/dist/utils/dependencies.d.ts.map +1 -0
  110. package/dist/utils/dependencies.js +141 -0
  111. package/dist/utils/dependencies.js.map +1 -0
  112. package/dist/utils/github.d.ts +58 -0
  113. package/dist/utils/github.d.ts.map +1 -0
  114. package/dist/utils/github.js +198 -0
  115. package/dist/utils/github.js.map +1 -0
  116. package/dist/utils/platform.d.ts +54 -0
  117. package/dist/utils/platform.d.ts.map +1 -0
  118. package/dist/utils/platform.js +154 -0
  119. package/dist/utils/platform.js.map +1 -0
  120. package/dist/utils/plugins.d.ts +50 -0
  121. package/dist/utils/plugins.d.ts.map +1 -0
  122. package/dist/utils/plugins.js +115 -0
  123. package/dist/utils/plugins.js.map +1 -0
  124. package/dist/utils/prompt-templates.d.ts +47 -0
  125. package/dist/utils/prompt-templates.d.ts.map +1 -0
  126. package/dist/utils/prompt-templates.js +160 -0
  127. package/dist/utils/prompt-templates.js.map +1 -0
  128. package/dist/utils/skill-metadata.d.ts +55 -0
  129. package/dist/utils/skill-metadata.d.ts.map +1 -0
  130. package/dist/utils/skill-metadata.js +82 -0
  131. package/dist/utils/skill-metadata.js.map +1 -0
  132. package/dist/utils/skills.d.ts +27 -0
  133. package/dist/utils/skills.d.ts.map +1 -0
  134. package/dist/utils/skills.js +163 -0
  135. package/dist/utils/skills.js.map +1 -0
  136. package/package.json +77 -0
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Skill Metadata Management
3
+ *
4
+ * Tracks installation source for each skill, enabling:
5
+ * - One-command updates via `killer update`
6
+ * - Version tracking and change detection
7
+ * - Source transparency for users
8
+ */
9
+ import { existsSync, readFileSync, writeFileSync } from 'fs';
10
+ import { join } from 'path';
11
+ export const SKILL_METADATA_FILE = '.killer-meta.json';
12
+ /**
13
+ * Read skill metadata from a skill directory
14
+ */
15
+ export function readSkillMetadata(skillDir) {
16
+ const metadataPath = join(skillDir, SKILL_METADATA_FILE);
17
+ if (!existsSync(metadataPath)) {
18
+ return null;
19
+ }
20
+ try {
21
+ const raw = readFileSync(metadataPath, 'utf-8');
22
+ return JSON.parse(raw);
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
28
+ /**
29
+ * Write skill metadata to a skill directory
30
+ */
31
+ export function writeSkillMetadata(skillDir, metadata) {
32
+ const metadataPath = join(skillDir, SKILL_METADATA_FILE);
33
+ const payload = {
34
+ ...metadata,
35
+ installedAt: metadata.installedAt || new Date().toISOString(),
36
+ };
37
+ writeFileSync(metadataPath, JSON.stringify(payload, null, 2));
38
+ }
39
+ /**
40
+ * Check if a skill has metadata (indicating it was installed via killer-skills)
41
+ */
42
+ export function hasSkillMetadata(skillDir) {
43
+ return existsSync(join(skillDir, SKILL_METADATA_FILE));
44
+ }
45
+ /**
46
+ * Build metadata for a git source
47
+ */
48
+ export function buildGitMetadata(source, repoUrl, subpath, commitHash) {
49
+ return {
50
+ source,
51
+ sourceType: 'git',
52
+ repoUrl,
53
+ subpath: subpath || '',
54
+ installedAt: new Date().toISOString(),
55
+ commitHash,
56
+ };
57
+ }
58
+ /**
59
+ * Build metadata for a local source
60
+ */
61
+ export function buildLocalMetadata(source, localPath) {
62
+ return {
63
+ source,
64
+ sourceType: 'local',
65
+ localPath,
66
+ installedAt: new Date().toISOString(),
67
+ };
68
+ }
69
+ /**
70
+ * Build metadata for a registry source
71
+ */
72
+ export function buildRegistryMetadata(skillName, repoUrl, version) {
73
+ return {
74
+ source: skillName,
75
+ sourceType: 'registry',
76
+ registryName: skillName,
77
+ repoUrl,
78
+ version,
79
+ installedAt: new Date().toISOString(),
80
+ };
81
+ }
82
+ //# sourceMappingURL=skill-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-metadata.js","sourceRoot":"","sources":["../../src/utils/skill-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAyBvD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAEzD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,QAA6B;IAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAwB;QACjC,GAAG,QAAQ;QACX,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAChE,CAAC;IAEF,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC5B,MAAc,EACd,OAAe,EACf,OAAgB,EAChB,UAAmB;IAEnB,OAAO;QACH,MAAM;QACN,UAAU,EAAE,KAAK;QACjB,OAAO;QACP,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,UAAU;KACb,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,SAAiB;IAChE,OAAO;QACH,MAAM;QACN,UAAU,EAAE,OAAO;QACnB,SAAS;QACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACxC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACjC,SAAiB,EACjB,OAAe,EACf,OAAgB;IAEhB,OAAO;QACH,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,UAAU;QACtB,YAAY,EAAE,SAAS;QACvB,OAAO;QACP,OAAO;QACP,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACxC,CAAC;AACN,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Skills Discovery and Management Utilities
3
+ *
4
+ * Functions for finding, parsing, and managing installed skills across multiple IDEs.
5
+ */
6
+ import type { SkillInfo } from './agents-md.js';
7
+ /**
8
+ * Find all installed skills across all search paths for a specific IDE
9
+ */
10
+ export declare function findAllSkills(targetIDE?: string): SkillInfo[];
11
+ /**
12
+ * Find a specific skill by name
13
+ */
14
+ export declare function findSkill(skillName: string, targetIDE?: string): SkillInfo | null;
15
+ /**
16
+ * Get the base directory for a skill (for resource resolution)
17
+ */
18
+ export declare function getSkillBaseDir(skillPath: string): string;
19
+ /**
20
+ * Normalize skill names input (handle comma-separated and array inputs)
21
+ */
22
+ export declare function normalizeSkillNames(input: string[] | string | undefined): string[];
23
+ /**
24
+ * Get skill directories by IDE
25
+ */
26
+ export declare function getSkillDirectories(ide: string, scope?: 'project' | 'global'): string[];
27
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAqBhD;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAmC7D;AAqED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAGjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAQlF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,EAAE,CAevF"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Skills Discovery and Management Utilities
3
+ *
4
+ * Functions for finding, parsing, and managing installed skills across multiple IDEs.
5
+ */
6
+ import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
7
+ import { join, dirname } from 'path';
8
+ import { IDE_CONFIG, SUPPORTED_IDES } from '../config/ides.js';
9
+ /**
10
+ * YAML frontmatter extraction
11
+ */
12
+ function extractYamlField(content, field) {
13
+ const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
14
+ if (!frontmatterMatch)
15
+ return '';
16
+ const frontmatter = frontmatterMatch[1];
17
+ const fieldMatch = frontmatter.match(new RegExp(`^${field}:\\s*(.+)$`, 'm'));
18
+ return fieldMatch ? fieldMatch[1].trim().replace(/^["']|["']$/g, '') : '';
19
+ }
20
+ /**
21
+ * Check if content has valid YAML frontmatter
22
+ */
23
+ function hasValidFrontmatter(content) {
24
+ return /^---\s*\n[\s\S]*?\n---/.test(content);
25
+ }
26
+ /**
27
+ * Find all installed skills across all search paths for a specific IDE
28
+ */
29
+ export function findAllSkills(targetIDE) {
30
+ const skills = [];
31
+ const seenNames = new Set();
32
+ const idesToSearch = targetIDE ? [targetIDE] : SUPPORTED_IDES;
33
+ for (const ide of idesToSearch) {
34
+ const config = IDE_CONFIG[ide];
35
+ if (!config)
36
+ continue;
37
+ // Search project-level skills
38
+ const projectPath = join(process.cwd(), config.paths.project);
39
+ if (existsSync(projectPath)) {
40
+ const projectSkills = findSkillsInDir(projectPath, 'project');
41
+ for (const skill of projectSkills) {
42
+ if (!seenNames.has(skill.name)) {
43
+ seenNames.add(skill.name);
44
+ skills.push(skill);
45
+ }
46
+ }
47
+ }
48
+ // Search global skills
49
+ if (config.paths.global && existsSync(config.paths.global)) {
50
+ const globalSkills = findSkillsInDir(config.paths.global, 'global');
51
+ for (const skill of globalSkills) {
52
+ if (!seenNames.has(skill.name)) {
53
+ seenNames.add(skill.name);
54
+ skills.push(skill);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return skills;
60
+ }
61
+ /**
62
+ * Find skills in a specific directory
63
+ */
64
+ function findSkillsInDir(dir, location) {
65
+ const skills = [];
66
+ if (!existsSync(dir))
67
+ return skills;
68
+ try {
69
+ const entries = readdirSync(dir, { withFileTypes: true });
70
+ for (const entry of entries) {
71
+ // Support both directories and symlinks to directories
72
+ if (!isDirectoryOrSymlink(entry, dir))
73
+ continue;
74
+ const skillDir = join(dir, entry.name);
75
+ const skillMdPath = join(skillDir, 'SKILL.md');
76
+ if (existsSync(skillMdPath)) {
77
+ try {
78
+ const content = readFileSync(skillMdPath, 'utf-8');
79
+ if (hasValidFrontmatter(content)) {
80
+ const name = extractYamlField(content, 'name') || entry.name;
81
+ const description = extractYamlField(content, 'description') || '';
82
+ skills.push({
83
+ name,
84
+ description,
85
+ location,
86
+ path: skillMdPath,
87
+ });
88
+ }
89
+ }
90
+ catch {
91
+ // Skip invalid skill files
92
+ }
93
+ }
94
+ }
95
+ }
96
+ catch {
97
+ // Directory not accessible
98
+ }
99
+ return skills;
100
+ }
101
+ /**
102
+ * Check if entry is a directory or a symlink pointing to a directory
103
+ * This enables local development with symlinks:
104
+ * ln -s ~/dev/my-skill .claude/skills/my-skill
105
+ */
106
+ function isDirectoryOrSymlink(entry, parentDir) {
107
+ if (entry.isDirectory()) {
108
+ return true;
109
+ }
110
+ if (entry.isSymbolicLink()) {
111
+ try {
112
+ // statSync follows symlinks, so it will tell us if target is a directory
113
+ const stats = statSync(join(parentDir, entry.name));
114
+ return stats.isDirectory();
115
+ }
116
+ catch {
117
+ // Broken symlink or permission error
118
+ return false;
119
+ }
120
+ }
121
+ return false;
122
+ }
123
+ /**
124
+ * Find a specific skill by name
125
+ */
126
+ export function findSkill(skillName, targetIDE) {
127
+ const skills = findAllSkills(targetIDE);
128
+ return skills.find(s => s.name === skillName) || null;
129
+ }
130
+ /**
131
+ * Get the base directory for a skill (for resource resolution)
132
+ */
133
+ export function getSkillBaseDir(skillPath) {
134
+ return dirname(skillPath);
135
+ }
136
+ /**
137
+ * Normalize skill names input (handle comma-separated and array inputs)
138
+ */
139
+ export function normalizeSkillNames(input) {
140
+ if (!input)
141
+ return [];
142
+ if (Array.isArray(input)) {
143
+ return input.flatMap(name => name.split(',')).map(n => n.trim()).filter(Boolean);
144
+ }
145
+ return input.split(',').map(n => n.trim()).filter(Boolean);
146
+ }
147
+ /**
148
+ * Get skill directories by IDE
149
+ */
150
+ export function getSkillDirectories(ide, scope) {
151
+ const config = IDE_CONFIG[ide];
152
+ if (!config)
153
+ return [];
154
+ const dirs = [];
155
+ if (!scope || scope === 'project') {
156
+ dirs.push(join(process.cwd(), config.paths.project));
157
+ }
158
+ if ((!scope || scope === 'global') && config.paths.global) {
159
+ dirs.push(config.paths.global);
160
+ }
161
+ return dirs;
162
+ }
163
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "killer-skills",
3
+ "version": "1.6.0",
4
+ "description": "Cross-platform CLI tool for installing AI agent skills to multiple IDEs",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "bin": {
8
+ "killer-skills": "./dist/index.js",
9
+ "killer": "./dist/index.js",
10
+ "killer-skills-mcp": "./dist/mcp-server.js"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "README.md",
15
+ "CHANGELOG.md",
16
+ "LICENSE"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "prepublishOnly": "npm run build && npm test",
21
+ "dev": "tsx src/index.ts",
22
+ "mcp": "tsx src/mcp-server.ts",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
25
+ "test:coverage": "vitest run --coverage",
26
+ "lint": "eslint src/"
27
+ },
28
+ "keywords": [
29
+ "skills",
30
+ "ai",
31
+ "claude",
32
+ "cursor",
33
+ "vscode",
34
+ "windsurf",
35
+ "kiro",
36
+ "cli",
37
+ "agent",
38
+ "natural-language",
39
+ "mcp",
40
+ "model-context-protocol",
41
+ "llm",
42
+ "copilot",
43
+ "gemini"
44
+ ],
45
+ "author": "Killer-Skills Team",
46
+ "license": "MIT",
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "https://github.com/anthropics/killer-skills.git",
50
+ "directory": "packages/cli"
51
+ },
52
+ "homepage": "https://killer-skills.vercel.app",
53
+ "bugs": {
54
+ "url": "https://github.com/anthropics/killer-skills/issues"
55
+ },
56
+ "dependencies": {
57
+ "@inquirer/prompts": "^7.0.0",
58
+ "@modelcontextprotocol/sdk": "^1.25.3",
59
+ "@types/fs-extra": "^11.0.4",
60
+ "chalk": "^5.3.0",
61
+ "commander": "^12.1.0",
62
+ "fs-extra": "^11.3.3",
63
+ "ora": "^8.0.1",
64
+ "simple-git": "^3.25.0",
65
+ "zod": "^3.25.76"
66
+ },
67
+ "engines": {
68
+ "node": ">=18.0.0"
69
+ },
70
+ "devDependencies": {
71
+ "@types/node": "^20.19.30",
72
+ "@vitest/coverage-v8": "^3.2.4",
73
+ "tsx": "^4.21.0",
74
+ "typescript": "^5.9.3",
75
+ "vitest": "^3.2.4"
76
+ }
77
+ }