killer-skills 1.6.2 → 1.7.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 +67 -314
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +10 -12
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/login.d.ts +14 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +127 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +7 -0
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +74 -7
- package/dist/commands/sync.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/adapters.d.ts +11 -0
- package/dist/utils/adapters.d.ts.map +1 -1
- package/dist/utils/adapters.js +109 -25
- package/dist/utils/adapters.js.map +1 -1
- package/dist/utils/github-auth.d.ts +43 -0
- package/dist/utils/github-auth.d.ts.map +1 -0
- package/dist/utils/github-auth.js +183 -0
- package/dist/utils/github-auth.js.map +1 -0
- package/dist/utils/github.d.ts +9 -1
- package/dist/utils/github.d.ts.map +1 -1
- package/dist/utils/github.js +55 -8
- package/dist/utils/github.js.map +1 -1
- package/dist/utils/prompt-templates.d.ts +7 -16
- package/dist/utils/prompt-templates.d.ts.map +1 -1
- package/dist/utils/prompt-templates.js +142 -78
- package/dist/utils/prompt-templates.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,25 +6,30 @@
|
|
|
6
6
|
|
|
7
7
|
## ✨ 特性
|
|
8
8
|
|
|
9
|
-
- 🚀 **统一安装** - 从 GitHub、Registry
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- ⚡ **Shell 补全** - 支持 bash/zsh/fish 自动补全
|
|
17
|
-
- 🔌 **MCP Server** - 支持作为 MCP Server 运行
|
|
9
|
+
- 🚀 **统一安装** - 从 GitHub、Registry 或本地一键安装,自动同步到 IDE
|
|
10
|
+
- 🤖 **Universal IDE Support** - 支持 Cursor, Windsurf, VS Code, Claude Code 等 **17+ IDE**
|
|
11
|
+
- ⚡ **Auto-Invoke** - 技能安装后,AI Agent 可通过自然语言**自动调用**,无需手动指令
|
|
12
|
+
- 🔐 **GitHub 无感认证** - 支持复用 `gh` CLI token 或通过 Device Flow 一键登录
|
|
13
|
+
- 🔍 **智能搜索** - 无需 token 即可搜索 GitHub Skills(自动降级)
|
|
14
|
+
- 🔄 **一键同步** - `killer sync --all` 将技能同步到所有已安装 IDE
|
|
15
|
+
- 🧩 **MCP Server** - 内置 MCP Server,支持 Agent 自我进化
|
|
18
16
|
|
|
19
17
|
## 支持的 IDE
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
|
24
|
-
|
|
25
|
-
| **
|
|
26
|
-
| **
|
|
27
|
-
| **
|
|
19
|
+
Killer-Skills 会自动检测并配置以下 IDE,注入 **Auto-Invoke** 指令:
|
|
20
|
+
|
|
21
|
+
| IDE | 配置文件 | 状态 |
|
|
22
|
+
|-----|----------|------|
|
|
23
|
+
| **Cursor** | `.cursorrules` | ✅ 完美支持 |
|
|
24
|
+
| **Windsurf** | `.windsurfrules` | ✅ 完美支持 |
|
|
25
|
+
| **VS Code + Copilot** | `.github/copilot-instructions.md` | ✅ 支持 |
|
|
26
|
+
| **Trae** | `AGENTS.md` | ✅ 支持 |
|
|
27
|
+
| **Claude Code** | `CLAUDE.md` | ✅ 支持 |
|
|
28
|
+
| **Antigravity (Gemini)** | `AGENTS.md` | ✅ 原生支持 |
|
|
29
|
+
| **Aider, Codex, Goose** | `AGENTS.md` (XML) | ✅ 支持 |
|
|
30
|
+
| **Kiro (AWS)** | `.kiro/agents/skills.md` (JSON) | ✅ 支持 |
|
|
31
|
+
| **Cline, Roo, Augment** | `AGENTS.md` | ✅ 支持 |
|
|
32
|
+
| **Continue, Cody, Amazon Q** | `AGENTS.md` | ✅ 支持 |
|
|
28
33
|
|
|
29
34
|
## 快速开始
|
|
30
35
|
|
|
@@ -36,336 +41,84 @@ npx killer-skills install <skill-or-repo>
|
|
|
36
41
|
npm install -g killer-skills
|
|
37
42
|
```
|
|
38
43
|
|
|
39
|
-
##
|
|
40
|
-
|
|
41
|
-
| 命令 | 说明 | 示例 |
|
|
42
|
-
|------|------|------|
|
|
43
|
-
| `install` | 安装 Skill | `killer install pdf` |
|
|
44
|
-
| `list` | 列出已安装 | `killer list` |
|
|
45
|
-
| `create` | 创建新 Skill | `killer create my-skill` |
|
|
46
|
-
| `sync` | 同步到 AGENTS.md | `killer sync` |
|
|
47
|
-
| `read` | 读取 Skill 内容 | `killer read pdf` |
|
|
48
|
-
| `update` | 更新 Skills | `killer update` |
|
|
49
|
-
| `manage` | 交互式管理 | `killer manage` |
|
|
50
|
-
| `search` | 搜索 Skills | `killer search pdf` |
|
|
51
|
-
| `publish` | 发布 Skill | `killer publish .` |
|
|
52
|
-
| `init` | 初始化项目 | `killer init` |
|
|
53
|
-
| `config` | 配置管理 | `killer config` |
|
|
54
|
-
| `completion` | Shell 补全 | `killer completion zsh` |
|
|
55
|
-
| `do` | 自然语言执行 | `killer do "处理PDF"` |
|
|
56
|
-
| `outdated` | 检查更新 | `killer outdated` |
|
|
57
|
-
| `deps` | 依赖管理 | `killer deps` |
|
|
58
|
-
| `submit` | 提交到 Registry | `killer submit .` |
|
|
59
|
-
| `stats` | 使用统计 | `killer stats` |
|
|
60
|
-
| `plugin` | 插件管理 | `killer plugin list` |
|
|
61
|
-
| `validate` | 质量验证 | `killer validate ./my-skill` |
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## 📦 安装 Skills
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# 从 Registry 安装
|
|
69
|
-
killer install pdf
|
|
70
|
-
|
|
71
|
-
# 从 GitHub 安装
|
|
72
|
-
killer install anthropics/killer-skills
|
|
73
|
-
|
|
74
|
-
# 从本地安装
|
|
75
|
-
killer install ./my-skill
|
|
76
|
-
killer install ~/dev/my-skill
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
# 通用安装 (自动识别当前 IDE 环境)
|
|
80
|
-
killer install pdf
|
|
81
|
-
|
|
82
|
-
# 强制安装到所有支持的 IDE
|
|
83
|
-
killer install pdf --all
|
|
84
|
-
|
|
85
|
-
# 指定 IDE (手动模式)
|
|
86
|
-
killer install pdf --ide cursor
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## ✨ 创建新 Skill
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
# 标准模板 (默认)
|
|
93
|
-
killer create my-awesome-skill
|
|
44
|
+
## 🔐 GitHub 认证 (推荐)
|
|
94
45
|
|
|
95
|
-
|
|
96
|
-
killer create my-skill -t minimal
|
|
97
|
-
|
|
98
|
-
# 完整模板 - 含 scripts, references, examples, assets
|
|
99
|
-
killer create my-skill -t full
|
|
100
|
-
|
|
101
|
-
# 从已有 Skill 克隆
|
|
102
|
-
killer create my-skill --from pdf
|
|
103
|
-
|
|
104
|
-
# 指定描述 (注意: 描述必须超过 20 个字符以通过质量检查)
|
|
105
|
-
killer create my-skill -d "这是一个用于处理 PDF 文件的强大技能,支持合并、拆分等功能。"
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## 🔄 同步与更新
|
|
46
|
+
为了获得更高的 API 限额和更精准的代码搜索,建议登录 GitHub:
|
|
109
47
|
|
|
110
48
|
```bash
|
|
111
|
-
#
|
|
112
|
-
killer
|
|
49
|
+
# 方法 1: 复用 gh CLI (零配置)
|
|
50
|
+
# 如果你安装了 GitHub CLI,killer 会自动使用它的 token
|
|
113
51
|
|
|
114
|
-
#
|
|
115
|
-
killer
|
|
116
|
-
|
|
52
|
+
# 方法 2: 一键登录 (Device Flow)
|
|
53
|
+
killer login
|
|
54
|
+
# -> 自动打开浏览器完成授权
|
|
117
55
|
|
|
118
|
-
#
|
|
119
|
-
killer
|
|
120
|
-
|
|
121
|
-
# 更新特定 Skill
|
|
122
|
-
killer update pdf
|
|
123
|
-
|
|
124
|
-
# 读取 Skill 内容
|
|
125
|
-
killer read pdf
|
|
126
|
-
killer read pdf,docx,xlsx
|
|
56
|
+
# 方法 3: 手动设置
|
|
57
|
+
killer config githubToken ghp_xxxx
|
|
127
58
|
```
|
|
128
59
|
|
|
129
|
-
##
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
# 搜索所有来源
|
|
133
|
-
killer search pdf
|
|
60
|
+
## 📦 安装与使用
|
|
134
61
|
|
|
135
|
-
|
|
136
|
-
killer search pdf -s github
|
|
137
|
-
|
|
138
|
-
# 只搜索 Registry
|
|
139
|
-
killer search pdf -s registry
|
|
140
|
-
|
|
141
|
-
# 限制结果数量
|
|
142
|
-
killer search pdf -l 5
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## 📤 发布 Skill
|
|
62
|
+
### 1. 安装 Skill
|
|
146
63
|
|
|
147
64
|
```bash
|
|
148
|
-
#
|
|
149
|
-
killer
|
|
150
|
-
|
|
151
|
-
# 准备 GitHub 发布
|
|
152
|
-
killer publish ./my-skill --github
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## 🛠️ 项目初始化
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
# 交互式初始化
|
|
159
|
-
killer init
|
|
65
|
+
# 从 Registry 安装
|
|
66
|
+
killer install pdf
|
|
160
67
|
|
|
161
|
-
#
|
|
162
|
-
killer
|
|
68
|
+
# 从 GitHub 安装
|
|
69
|
+
killer install anthropics/killer-skills
|
|
163
70
|
|
|
164
|
-
#
|
|
165
|
-
|
|
71
|
+
# 安装后,技能会自动同步到当前检测到的 IDE
|
|
72
|
+
# AI Agent 现在可以通过自然语言自动调用这个技能了!
|
|
166
73
|
```
|
|
167
74
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
# 查看所有配置
|
|
172
|
-
killer config
|
|
173
|
-
|
|
174
|
-
# 设置默认 IDE
|
|
175
|
-
killer config defaultIDE cursor
|
|
75
|
+
### 2. 自然语言调用
|
|
176
76
|
|
|
177
|
-
|
|
178
|
-
killer config defaultScope project
|
|
77
|
+
在你的 IDE (Cursor/Windsurf/Claude) 中,直接对 AI 说:
|
|
179
78
|
|
|
180
|
-
|
|
181
|
-
|
|
79
|
+
> "帮我合并这几个 PDF 文件"
|
|
80
|
+
> "分析这个 PPT 的内容"
|
|
81
|
+
> "创建一个新的 React 组件"
|
|
182
82
|
|
|
183
|
-
|
|
184
|
-
killer config --reset
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## 🧠 自然语言执行
|
|
188
|
-
|
|
189
|
-
```bash
|
|
190
|
-
# 用自然语言描述任务
|
|
191
|
-
killer do "处理这个PDF文件"
|
|
83
|
+
AI 会自动读取规则文件,匹配 `pdf` / `pptx` / `frontend-design` 技能,并**自动执行**。
|
|
192
84
|
|
|
193
|
-
|
|
194
|
-
killer do "create algorithmic art" --list
|
|
85
|
+
### 3. 多 IDE 同步
|
|
195
86
|
|
|
196
|
-
|
|
197
|
-
killer do "处理Excel表格" -y
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
## 📊 版本检测
|
|
87
|
+
如果你同时使用多个 IDE:
|
|
201
88
|
|
|
202
89
|
```bash
|
|
203
|
-
#
|
|
204
|
-
killer
|
|
205
|
-
|
|
206
|
-
# 显示详细信息
|
|
207
|
-
killer outdated -v
|
|
90
|
+
# 一键同步已安装技能到所有支持的 IDE
|
|
91
|
+
killer sync --all
|
|
208
92
|
```
|
|
209
93
|
|
|
210
|
-
##
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
# 检查所有依赖
|
|
214
|
-
killer deps
|
|
215
|
-
|
|
216
|
-
# 检查特定 Skill
|
|
217
|
-
killer deps pdf
|
|
94
|
+
## 命令速查
|
|
218
95
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
96
|
+
| 命令 | 说明 | 示例 |
|
|
97
|
+
|------|------|------|
|
|
98
|
+
| `install` | 安装 Skill | `killer install pdf` |
|
|
99
|
+
| `login` | **[NEW]** GitHub 登录 | `killer login` |
|
|
100
|
+
| `sync` | 同步配置 | `killer sync --all` |
|
|
101
|
+
| `list` | 列出已安装 | `killer list` |
|
|
102
|
+
| `search` | 搜索 Skills | `killer search react` |
|
|
103
|
+
| `create` | 创建新 Skill | `killer create my-skill` |
|
|
104
|
+
| `read` | 读取内容 | `killer read pdf` |
|
|
105
|
+
| `do` | 自然语言执行 | `killer do "处理PDF"` |
|
|
106
|
+
| `manage` | 交互式管理 | `killer manage` |
|
|
107
|
+
| `publish` | 发布 Skill | `killer publish .` |
|
|
108
|
+
| `init` | 初始化项目 | `killer init` |
|
|
109
|
+
| `config` | 配置管理 | `killer config` |
|
|
110
|
+
| `completion` | Shell 补全 | `killer completion zsh` |
|
|
111
|
+
| `stats` | 使用统计 | `killer stats` |
|
|
222
112
|
|
|
223
113
|
## 🔌 MCP Server
|
|
224
114
|
|
|
225
|
-
|
|
226
|
-
Killer-Skills comes with a built-in MCP server that allows AI agents to **read** and **install** skills directly.
|
|
115
|
+
启动内置 MCP Server,允许 AI Agent 自我安装技能:
|
|
227
116
|
|
|
228
117
|
```bash
|
|
229
118
|
npx killer-skills-mcp
|
|
230
119
|
```
|
|
231
120
|
|
|
232
|
-
**Tools
|
|
233
|
-
- `install_skill(name, ide?)`: **[NEW]** Agents can self-install skills to upgrade their capabilities runtime.
|
|
234
|
-
- `list_skills()`: List available skills.
|
|
235
|
-
- `search_skills(query)`: Find skills in registry/GitHub.
|
|
236
|
-
- `read_skill(name)`: Read skill instruction content.
|
|
237
|
-
- `match_task(task)`: Semantic match for a task query.
|
|
238
|
-
- `get_skill_info` - 获取详细信息
|
|
239
|
-
|
|
240
|
-
## 📤 提交到 Registry
|
|
241
|
-
|
|
242
|
-
```bash
|
|
243
|
-
# 验证 Skill
|
|
244
|
-
killer submit ./my-skill --dry-run
|
|
245
|
-
|
|
246
|
-
# 提交
|
|
247
|
-
killer submit ./my-skill
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
## 📊 使用统计
|
|
251
|
-
|
|
252
|
-
```bash
|
|
253
|
-
# 查看统计
|
|
254
|
-
killer stats
|
|
255
|
-
|
|
256
|
-
# JSON 格式
|
|
257
|
-
killer stats --json
|
|
258
|
-
|
|
259
|
-
# 重置
|
|
260
|
-
killer stats --reset
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
## 🔌 插件管理
|
|
264
|
-
|
|
265
|
-
```bash
|
|
266
|
-
# 列出插件
|
|
267
|
-
killer plugin list
|
|
268
|
-
|
|
269
|
-
# 安装插件
|
|
270
|
-
killer plugin add ./my-plugin
|
|
271
|
-
|
|
272
|
-
# 卸载插件
|
|
273
|
-
killer plugin remove my-plugin
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
## ✅ 质量验证
|
|
277
|
-
|
|
278
|
-
确保你的 Skill 符合高质量标准(这对于发布到 Registry 是必须的):
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
# 验证当前目录下的 Skill
|
|
282
|
-
killer validate
|
|
283
|
-
|
|
284
|
-
# 验证指定目录
|
|
285
|
-
killer validate ./my-skill
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
**检查项包括:**
|
|
289
|
-
- `SKILL.md` 结构完整性(Frontmatter 必须包含 version/author/tags)
|
|
290
|
-
- 描述长度(> 20 字符)
|
|
291
|
-
- 文档质量评分(满分 100)
|
|
292
|
-
|
|
293
|
-
## 🐚 Shell 自动补全
|
|
294
|
-
|
|
295
|
-
```bash
|
|
296
|
-
# Bash
|
|
297
|
-
killer completion bash >> ~/.bashrc
|
|
298
|
-
|
|
299
|
-
# Zsh
|
|
300
|
-
killer completion zsh >> ~/.zshrc
|
|
301
|
-
|
|
302
|
-
# Fish
|
|
303
|
-
killer completion fish > ~/.config/fish/completions/killer.fish
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
## 📋 交互式管理
|
|
307
|
-
|
|
308
|
-
```bash
|
|
309
|
-
# 选择要删除的 Skills
|
|
310
|
-
killer manage
|
|
311
|
-
|
|
312
|
-
# 删除所有 Skills
|
|
313
|
-
killer manage --remove-all
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
## 🔧 命令选项
|
|
317
|
-
|
|
318
|
-
### `install <source>`
|
|
319
|
-
|
|
320
|
-
| 选项 | 说明 | 默认值 |
|
|
321
|
-
|------|------|--------|
|
|
322
|
-
| `-i, --ide <ide>` | 目标 IDE | 自动检测 |
|
|
323
|
-
| `-s, --scope <scope>` | 安装范围: project/global | global |
|
|
324
|
-
| `--all` | 安装到所有 IDE | false |
|
|
325
|
-
| `-y, --yes` | 跳过确认 | false |
|
|
326
|
-
|
|
327
|
-
### `create <name>`
|
|
328
|
-
|
|
329
|
-
| 选项 | 说明 | 默认值 |
|
|
330
|
-
|------|------|--------|
|
|
331
|
-
| `-t, --template <type>` | 模板: minimal/standard/full | standard |
|
|
332
|
-
| `-d, --description <desc>` | Skill 描述 (>20字符) | - |
|
|
333
|
-
| `-p, --path <path>` | 输出目录 | . |
|
|
334
|
-
| `--from <skill>` | 克隆已有 Skill | - |
|
|
335
|
-
|
|
336
|
-
### `list`
|
|
337
|
-
|
|
338
|
-
| 选项 | 说明 |
|
|
339
|
-
|------|------|
|
|
340
|
-
| `-i, --ide <ide>` | 按 IDE 筛选 |
|
|
341
|
-
| `-v, --verbose` | 显示详细信息 |
|
|
342
|
-
|
|
343
|
-
### `sync`
|
|
344
|
-
|
|
345
|
-
| 选项 | 说明 | 默认值 |
|
|
346
|
-
|------|------|--------|
|
|
347
|
-
| `-i, --ide <ide>` | 目标 IDE | 自动检测 |
|
|
348
|
-
| `-o, --output <path>` | 输出文件 | 自动 |
|
|
349
|
-
| `--remove` | 移除 Skills 部分 | false |
|
|
350
|
-
|
|
351
|
-
### `search <query>`
|
|
352
|
-
|
|
353
|
-
| 选项 | 说明 | 默认值 |
|
|
354
|
-
|------|------|--------|
|
|
355
|
-
| `-s, --source <source>` | 来源: all/github/registry | all |
|
|
356
|
-
| `-l, --limit <number>` | 最大结果数 | 10 |
|
|
357
|
-
|
|
358
|
-
## 环境变量
|
|
359
|
-
|
|
360
|
-
| 变量 | 说明 |
|
|
361
|
-
|------|------|
|
|
362
|
-
| `GITHUB_TOKEN` | GitHub 访问令牌,提高 API 速率限制 |
|
|
363
|
-
|
|
364
|
-
## 前置要求
|
|
365
|
-
|
|
366
|
-
发布 Skill 到 GitHub 需要:
|
|
367
|
-
1. 安装 [GitHub CLI (gh)](https://cli.github.com/)
|
|
368
|
-
2. 运行 `gh auth login` 完成认证
|
|
121
|
+
**Exposed Tools:** `install_skill`, `list_skills`, `search_skills`, `read_skill`
|
|
369
122
|
|
|
370
123
|
## 许可证
|
|
371
124
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,cAAc,SA4GrB,CAAC"}
|
package/dist/commands/install.js
CHANGED
|
@@ -26,7 +26,7 @@ export const installCommand = new Command('install')
|
|
|
26
26
|
.option('-s, --scope <scope>', 'Installation scope: project or global', 'global')
|
|
27
27
|
.option('--all', 'Install to all supported IDEs')
|
|
28
28
|
.option('-y, --yes', 'Skip prompts, accept defaults')
|
|
29
|
-
.option('--sync', '
|
|
29
|
+
.option('--no-sync', 'Skip auto-sync after installation')
|
|
30
30
|
.option('--with-deps', 'Install with dependencies')
|
|
31
31
|
.action(async (source, options) => {
|
|
32
32
|
const spinner = ora(`Installing from ${source}...`).start();
|
|
@@ -87,26 +87,24 @@ export const installCommand = new Command('install')
|
|
|
87
87
|
console.log(` ${chalk.bold('Source:')} ${result.sourceType}`);
|
|
88
88
|
console.log(` ${chalk.bold('IDEs:')} ${result.installed.join(', ')}`);
|
|
89
89
|
console.log(chalk.dim('─'.repeat(50)));
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
if (!options.sync) {
|
|
93
|
-
console.log(chalk.dim(' killer sync - Make skills discoverable by AI'));
|
|
94
|
-
}
|
|
95
|
-
console.log(chalk.dim(' killer list - View all installed skills'));
|
|
96
|
-
console.log(chalk.dim(' killer update - Update skills from source'));
|
|
97
|
-
// Auto-sync if requested
|
|
98
|
-
if (options.sync) {
|
|
90
|
+
// Auto-sync (enabled by default, disable with --no-sync)
|
|
91
|
+
if (options.sync !== false) {
|
|
99
92
|
console.log('');
|
|
100
|
-
const syncSpinner = ora('Auto-syncing skills...').start();
|
|
93
|
+
const syncSpinner = ora('Auto-syncing skills to AGENTS.md...').start();
|
|
101
94
|
try {
|
|
102
95
|
const { execSync } = await import('child_process');
|
|
103
96
|
execSync('npx killer-skills sync', { stdio: 'pipe' });
|
|
104
|
-
syncSpinner.succeed(chalk.green('Skills synced
|
|
97
|
+
syncSpinner.succeed(chalk.green('Skills synced — AI agents can now discover and auto-invoke your skills'));
|
|
105
98
|
}
|
|
106
99
|
catch {
|
|
107
100
|
syncSpinner.warn(chalk.yellow('Auto-sync failed. Run manually: killer sync'));
|
|
108
101
|
}
|
|
109
102
|
}
|
|
103
|
+
// Tips
|
|
104
|
+
console.log(chalk.dim('\n💡 Next steps:'));
|
|
105
|
+
console.log(chalk.dim(' killer list - View all installed skills'));
|
|
106
|
+
console.log(chalk.dim(' killer read <skill> - Load skill content'));
|
|
107
|
+
console.log(chalk.dim(' killer update - Update skills from source'));
|
|
110
108
|
}
|
|
111
109
|
catch (error) {
|
|
112
110
|
spinner.fail(chalk.red(`Failed to install ${source}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC7H,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1H,OAAO,EAAE,WAAW,EAAE,WAAW,EAAyB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC5H,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KAC/C,QAAQ,CAAC,UAAU,EAAE,+CAA+C,CAAC;KACrE,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,iBAAiB,EAAE,eAAe,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KACtE,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,EAAE,QAAQ,CAAC;KAChF,MAAM,CAAC,OAAO,EAAE,+BAA+B,CAAC;KAChD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Login Command
|
|
3
|
+
*
|
|
4
|
+
* Authenticate with GitHub using Device Flow OAuth.
|
|
5
|
+
* This enables `killer search` and other GitHub-dependent features.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* killer login - Start GitHub Device Flow login
|
|
9
|
+
* killer login --status - Check current auth status
|
|
10
|
+
* killer login --logout - Remove saved token
|
|
11
|
+
*/
|
|
12
|
+
import { Command } from 'commander';
|
|
13
|
+
export declare const loginCommand: Command;
|
|
14
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,YAAY,SAiHnB,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Login Command
|
|
3
|
+
*
|
|
4
|
+
* Authenticate with GitHub using Device Flow OAuth.
|
|
5
|
+
* This enables `killer search` and other GitHub-dependent features.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* killer login - Start GitHub Device Flow login
|
|
9
|
+
* killer login --status - Check current auth status
|
|
10
|
+
* killer login --logout - Remove saved token
|
|
11
|
+
*/
|
|
12
|
+
import { Command } from 'commander';
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import ora from 'ora';
|
|
15
|
+
import { resolveGitHubToken, requestDeviceCode, pollForToken, saveGitHubToken } from '../utils/github-auth.js';
|
|
16
|
+
export const loginCommand = new Command('login')
|
|
17
|
+
.description('Authenticate with GitHub for enhanced features (search, etc.)')
|
|
18
|
+
.option('--status', 'Check current authentication status')
|
|
19
|
+
.option('--logout', 'Remove saved GitHub token')
|
|
20
|
+
.action(async (options) => {
|
|
21
|
+
try {
|
|
22
|
+
// Check status
|
|
23
|
+
if (options.status) {
|
|
24
|
+
const token = await resolveGitHubToken();
|
|
25
|
+
if (token) {
|
|
26
|
+
console.log(chalk.green('✅ Authenticated with GitHub'));
|
|
27
|
+
console.log(chalk.dim(` Token: ***${token.slice(-4)}`));
|
|
28
|
+
// Validate token
|
|
29
|
+
const spinner = ora('Verifying token...').start();
|
|
30
|
+
try {
|
|
31
|
+
const response = await fetch('https://api.github.com/user', {
|
|
32
|
+
headers: { 'Authorization': `token ${token}`, 'User-Agent': 'killer-skills-cli' }
|
|
33
|
+
});
|
|
34
|
+
if (response.ok) {
|
|
35
|
+
const user = await response.json();
|
|
36
|
+
spinner.succeed(chalk.green(`Logged in as ${chalk.bold(user.login)}`));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
spinner.warn(chalk.yellow('Token exists but may be expired'));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
spinner.warn(chalk.yellow('Could not verify token'));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.log(chalk.yellow('❌ Not authenticated with GitHub'));
|
|
48
|
+
console.log(chalk.dim(' Run: killer login'));
|
|
49
|
+
}
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Logout
|
|
53
|
+
if (options.logout) {
|
|
54
|
+
await saveGitHubToken('');
|
|
55
|
+
console.log(chalk.green('✅ GitHub token removed'));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Check if already authenticated
|
|
59
|
+
const existingToken = await resolveGitHubToken();
|
|
60
|
+
if (existingToken) {
|
|
61
|
+
console.log(chalk.green('✅ Already authenticated with GitHub'));
|
|
62
|
+
console.log(chalk.dim(' Use --logout to sign out first'));
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Start Device Flow
|
|
66
|
+
console.log(chalk.bold('\n🔐 GitHub Authentication\n'));
|
|
67
|
+
console.log(chalk.dim('This enables skill search and other GitHub features.\n'));
|
|
68
|
+
const spinner = ora('Requesting authorization...').start();
|
|
69
|
+
let deviceData;
|
|
70
|
+
try {
|
|
71
|
+
deviceData = await requestDeviceCode();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
spinner.fail(chalk.red('Failed to start Device Flow'));
|
|
75
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
76
|
+
console.log(chalk.dim('\nAlternative: Set token manually:'));
|
|
77
|
+
console.log(chalk.cyan(' killer config githubToken <your-github-pat>'));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
spinner.stop();
|
|
81
|
+
// Display instructions
|
|
82
|
+
console.log(chalk.bold('Step 1:') + ` Open this URL in your browser:\n`);
|
|
83
|
+
console.log(chalk.cyan.bold(` ${deviceData.verification_uri}\n`));
|
|
84
|
+
console.log(chalk.bold('Step 2:') + ` Enter this code:\n`);
|
|
85
|
+
console.log(chalk.bgWhite.black.bold(` ${deviceData.user_code} \n`));
|
|
86
|
+
// Try to open browser automatically
|
|
87
|
+
try {
|
|
88
|
+
const { execSync } = await import('child_process');
|
|
89
|
+
const platform = process.platform;
|
|
90
|
+
if (platform === 'darwin') {
|
|
91
|
+
execSync(`open "${deviceData.verification_uri}"`, { stdio: 'pipe' });
|
|
92
|
+
}
|
|
93
|
+
else if (platform === 'linux') {
|
|
94
|
+
execSync(`xdg-open "${deviceData.verification_uri}"`, { stdio: 'pipe' });
|
|
95
|
+
}
|
|
96
|
+
else if (platform === 'win32') {
|
|
97
|
+
execSync(`start "${deviceData.verification_uri}"`, { stdio: 'pipe' });
|
|
98
|
+
}
|
|
99
|
+
console.log(chalk.dim(' (Browser opened automatically)\n'));
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Browser didn't open, user will need to open manually
|
|
103
|
+
}
|
|
104
|
+
// Poll for token
|
|
105
|
+
const pollSpinner = ora('Waiting for authorization...').start();
|
|
106
|
+
try {
|
|
107
|
+
const token = await pollForToken(deviceData.device_code, deviceData.interval);
|
|
108
|
+
// Save token
|
|
109
|
+
await saveGitHubToken(token);
|
|
110
|
+
pollSpinner.succeed(chalk.green('✅ Successfully authenticated with GitHub!'));
|
|
111
|
+
console.log(chalk.dim('\n💡 You can now use:'));
|
|
112
|
+
console.log(chalk.dim(' killer search <query> - Search for skills'));
|
|
113
|
+
console.log(chalk.dim(' killer login --status - Check auth status'));
|
|
114
|
+
console.log(chalk.dim(' killer login --logout - Sign out'));
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
pollSpinner.fail(chalk.red(`Authentication failed: ${error.message}`));
|
|
118
|
+
console.log(chalk.dim('\nAlternative: Set token manually:'));
|
|
119
|
+
console.log(chalk.cyan(' killer config githubToken <your-github-pat>'));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=login.js.map
|