transskill 0.4.0 → 0.4.2

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,316 +1,191 @@
1
1
  # TransSkill
2
2
 
3
- > **Write once, run on any agent.**
4
-
5
- TransSkill is a CLI tool that converts AI agent skill files between different platforms.
6
- Stop manually rewriting skills for every agent — convert with one command.
3
+ > **Write once, run on any agent. Search, audit, and install from 1,000+ skills.**
7
4
 
5
+ [![npm](https://img.shields.io/npm/v/transskill)](https://www.npmjs.com/package/transskill)
8
6
  [![中文文档](https://img.shields.io/badge/文档-中文-blue)](README.zh.md)
9
7
 
10
8
  ---
11
9
 
12
- ## The Problem
13
-
14
- Every AI coding agent has its own skill format.
15
- Claude Code uses SKILL.md, Cursor uses .cursorrules,
16
- OpenClaw uses AGENTS.md, and MCP servers use JSON Schema.
17
- A skill written for one platform is useless on another without manual rewriting.
18
-
19
- ## The Solution
10
+ ## What Makes TransSkill Different
20
11
 
21
- ```
22
- $ transskill convert .cursorrules --to skill.md
23
- $ transskill convert gh:user/weather-skill --to .cursorrules
24
- $ transskill convert ./my-skill/ --to .mdc --glob "**/*.ts"
25
- ```
12
+ ### 🗂️ Universal Skill Search — 1,115+ Skills, One Command
26
13
 
27
- One command. Any platform.
28
-
29
- ---
30
-
31
- ## Install
14
+ Stop hunting across GitHub repos. TransSkill indexes **1,115+ real-world agent skills** from the [awesome-agent-skills](https://github.com/VoltAgent/awesome-agent-skills) ecosystem — curated skills from **Anthropic, Stripe, Google Gemini, Vercel, Cloudflare, Angular, Supabase, and more**.
32
15
 
33
16
  ```bash
34
- npm install -g transskill
35
- ```
17
+ # Interactive search — type to filter, enter to install
18
+ npx transskill search
36
19
 
37
- Or run directly:
38
-
39
- ```bash
40
- npx transskill convert .cursorrules --to skill.md
20
+ # Fast CLI search
21
+ npx transskill search docx --json
22
+ npx transskill search python --tag linter
41
23
  ```
42
24
 
43
- ## Quick Start
44
-
45
- ```bash
46
- # SKILL.md → .cursorrules
47
- transskill convert my-skill.skill.md --to .cursorrules
25
+ Every skill is fetched directly from its **original source** — no copies, no stale mirrors.
48
26
 
49
- # .cursorrules SKILL.md
50
- transskill convert .cursorrules --to skill.md
27
+ ### 🛡️ Built-in Security Audit
51
28
 
52
- # .cursorrules .mdc (Cursor 2.3+ with file scoping)
53
- transskill convert .cursorrules --to .mdc --glob "src/**/*.ts"
29
+ Before you install any skill, TransSkill automatically scans it for security risks:
54
30
 
55
- # Full skill directory Cursor rules
56
- transskill convert ./weather-skill/ --to .cursorrules
31
+ | Level | What It Catches |
32
+ |-------|----------------|
33
+ | **L1 — Instructions** | `rm -rf`, `curl\|sh`, base64 obfuscation, prompt injection |
34
+ | **L2 — Permissions** | Overly broad globs, dangerous MCP tool names |
35
+ | **L3 — MCP** | Suspicious server commands (`sudo`, `kill`, `rm`) |
57
36
 
58
- # GitHub repo → Claude Code skill (direct install)
59
- transskill convert gh:user/weather-skill --to skill.md \
60
- --install-to ~/.claude/skills/
37
+ ```bash
38
+ # Audit any skill file
39
+ npx transskill audit ./skill.skill.md
61
40
 
62
- # Preview without writing
63
- transskill convert .cursorrules --to skill.md --dry-run
41
+ # Install with automatic audit (blocks if score < 90)
42
+ npx transskill install python-linter
64
43
  ```
65
44
 
66
- ## Input Sources
45
+ ### 🔄 Cross-Platform Conversion
67
46
 
68
- | Format | Example | Description |
69
- |--------|---------|-------------|
70
- | Local file | `./rules.cursorrules` | Single skill file |
71
- | Local directory | `./weather-skill/` | Full skill directory with scripts and assets |
72
- | GitHub repo | `gh:user/repo` | Shallow clone + convert |
73
- | GitHub subpath | `gh:user/repo/path` | Clone specific subdirectory |
74
- | GitHub URL | `https://github.com/user/repo` | Full URL support |
47
+ Convert between every major agent skill format — **without manual rewriting**.
75
48
 
76
- ## Supported Formats
49
+ ```bash
50
+ npx transskill convert .cursorrules --to skill.md
51
+ npx transskill convert gh:user/weather-skill --to .mdc
52
+ npx transskill convert ./my-skill/ --to .cursorrules --glob "src/**/*.ts"
53
+ ```
77
54
 
78
- | Format | Platforms | Input | Output |
79
- |--------|-----------|:-----:|:------:|
55
+ | Format | Platforms | In | Out |
56
+ |--------|-----------|:--:|:---:|
80
57
  | SKILL.md | Claude Code, Codex CLI, OpenClaw, Cursor | ✅ | ✅ |
81
58
  | .cursorrules | Cursor IDE | ✅ | ✅ |
82
59
  | .mdc | Cursor 2.3+ | ✅ | ✅ |
83
- | MCP JSON | Any MCP-compatible client | ✅ | — |
60
+ | MCP JSON | Any MCP client | ✅ | — |
84
61
  | SOUL.md | OpenClaw | ✅ | — |
85
62
 
86
- ## How It Works
87
-
88
- ```
89
- Input (file/dir/GitHub)
90
-
91
-
92
- InputResolver ──► Parser ──► Mapper ──► Renderer ──► Output
93
- (Local/GitHub) (read) (map) (write)
94
- ```
95
-
96
- TransSkill uses a pipeline architecture:
97
-
98
- 1. **InputResolver** — resolves your input (local path or GitHub URL) to a local file path
99
- 2. **Parser** — reads platform-specific format and converts to a universal intermediate representation
100
- 3. **Mapper** — maps fields between platforms, reporting what's preserved and what's lost
101
- 4. **Renderer** — writes the result in the target platform's format
102
-
103
- ## Examples
63
+ ---
104
64
 
105
- ### Convert a local file
65
+ ## Install
106
66
 
107
67
  ```bash
108
- $ cat .cursorrules
109
- # My TypeScript Rules
110
- Always use strict mode
111
- Prefer named exports
112
-
113
- $ transskill convert .cursorrules --to skill.md -o typescript-rule.md
114
- Conversion complete
115
- output: ./typescript-rule.md
116
- ```
68
+ npm install -g transskill
69
+ # or run directly:
70
+ npx transskill --help
71
+ ```
72
+
73
+ > **🌏 Mirror for restricted regions:** Set environment variables to bypass GitHub raw access limits:
74
+ > ```bash
75
+ > # Use ghproxy mirror (Chinese mainland) — use `set` instead of `export` on Windows CMD
76
+ > export TRANSKILL_GITHUB_MIRROR=https://ghproxy.net/
77
+ > npx transskill search
78
+ >
79
+ > # Or use your own HTTP proxy
80
+ > export HTTPS_PROXY=http://127.0.0.1:7890
81
+ >
82
+ > # Or override the registry URL entirely
83
+ > export TRANSKILL_REGISTRY_URL=https://your-mirror/registry.json
84
+ > ```
85
+ >
86
+ > After setting, the first load uses the mirror. Subsequent runs use local cache for 24h.
117
87
 
118
- ### Convert from GitHub to Cursor rules
88
+ ## Commands
119
89
 
120
- ```bash
121
- $ transskill convert gh:anthropics/skills/weather --to .cursorrules \
122
- --install-to .cursor/rules/
90
+ ### 🔍 Search & Install (Marketplace)
123
91
 
124
- ⬇️ Cloning: gh:anthropics/skills
125
- Installed: .cursor/rules/weather.cursorrules
126
- ```
92
+ ```bash
93
+ # Interactive search — browse 1,115+ skills
94
+ npx transskill search
127
95
 
128
- ### Directory conversion with loss report
96
+ # JSON output (scripts/CI)
97
+ npx transskill search react --json
129
98
 
130
- ```bash
131
- $ transskill convert ./weather-skill/ --to .cursorrules
132
- Directory conversion complete
133
- weather-skill/SKILL.md weather-skill.cursorrules
134
- weather-skill/scripts/ → ./scripts/ (copied)
135
- weather-skill/references/ → ./references/ (copied)
136
- ⚠️ SKILL.md scripts reference will not work in .cursorrules
99
+ # Install directly from registry → download → audit → convert → write
100
+ npx transskill install docx
101
+ npx transskill install python-linter --to .mdc
102
+ npx transskill install claude-api --to skill.md --dir ~/.claude/skills/
137
103
  ```
138
104
 
139
- ## Commands
105
+ ### 🔄 Convert
140
106
 
141
107
  ```bash
142
- # Convert a skill to another format
143
- transskill convert <input> --to <format> [options]
144
-
145
- # List all supported formats
146
- transskill list-formats
108
+ # Single file
109
+ npx transskill convert .cursorrules --to skill.md
147
110
 
148
- # Validate a skill file or directory
149
- transskill validate <input>
111
+ # GitHub repo
112
+ npx transskill convert gh:anthropics/skills/docx --to .cursorrules
150
113
 
151
- # Security audit a skill file or directory
152
- transskill audit <input> [options]
114
+ # Skill directory with assets
115
+ npx transskill convert ./skill-dir/ --to .cursorrules
153
116
 
154
- # See all options
155
- transskill --help
117
+ # Preview what would be lost
118
+ npx transskill diff .cursorrules --to skill.md
156
119
  ```
157
120
 
158
- ### Options for `convert`
159
-
160
- | Flag | Description |
161
- |------|-------------|
162
- | `-t, --to <format>` | Target format (required) |
163
- | `-o, --output <path>` | Output directory (default: current dir) |
164
- | `--install-to <path>` | Install directly to agent config dir |
165
- | `--glob <pattern>` | File glob pattern (for .mdc output) |
166
- | `--always-apply` | Always apply rule (for .mdc output) |
167
- | `--dry-run` | Preview without writing files |
168
- | `-v, --verbose` | Detailed conversion report |
169
-
170
- ### Options for `audit`
171
-
172
- | Flag | Description |
173
- |------|-------------|
174
- | `--format <type>` | Output format: `console` or `json` (default: console) |
175
- | `--quiet` | Only show summary score |
176
- | `--min-severity <level>` | Minimum severity: `info`, `low`, `medium`, `high`, `critical` (default: info) |
177
- | `--auditor <id>` | Run only specific auditor (can be repeated) |
178
- | `-v, --verbose` | Show detailed findings |
179
-
180
- ---
181
-
182
- ## Security Audit
183
-
184
- TransSkill includes a built-in security scanner that analyzes skill files for potential security risks before you install or use them.
121
+ ### 🛡️ Audit
185
122
 
186
123
  ```bash
187
- # Quick scan a skill file
188
- transskill audit my-skill.skill.md
189
-
190
- # JSON output for programmatic use
191
- transskill audit ./skill-dir/ --format json
192
-
193
- # Quiet mode — just the score
194
- transskill audit my-skill.skill.md --quiet
195
-
196
- # Only show high and critical issues
197
- transskill audit .cursorrules --min-severity high
198
-
199
- # Run a specific auditor only
200
- transskill audit mcp.json --auditor permission-scanner
124
+ npx transskill audit ./skill.skill.md
125
+ npx transskill audit ./skill-dir/ --format json --quiet
201
126
  ```
202
127
 
203
- ### Audit Levels
204
-
205
- The scanner checks three layers of security concerns:
206
-
207
- | Level | Scanner | What It Checks |
208
- |-------|---------|----------------|
209
- | **L1 — Instructions** | `instruction-scanner` | Dangerous shell commands (`rm -rf`, `sudo`, `curl|sh`), prompt injection patterns, base64/hex obfuscation, suspicious URLs, remote code execution |
210
- | **L2 — Permissions** | `permission-scanner` | Overly broad `.mdc` globs, `alwaysApply` without scope, dangerous MCP tool names (shell/exec), filesystem access, network access, Claude `disableModelInvocation` settings |
211
- | **L3 — MCP** | `permission-scanner` | MCP server commands (`rm`, `sudo`, `kill`), MCP tool capabilities that could be abused |
212
-
213
- > Note: L3 checks are handled by the same PermissionScanner that handles L2. They are reported together in a single scan pass.
214
-
215
- ### Scoring System
216
-
217
- The audit engine computes a numeric score (0–100) with an A–F letter grade:
218
-
219
- | Level | Score Range | Meaning |
220
- |-------|-------------|---------|
221
- | **A** | 90–100 | Excellent — minimal or no issues |
222
- | **B** | 70–89 | Good — minor low-severity findings |
223
- | **C** | 50–69 | Fair — moderate issues, review recommended |
224
- | **D** | 30–49 | Poor — significant issues, use with caution |
225
- | **F** | 0–29 | Critical — unsafe, do not use without remediation |
226
-
227
- Each finding carries a severity weight that reduces the score:
228
-
229
- | Severity | Weight |
230
- |----------|--------|
231
- | 🔴 Critical | −25 pts |
232
- | 🟠 High | −10 pts |
233
- | 🟡 Medium | −4 pts |
234
- | 🟢 Low | −1 pt |
235
- | ℹ️ Info | 0 pts |
236
-
237
- ### Output Formats
128
+ ### 📤 Publish
238
129
 
239
- **Console** (default): Human-readable report with colored severity labels, line numbers, and context snippets.
130
+ ```bash
131
+ # Submit a skill link to the registry (PR)
132
+ npx transskill publish ./my-skill/
240
133
 
134
+ # Batch publish skills from a directory
135
+ npx transskill publish-all ./skills/ --dry-run
241
136
  ```
242
- $ transskill audit my-skill.skill.md
243
-
244
- ╔══════════════════════════════════════════════╗
245
- ║ TransSkill Security Audit ║
246
- ║ Target: my-skill.skill.md ║
247
- ╚══════════════════════════════════════════════╝
248
-
249
- Audit Level: L1 + L2 + L3
250
137
 
251
- Findings (3):
252
-
253
- 🔴 Critical | L2-003b | MCP server 使用危险命令: rm
254
- → ./my-skill.skill.md
255
-
256
- 🟠 High | L1-001 | Detected dangerous command: rm -rf /
257
- → ./my-skill.skill.md:24
258
- → run: rm -rf /tmp/cache
138
+ ---
259
139
 
260
- 🟡 Medium | L2-001b | alwaysApply 规则 globs 范围过宽
261
- → ./my-skill.skill.md
140
+ ## How It Works
262
141
 
263
- Score: 65/100 — Level C
264
- 3 findings (1 critical, 1 high, 1 medium)
265
142
  ```
143
+ Input (file/dir/GitHub/Registry)
144
+
145
+
146
+ InputResolver ──► Parser ──► Mapper ──► Renderer ──► Output
147
+ (Local/GitHub) (read) (map) (write)
266
148
 
267
- **JSON**: Machine-readable for CI/CD pipelines and programmatic consumption.
268
-
269
- ```bash
270
- transskill audit ./skills/ --format json
149
+ Registry ──► Search ──► Install ──► Audit ──► Convert ──► Write
150
+ (1,115+) (TUI/JSON) (auto)
271
151
  ```
272
152
 
273
- **Quiet**: One-line summary, ideal for quick checks.
153
+ TransSkill's pipeline:
154
+ 1. **InputResolver** — resolves local/GitHub/registry sources
155
+ 2. **Parser** — reads 6 formats into a universal intermediate representation
156
+ 3. **Mapper** — cross-platform field mapping with loss reporting
157
+ 4. **Renderer** — writes in the target format
158
+ 5. **AuditEngine** — security scanning at every level
159
+ 6. **Marketplace** — search, install, and publish via the registry
274
160
 
275
- ```bash
276
- transskill audit .cursorrules --quiet
277
- # 📊 C (65/100) — 3 findings (1🔴 1🟠 1🟡)
278
- ```
161
+ ---
279
162
 
280
- ### CI/CD Integration
163
+ ## Security Audit Scoring
281
164
 
282
- Use the JSON flag to integrate audit results into your CI pipeline:
165
+ | Score | Grade | Meaning |
166
+ |-------|-------|---------|
167
+ | 90–100 | **A** | Excellent |
168
+ | 70–89 | **B** | Good — minor issues |
169
+ | 50–69 | **C** | Fair — review recommended |
170
+ | 30–49 | **D** | Poor — significant issues |
171
+ | 0–29 | **F** | Critical — do not use |
283
172
 
284
- ```bash
285
- #!/bin/bash
286
- # Fail build if score drops below B (70)
287
- RESULT=$(transskill audit ./skills/ --format json)
288
- SCORE=$(echo $RESULT | jq '.score.total')
289
- if [ "$SCORE" -lt 70 ]; then
290
- echo "❌ Security score $SCORE is below threshold (70)"
291
- exit 1
292
- fi
293
- echo "✅ Security score $SCORE — passing"
294
- ```
173
+ ---
295
174
 
296
175
  ## Project Status
297
176
 
298
- **v0.2.1 — Active development.** See [tasks.md](specs/tasks.md) for current progress.
177
+ **v0.4.0** — Active development.
299
178
 
300
- | Phase | Status |
301
- |-------|--------|
302
- | Phase 0: Project scaffold | Complete |
303
- | Phase 1: InputResolver + types | Complete |
304
- | Phase 2: Parser layer | Complete |
305
- | Phase 3: Mapper + Renderer | Complete |
306
- | Phase 4: CLI pipeline | Complete |
307
- | Phase 5: Tests | In Progress |
308
- | Phase 6: CI + publish | ⬜ Pending |
309
- | Phase A: Security audit | ✅ Complete |
179
+ | Feature | Status |
180
+ |---------|--------|
181
+ | Format conversion (6 formats) | Complete |
182
+ | Security audit (L1–L3) | Complete |
183
+ | Marketplace search (1,115+ skills) | Complete |
184
+ | Install (download audit → convert) | Complete |
185
+ | Publish (link submission) | Complete |
186
+ | Tests | In progress |
310
187
 
311
- ## Contributing
312
-
313
- See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add a new format.
188
+ ---
314
189
 
315
190
  ## License
316
191
 
package/README.zh.md CHANGED
@@ -1,319 +1,192 @@
1
1
  # TransSkill
2
2
 
3
- > **一次编写,全平台运行。**
4
-
5
- TransSkill 是一个跨 AI Agent 平台的技能格式转换工具。
6
- 无需为每个 Agent 手动重写技能——一条命令搞定。
3
+ > **一次编写,全平台运行。搜索、审计、安装 1,000+ 个技能。**
7
4
 
5
+ [![npm](https://img.shields.io/npm/v/transskill)](https://www.npmjs.com/package/transskill)
8
6
  [![English Docs](https://img.shields.io/badge/docs-English-blue)](README.md)
9
7
 
10
8
  ---
11
9
 
12
- ## 问题
13
-
14
- 每种 AI 编码 Agent 都有自己的技能格式:
15
- - Claude Code 用 SKILL.md
16
- - Cursor 用 .cursorrules
17
- - OpenClaw 用 AGENTS.md
18
- - MCP Server 用 JSON Schema
19
-
20
- 为一个平台写的技能,在另一个平台上无法直接使用。
10
+ ## ✨ TransSkill 的三大亮点
21
11
 
22
- ## 解决方案
23
-
24
- ```
25
- $ transskill convert .cursorrules --to skill.md
26
- $ transskill convert gh:user/weather-skill --to .cursorrules
27
- $ transskill convert ./my-skill/ --to .mdc --glob "**/*.ts"
28
- ```
12
+ ### 🗂️ 全站搜索 — 一键检索 1,115+ 个技能
29
13
 
30
- 一条命令,全平台通用。
31
-
32
- ---
33
-
34
- ## 安装
14
+ 不用再到处翻 GitHub 仓库了。TransSkill 自动集成 [awesome-agent-skills](https://github.com/VoltAgent/awesome-agent-skills) 生态,索引了 **1,115+ 个真实可用的 Agent 技能**,来自 **Anthropic、Stripe、Google Gemini、Vercel、Cloudflare、Angular、Supabase** 等官方团队。
35
15
 
36
16
  ```bash
37
- npm install -g transskill
38
- ```
39
-
40
- 或者直接运行:
17
+ # 交互式搜索 打字过滤,回车安装
18
+ npx transskill search
41
19
 
42
- ```bash
43
- npx transskill convert .cursorrules --to skill.md
20
+ # 命令行搜索
21
+ npx transskill search docx --json
22
+ npx transskill search python --tag linter
44
23
  ```
45
24
 
46
- ## 快速上手
47
-
48
- ```bash
49
- # SKILL.md → .cursorrules
50
- transskill convert my-skill.skill.md --to .cursorrules
25
+ 每个技能直接从**原始仓库**获取 — 不存副本,不会过时。
51
26
 
52
- # .cursorrules SKILL.md
53
- transskill convert .cursorrules --to skill.md
27
+ ### 🛡️ 安全审计 — 安装前自动扫描
54
28
 
55
- # .cursorrules → .mdc(带文件范围限定)
56
- transskill convert .cursorrules --to .mdc --glob "src/**/*.ts"
29
+ 安装任何技能之前,TransSkill 自动进行三层安全检查:
57
30
 
58
- # 完整 skill 目录 → Cursor 规则
59
- transskill convert ./weather-skill/ --to .cursorrules
31
+ | 级别 | 检测内容 |
32
+ |-------|----------|
33
+ | **L1 — 指令扫描** | `rm -rf`、`curl\|sh`、base64 混淆、提示注入 |
34
+ | **L2 — 权限扫描** | glob 范围过宽、危险 MCP 工具名 |
35
+ | **L3 — MCP 扫描** | 可疑服务器命令(`sudo`、`kill`、`rm`) |
60
36
 
61
- # GitHub 仓库 → 直接安装到 Claude Code
62
- transskill convert gh:user/weather-skill --to skill.md \
63
- --install-to ~/.claude/skills/
37
+ ```bash
38
+ # 审计任意技能文件
39
+ npx transskill audit ./skill.skill.md
64
40
 
65
- # 预览效果(不实际写入文件)
66
- transskill convert .cursorrules --to skill.md --dry-run
41
+ # 安装时自动审计(评分 < 90 会拦截)
42
+ npx transskill install python-linter
67
43
  ```
68
44
 
69
- ## 输入源
45
+ ### 🔄 格式转换 — 跨平台互通
70
46
 
71
- | 格式 | 示例 | 说明 |
72
- |------|------|------|
73
- | 本地文件 | `./rules.cursorrules` | 单文件转换 |
74
- | 本地目录 | `./weather-skill/` | 完整 skill 目录(含脚本和资源) |
75
- | GitHub 仓库 | `gh:user/repo` | 自动 clone + 转换 |
76
- | GitHub 子路径 | `gh:user/repo/path` | 仓库内特定子目录 |
77
- | GitHub URL | `https://github.com/user/repo` | 完整 URL 支持 |
47
+ 在所有主流 Agent 格式间自由转换,**无需手动重写**。
78
48
 
79
- ## 支持格式
49
+ ```bash
50
+ npx transskill convert .cursorrules --to skill.md
51
+ npx transskill convert gh:user/weather-skill --to .mdc
52
+ npx transskill convert ./my-skill/ --to .cursorrules --glob "src/**/*.ts"
53
+ ```
80
54
 
81
55
  | 格式 | 平台 | 输入 | 输出 |
82
- |------|------|:---:|:----:|
56
+ |--------|-----------|:----:|:----:|
83
57
  | SKILL.md | Claude Code, Codex CLI, OpenClaw, Cursor | ✅ | ✅ |
84
58
  | .cursorrules | Cursor IDE | ✅ | ✅ |
85
59
  | .mdc | Cursor 2.3+ | ✅ | ✅ |
86
- | MCP JSON | 任何 MCP 兼容客户端 | ✅ | — |
60
+ | MCP JSON | 任意 MCP 客户端 | ✅ | — |
87
61
  | SOUL.md | OpenClaw | ✅ | — |
88
62
 
89
- ## 命令
90
-
91
- ```bash
92
- # 转换技能格式
93
- transskill convert <input> --to <format> [options]
94
-
95
- # 列出所有支持的格式
96
- transskill list-formats
97
-
98
- # 验证技能文件或目录格式
99
- transskill validate <input>
100
-
101
- # 安全审计技能文件或目录
102
- transskill audit <input> [options]
63
+ ---
103
64
 
104
- # 查看所有选项
105
- transskill --help
106
- ```
65
+ ## 安装
107
66
 
108
- ### convert 选项
67
+ ```bash
68
+ npm install -g transskill
69
+ # 或直接运行:
70
+ npx transskill --help
71
+ ```
72
+
73
+ > **🌏 国内用户加速:** 如果 `raw.githubusercontent.com` 访问慢,设置镜像环境变量:
74
+ > ```bash
75
+ > # 使用 ghproxy 镜像(Windows CMD 用 set 而非 export)
76
+ > export TRANSKILL_GITHUB_MIRROR=https://ghproxy.net/
77
+ > npx transskill search
78
+ >
79
+ > # 或使用自己的代理
80
+ > export HTTPS_PROXY=http://127.0.0.1:7890
81
+ >
82
+ > # 也可以自定义 registry 地址
83
+ > export TRANSKILL_REGISTRY_URL=https://your-mirror/registry.json
84
+ > ```
85
+ >
86
+ > 设置后首次加载 registry 会快很多,之后 24h 内走本地缓存无需重复下载。
109
87
 
110
- | 参数 | 说明 |
111
- |------|------|
112
- | `-t, --to <format>` | 目标格式(必填) |
113
- | `-o, --output <path>` | 输出目录(默认当前目录) |
114
- | `--install-to <path>` | 直接安装到 Agent 配置目录 |
115
- | `--glob <pattern>` | 文件匹配模式(.mdc 输出时使用) |
116
- | `--always-apply` | 总是加载该规则(.mdc 输出时使用) |
117
- | `--dry-run` | 预览模式,不写入文件 |
118
- | `-v, --verbose` | 显示详细转换报告 |
88
+ ## 命令
119
89
 
120
- ### audit 选项
90
+ ### 🔍 搜索与安装(市场)
121
91
 
122
- | 参数 | 说明 |
123
- |------|------|
124
- | `--format <type>` | 输出格式:`console` 或 `json`(默认 console) |
125
- | `--quiet` | 仅显示评分摘要 |
126
- | `--min-severity <level>` | 最低报告级别:`info`, `low`, `medium`, `high`, `critical`(默认 info) |
127
- | `--auditor <id>` | 仅运行指定的审计器(可重复使用) |
128
- | `-v, --verbose` | 显示详细发现 |
92
+ ```bash
93
+ # 交互式搜索 — 浏览 1,115+ 个技能
94
+ npx transskill search
129
95
 
130
- ## 工作原理
96
+ # JSON 输出(脚本/CI 用)
97
+ npx transskill search react --json
131
98
 
99
+ # 直接从市场安装 → 下载 → 审计 → 转换 → 写入
100
+ npx transskill install docx
101
+ npx transskill install python-linter --to .mdc
102
+ npx transskill install claude-api --to skill.md --dir ~/.claude/skills/
132
103
  ```
133
- 输入 (文件/目录/GitHub)
134
-
135
-
136
- InputResolver ──► Parser ──► Mapper ──► Renderer ──► 输出
137
- (本地/GitHub) (读取) (映射) (写入)
138
- ```
139
-
140
- TransSkill 采用管道架构:
141
-
142
- 1. **InputResolver** — 将输入(本地路径或 GitHub URL)解析为本地文件路径
143
- 2. **Parser** — 读取平台特有格式,转换为通用中间表示
144
- 3. **Mapper** — 在平台间映射字段,报告保留和丢失的信息
145
- 4. **Renderer** — 以目标平台格式输出结果
146
104
 
147
- ## 示例
148
-
149
- ### 转换本地文件
105
+ ### 🔄 转换
150
106
 
151
107
  ```bash
152
- $ cat .cursorrules
153
- # My TypeScript Rules
154
- Always use strict mode
155
- Prefer named exports
156
-
157
- $ transskill convert .cursorrules --to skill.md -o typescript-rule.md
158
- ✅ 转换完成
159
- 输出: ./typescript-rule.md
160
- ```
108
+ # 单文件
109
+ npx transskill convert .cursorrules --to skill.md
161
110
 
162
- ### GitHub 转换到 Cursor 规则
111
+ # GitHub 仓库
112
+ npx transskill convert gh:anthropics/skills/docx --to .cursorrules
163
113
 
164
- ```bash
165
- $ transskill convert gh:anthropics/skills/weather --to .cursorrules \
166
- --install-to .cursor/rules/
114
+ # 技能目录(含附属文件)
115
+ npx transskill convert ./skill-dir/ --to .cursorrules
167
116
 
168
- ⬇️ 正在克隆: gh:anthropics/skills
169
- 已安装: .cursor/rules/weather.cursorrules
117
+ # 预览转换损失
118
+ npx transskill diff .cursorrules --to skill.md
170
119
  ```
171
120
 
172
- ### 目录转换(含映射损失报告)
121
+ ### 🛡️ 审计
173
122
 
174
123
  ```bash
175
- $ transskill convert ./weather-skill/ --to .cursorrules
176
- 目录转换完成
177
- weather-skill/SKILL.md → weather-skill.cursorrules
178
- weather-skill/scripts/ → ./scripts/(已复制)
179
- weather-skill/references/ → ./references/(已复制)
180
- ⚠️ SKILL.md 中的脚本引用在 .cursorrules 中无法使用
124
+ npx transskill audit ./skill.skill.md
125
+ npx transskill audit ./skill-dir/ --format json --quiet
181
126
  ```
182
127
 
183
- ---
184
-
185
- ## 安全审计
186
-
187
- TransSkill 内置安全扫描器,可以在安装或使用技能文件之前分析其中的潜在安全风险。
128
+ ### 📤 发布
188
129
 
189
130
  ```bash
190
- # 快速扫描技能文件
191
- transskill audit my-skill.skill.md
192
-
193
- # JSON 格式输出,适合程序化处理
194
- transskill audit ./skill-dir/ --format json
195
-
196
- # 安静模式——仅显示评分
197
- transskill audit my-skill.skill.md --quiet
131
+ # 提交技能链接到市场(自动 PR)
132
+ npx transskill publish ./my-skill/
198
133
 
199
- # 仅显示高危及以上问题
200
- transskill audit .cursorrules --min-severity high
201
-
202
- # 仅运行指定审计器
203
- transskill audit mcp.json --auditor permission-scanner
134
+ # 批量发布目录下的所有技能
135
+ npx transskill publish-all ./skills/ --dry-run
204
136
  ```
205
137
 
206
- ### 审计级别
207
-
208
- 扫描器检查三个安全层级:
209
-
210
- | 级别 | 扫描器 | 检查内容 |
211
- |------|--------|----------|
212
- | **L1 — 指令扫描** | `instruction-scanner` | 危险 shell 命令(`rm -rf`、`sudo`、`curl|sh`)、提示注入模式、base64/hex 混淆、可疑 URL、远程代码执行 |
213
- | **L2 — 权限扫描** | `permission-scanner` | `.mdc` glob 范围过宽、`alwaysApply` 无范围限制、危险 MCP 工具名(shell/exec)、文件系统访问、网络访问、Claude `disableModelInvocation` 设置 |
214
- | **L3 — MCP 扫描** | `permission-scanner` | MCP 服务器命令(`rm`、`sudo`、`kill`)、可能被滥用的 MCP 工具能力 |
215
-
216
- > 注:L3 检查由同一個 PermissionScanner 处理,与 L2 在一次扫描中一并报告。
217
-
218
- ### 评分体系
219
-
220
- 审计引擎计算 0–100 的数值评分,对应 A–F 等级:
221
-
222
- | 等级 | 分数范围 | 含义 |
223
- |------|----------|------|
224
- | **A** | 90–100 | 优秀——几乎没有安全问题 |
225
- | **B** | 70–89 | 良好——存在少量低风险问题 |
226
- | **C** | 50–69 | 一般——存在中等风险,建议审查 |
227
- | **D** | 30–49 | 较差——存在显著风险,谨慎使用 |
228
- | **F** | 0–29 | 危险——存在严重风险,请勿直接使用 |
229
-
230
- 每条发现按严重程度扣分:
231
-
232
- | 严重程度 | 扣分 |
233
- |----------|------|
234
- | 🔴 严重(Critical) | −25 分 |
235
- | 🟠 高危(High) | −10 分 |
236
- | 🟡 中危(Medium) | −4 分 |
237
- | 🟢 低危(Low) | −1 分 |
238
- | ℹ️ 信息(Info) | 0 分 |
239
-
240
- ### 输出格式
241
-
242
- **控制台**(默认):带颜色标签、行号和上下文片段的可读报告。
243
-
244
- ```
245
- $ transskill audit my-skill.skill.md
246
-
247
- ╔══════════════════════════════════════════════╗
248
- ║ TransSkill Security Audit ║
249
- ║ 目标文件: my-skill.skill.md ║
250
- ╚══════════════════════════════════════════════╝
251
-
252
- 审计等级: L1 + L2 + L3
253
-
254
- 发现 (3 项):
255
-
256
- 🔴 严重 | L2-003b | MCP 服务器使用了危险命令: rm
257
- → ./my-skill.skill.md
258
-
259
- 🟠 高危 | L1-001 | 检测到危险命令: rm -rf /
260
- → ./my-skill.skill.md:24
261
- → run: rm -rf /tmp/cache
138
+ ---
262
139
 
263
- 🟡 中危 | L2-001b | alwaysApply 规则 globs 范围过宽
264
- → ./my-skill.skill.md
140
+ ## 工作原理
265
141
 
266
- 评分: 65/100 — C 级
267
- 3 项发现 (1 严重, 1 高危, 1 中危)
268
142
  ```
143
+ 输入 (文件/目录/GitHub/市场)
144
+
145
+
146
+ InputResolver ──► Parser ──► Mapper ──► Renderer ──► 输出
147
+ (本地/GitHub) (读取) (映射) (写入)
269
148
 
270
- **JSON**:适合 CI/CD 流水线和程序化处理。
271
-
272
- ```bash
273
- transskill audit ./skills/ --format json
149
+ 市场 ──► 搜索 ──► 安装 ──► 审计 ──► 转换 ──► 写入
150
+ (1,115+) (TUI/JSON) (自动)
274
151
  ```
275
152
 
276
- **安静模式**:一行摘要,适合快速检查。
153
+ TransSkill 的管道架构:
277
154
 
278
- ```bash
279
- transskill audit .cursorrules --quiet
280
- # 📊 C (65/100) 3 项发现 (1🔴 1🟠 1🟡)
281
- ```
155
+ 1. **InputResolver** — 解析本地/GitHub/市场来源
156
+ 2. **Parser** 读取 6 种格式为通用中间表示
157
+ 3. **Mapper**跨平台字段映射,报告保留和丢失的信息
158
+ 4. **Renderer** — 以目标格式输出
159
+ 5. **AuditEngine** — 全层级安全扫描
160
+ 6. **Marketplace** — 搜索、安装、发布
282
161
 
283
- ### CI/CD 集成
162
+ ---
284
163
 
285
- 结合 JSON 输出将审计结果集成到 CI 流水线:
164
+ ## 安全审计评分
286
165
 
287
- ```bash
288
- #!/bin/bash
289
- # 评分低于 B 级(70 分)则构建失败
290
- RESULT=$(transskill audit ./skills/ --format json)
291
- SCORE=$(echo $RESULT | jq '.score.total')
292
- if [ "$SCORE" -lt 70 ]; then
293
- echo "❌ 安全评分 $SCORE 低于阈值 (70)"
294
- exit 1
295
- fi
296
- echo "✅ 安全评分 $SCORE — 通过"
297
- ```
166
+ | 分数 | 等级 | 含义 |
167
+ |-------|-------|---------|
168
+ | 90–100 | **A** | 优秀 |
169
+ | 70–89 | **B** | 良好 — 少量低风险问题 |
170
+ | 50–69 | **C** | 一般 — 建议审查 |
171
+ | 30–49 | **D** | 较差 — 显著风险 |
172
+ | 0–29 | **F** | 危险 — 请勿使用 |
298
173
 
299
- ## 项目进度
174
+ ---
300
175
 
301
- **v0.2.1 — 活跃开发中。** 详见 [tasks.md](specs/tasks.md)。
176
+ ## 项目状态
302
177
 
303
- | 阶段 | 状态 |
304
- |------|------|
305
- | Phase 0: 项目脚手架 | ✅ 已完成 |
306
- | Phase 1: InputResolver + 类型定义 | ✅ 已完成 |
307
- | Phase 2: Parser 层 | ✅ 已完成 |
308
- | Phase 3: Mapper + Renderer | ✅ 已完成 |
309
- | Phase 4: CLI 完整管道 | ✅ 已完成 |
310
- | Phase 5: 测试覆盖 | ⬜ 进行中 |
311
- | Phase 6: CI + 发布 | ⬜ 待完成 |
312
- | Phase A: 安全审计 | ✅ 已完成 |
178
+ **v0.4.0** 活跃开发中。
313
179
 
314
- ## 贡献指南
180
+ | 功能 | 状态 |
181
+ |---------|--------|
182
+ | ✅ 格式转换(6 种格式) | 已完成 |
183
+ | ✅ 安全审计(L1–L3) | 已完成 |
184
+ | ✅ 市场搜索(1,115+ 个技能) | 已完成 |
185
+ | ✅ 安装(下载 → 审计 → 转换) | 已完成 |
186
+ | ✅ 发布(链接提交) | 已完成 |
187
+ | ⬜ 测试覆盖 | 进行中 |
315
188
 
316
- 详见 [CONTRIBUTING.md](CONTRIBUTING.md)。
189
+ ---
317
190
 
318
191
  ## 许可证
319
192
 
package/dist/index.js CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"registry-client.d.ts","sourceRoot":"","sources":["../../src/marketplace/registry-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA2I5E;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,YAAY,UAAQ,EACpB,eAAe,UAAO,GACrB,OAAO,CAAC,aAAa,CAAC,CA+BxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CASpF;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,GACX,aAAa,GAAG,SAAS,CAW3B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAkBlF"}
1
+ {"version":3,"file":"registry-client.d.ts","sourceRoot":"","sources":["../../src/marketplace/registry-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAoK5E;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,YAAY,UAAQ,EACpB,eAAe,UAAO,GACrB,OAAO,CAAC,aAAa,CAAC,CAsCxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CASpF;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,GACX,aAAa,GAAG,SAAS,CAW3B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAkBlF"}
@@ -11,7 +11,13 @@ import { homedir } from 'node:os';
11
11
  // ──────────────────────────────────────────────
12
12
  // Constants
13
13
  // ──────────────────────────────────────────────
14
- const REGISTRY_URL = 'https://raw.githubusercontent.com/ljk-777/transskill-registry/main/registry.json';
14
+ // Allow users to override the registry URL via env var (e.g. mirror/proxy)
15
+ const REGISTRY_URL = process.env.TRANSKILL_REGISTRY_URL ||
16
+ 'https://raw.githubusercontent.com/ljk-777/transskill-registry/main/registry.json';
17
+ // GitHub raw content mirror for users in regions with restricted access.
18
+ // Set TRANSKILL_GITHUB_MIRROR=https://ghproxy.net/ for a common China mirror.
19
+ // The mirror prefix is prepended to all raw.githubusercontent.com URLs.
20
+ const GITHUB_RAW_MIRROR = process.env.TRANSKILL_GITHUB_MIRROR || '';
15
21
  const CACHE_DIR = join(homedir(), '.transskill', 'cache');
16
22
  const CACHE_FILE = join(CACHE_DIR, 'registry.json');
17
23
  const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
@@ -51,8 +57,25 @@ function writeCache(index) {
51
57
  ensureCacheDir();
52
58
  writeFileSync(CACHE_FILE, `${new Date().toISOString()}\n${JSON.stringify(index)}`, 'utf-8');
53
59
  }
60
+ /**
61
+ * Prepend GitHub raw mirror if set.
62
+ *
63
+ * ghproxy.net format: https://ghproxy.net/https://raw.githubusercontent.com/...
64
+ * So we prepend the mirror prefix to the original URL.
65
+ */
66
+ function mirrorUrl(rawUrl) {
67
+ if (!GITHUB_RAW_MIRROR)
68
+ return rawUrl;
69
+ if (rawUrl.startsWith('https://raw.githubusercontent.com/')) {
70
+ // Strip trailing slash from mirror, join with raw URL
71
+ const mirror = GITHUB_RAW_MIRROR.replace(/\/+$/, '');
72
+ return `${mirror}/${rawUrl}`;
73
+ }
74
+ return rawUrl;
75
+ }
54
76
  async function fetchRemote() {
55
- const res = await fetch(REGISTRY_URL);
77
+ const url = mirrorUrl(REGISTRY_URL);
78
+ const res = await fetch(url);
56
79
  if (!res.ok)
57
80
  throw new Error(`Failed to fetch registry: ${res.status} ${res.statusText}`);
58
81
  return (await res.json());
@@ -65,7 +88,7 @@ async function fetchRemote() {
65
88
  * Each section has a table of skills with links to officialskills.sh.
66
89
  */
67
90
  async function fetchAwesomeAgentSkills() {
68
- const readmeUrl = 'https://raw.githubusercontent.com/VoltAgent/awesome-agent-skills/main/README.md';
91
+ const readmeUrl = mirrorUrl('https://raw.githubusercontent.com/VoltAgent/awesome-agent-skills/main/README.md');
69
92
  const res = await fetch(readmeUrl);
70
93
  if (!res.ok) {
71
94
  console.warn(` ⚠ awesome-agent-skills: HTTP ${res.status}`);
@@ -88,7 +111,7 @@ async function fetchAwesomeAgentSkills() {
88
111
  const author = parts[0];
89
112
  const name = parts[1] || fullName;
90
113
  // Derive download URL from the officialskills.sh page or GitHub
91
- const downloadUrl = deriveDownloadUrl(url, name, author);
114
+ const downloadUrl = mirrorUrl(deriveDownloadUrl(url, name, author));
92
115
  skills.push({
93
116
  name,
94
117
  version: '1.0.0',
@@ -134,35 +157,40 @@ function deriveDownloadUrl(url, name, author) {
134
157
  * Optionally enriches with external sources.
135
158
  */
136
159
  export async function getRegistry(forceRefresh = false, includeExternal = true) {
160
+ // 1. Load base index: from cache (if fresh) or remote
161
+ let index = null;
137
162
  if (!forceRefresh) {
138
- const cached = readCache();
139
- if (cached)
140
- return cached;
163
+ index = readCache();
164
+ }
165
+ if (!index) {
166
+ index = await fetchRemote();
167
+ writeCache(index);
141
168
  }
142
- const remote = await fetchRemote();
143
- writeCache(remote);
144
- // Enrich with external sources
169
+ // 2. Always try to enrich with external sources (even from cache)
170
+ // This ensures broken/empty external data gets fixed on next run
145
171
  if (includeExternal) {
146
172
  try {
147
173
  const externalSkills = await fetchAwesomeAgentSkills();
148
174
  if (externalSkills.length > 0) {
149
- // Merge: registry entries take priority (dedup by name)
150
- const existingNames = new Set(remote.skills.map((s) => s.name));
175
+ const existingNames = new Set(index.skills.map((s) => s.name));
176
+ let changed = false;
151
177
  for (const ext of externalSkills) {
152
178
  if (!existingNames.has(ext.name)) {
153
- remote.skills.push(ext);
179
+ index.skills.push(ext);
180
+ changed = true;
154
181
  }
155
182
  }
156
- remote.updated = new Date().toISOString();
157
- // Rewrite cache with enriched data
158
- writeCache(remote);
183
+ if (changed) {
184
+ index.updated = new Date().toISOString();
185
+ writeCache(index);
186
+ }
159
187
  }
160
188
  }
161
189
  catch {
162
190
  // External enrich is best-effort
163
191
  }
164
192
  }
165
- return remote;
193
+ return index;
166
194
  }
167
195
  /**
168
196
  * Simple fuzzy search across skill name, description, and tags.
@@ -197,11 +225,11 @@ export function findSkill(registry, name) {
197
225
  * Fetches directly from the original source URL.
198
226
  */
199
227
  export async function getSkillDetail(manifest) {
200
- const res = await fetch(manifest.downloadUrl);
228
+ const res = await fetch(mirrorUrl(manifest.downloadUrl));
201
229
  if (!res.ok) {
202
230
  // Fallback: try common URL patterns
203
231
  const fallbackUrl = `https://raw.githubusercontent.com/${manifest.author}/skills/main/skills/${manifest.name}/SKILL.md`;
204
- const fallbackRes = await fetch(fallbackUrl);
232
+ const fallbackRes = await fetch(mirrorUrl(fallbackUrl));
205
233
  if (!fallbackRes.ok) {
206
234
  throw new Error(`Failed to fetch skill "${manifest.name}" from ${manifest.downloadUrl} ` +
207
235
  `(HTTP ${res.status}) and fallback ${fallbackUrl} (HTTP ${fallbackRes.status})`);
@@ -1 +1 @@
1
- {"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../src/marketplace/registry-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../src/marketplace/registry-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/marketplace/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4CH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDhB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/marketplace/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgIH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDhB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB"}
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Interactive search TUI — search and browse skills from the registry.
3
3
  */
4
- import { intro, outro, autocomplete, isCancel, log, spinner } from '@clack/prompts';
4
+ import { intro, outro, autocomplete, select, isCancel, log, spinner } from '@clack/prompts';
5
5
  import chalk from 'chalk';
6
6
  import { getRegistry, searchSkills } from './registry-client.js';
7
7
  import { showSkillInfo } from './info.js';
8
+ import { installSkill } from './install.js';
8
9
  const BRAND = chalk.cyan('◈ TransSkill Marketplace');
9
10
  /**
10
11
  * Format a skill manifest as an autocomplete option label.
@@ -31,10 +32,87 @@ function skillFilter(search, option) {
31
32
  s.tags.some((t) => t.toLowerCase().includes(q)));
32
33
  }
33
34
  /**
34
- * Show detailed info about a selected skill.
35
+ * Ask a simple question via readline (for Windows CMD where TUI is broken).
36
+ */
37
+ function askQuestion(prompt, validOptions) {
38
+ return new Promise((resolve) => {
39
+ const rl = require('node:readline').createInterface({
40
+ input: process.stdin,
41
+ output: process.stdout,
42
+ });
43
+ const ask = () => {
44
+ rl.question(`${prompt} `, (answer) => {
45
+ const trimmed = answer.trim();
46
+ if (validOptions.includes(trimmed)) {
47
+ rl.close();
48
+ resolve(trimmed);
49
+ }
50
+ else {
51
+ console.log(` (enter one of: ${validOptions.join(', ')})`);
52
+ ask();
53
+ }
54
+ });
55
+ };
56
+ ask();
57
+ });
58
+ }
59
+ /**
60
+ * Show action menu after selecting a skill: preview, install, or back.
61
+ * Uses select when terminal supports it, falls back to simple Q&A.
35
62
  */
36
63
  async function showAndOfferInstall(manifest) {
37
- await showSkillInfo(manifest.name);
64
+ const needsFallback = process.platform === 'win32' && !process.env.WT_SESSION;
65
+ let action;
66
+ if (needsFallback) {
67
+ console.log(`\n [${manifest.name} v${manifest.version}]`);
68
+ const answer = await askQuestion(' Action (1=Preview, 2=Install, 3=Back):', ['1', '2', '3']);
69
+ const map = { '1': 'preview', '2': 'install', '3': 'back' };
70
+ action = map[answer];
71
+ }
72
+ else {
73
+ action = await select({
74
+ message: `Selected ${chalk.bold(manifest.name)} v${manifest.version}`,
75
+ options: [
76
+ { value: 'preview', label: 'Preview Show full description and README' },
77
+ { value: 'install', label: 'Install Download and convert to local format' },
78
+ { value: 'back', label: 'Back Return to search' },
79
+ ],
80
+ });
81
+ if (isCancel(action))
82
+ return;
83
+ }
84
+ if (action === 'preview') {
85
+ await showSkillInfo(manifest.name);
86
+ await showAndOfferInstall(manifest);
87
+ }
88
+ else if (action === 'install') {
89
+ let targetFormat;
90
+ if (needsFallback) {
91
+ const answer = await askQuestion(' Format (1=.mdc, 2=.cursorrules, 3=skill.md, 4=claude.md, 5=mcp.json):', ['1', '2', '3', '4', '5']);
92
+ const formatMap = {
93
+ '1': '.mdc', '2': '.cursorrules', '3': 'skill.md',
94
+ '4': 'claude.md', '5': 'mcp.json',
95
+ };
96
+ targetFormat = formatMap[answer];
97
+ }
98
+ else {
99
+ const fmt = await select({
100
+ message: 'Select target format:',
101
+ options: [
102
+ { value: '.mdc', label: '.mdc (Cursor IDE)', hint: 'Supports globs + alwaysApply' },
103
+ { value: '.cursorrules', label: '.cursorrules (Cursor IDE)', hint: 'Classic Cursor format' },
104
+ { value: 'skill.md', label: 'skill.md (Universal)', hint: 'Canonical format' },
105
+ { value: 'claude.md', label: 'claude.md (Claude Code)', hint: 'Claude Code agent skill' },
106
+ { value: 'mcp.json', label: 'mcp.json (MCP Server)', hint: 'MCP server definition' },
107
+ ],
108
+ });
109
+ if (isCancel(fmt))
110
+ return;
111
+ targetFormat = fmt;
112
+ }
113
+ await installSkill(manifest.name, { to: targetFormat, force: false, noTui: true });
114
+ }
115
+ // back → exit
38
116
  }
39
117
  /**
40
118
  * Launch interactive search TUI.
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/marketplace/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/marketplace/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-detector.d.ts","sourceRoot":"","sources":["../../src/utils/format-detector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAiBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,CA8E7E"}
1
+ {"version":3,"file":"format-detector.d.ts","sourceRoot":"","sources":["../../src/utils/format-detector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAiBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,CAyF7E"}
@@ -50,7 +50,10 @@ export function detectFormatFromPath(localPath) {
50
50
  }
51
51
  // File mode - detect by extension and content
52
52
  const ext = extname(localPath).toLowerCase();
53
+ const baseName = basename(localPath);
53
54
  // Quick extension-based detection
55
+ // Note: extname('.cursorrules') returns '' because Node treats
56
+ // leading-dot files as extension-less. Check basename.
54
57
  const extMap = {
55
58
  '.cursorrules': '.cursorrules',
56
59
  '.mdc': '.mdc',
@@ -58,11 +61,18 @@ export function detectFormatFromPath(localPath) {
58
61
  if (ext in extMap) {
59
62
  return { format: extMap[ext], isDirectory: false };
60
63
  }
64
+ // Check basename for hidden files (start with dot)
65
+ if (baseName.startsWith('.')) {
66
+ for (const [extKey, fmt] of Object.entries(extMap)) {
67
+ if (baseName.endsWith(extKey)) {
68
+ return { format: fmt, isDirectory: false };
69
+ }
70
+ }
71
+ }
61
72
  if (ext === '.json') {
62
73
  return { format: 'mcp.json', isDirectory: false };
63
74
  }
64
75
  if (ext === '.md') {
65
- const baseName = localPath.split('/').pop() || localPath.split('\\').pop() || '';
66
76
  // Check by filename
67
77
  if (baseName === 'SOUL.md')
68
78
  return { format: 'soul.md', isDirectory: false };
@@ -1 +1 @@
1
- {"version":3,"file":"format-detector.js","sourceRoot":"","sources":["../../src/utils/format-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-detector.js","sourceRoot":"","sources":["../../src/utils/format-detector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "transskill",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Cross-platform AI agent skill converter - Write once, run on any agent",
5
5
  "bin": {
6
6
  "transskill": "dist/index.js"