transskill 0.3.1 → 0.4.1
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 +103 -243
- package/README.zh.md +103 -245
- package/dist/marketplace/publish-all.d.ts +2 -6
- package/dist/marketplace/publish-all.d.ts.map +1 -1
- package/dist/marketplace/publish-all.js +17 -56
- package/dist/marketplace/publish-all.js.map +1 -1
- package/dist/marketplace/publish.d.ts +8 -6
- package/dist/marketplace/publish.d.ts.map +1 -1
- package/dist/marketplace/publish.js +114 -208
- package/dist/marketplace/publish.js.map +1 -1
- package/dist/marketplace/registry-client.d.ts +11 -2
- package/dist/marketplace/registry-client.d.ts.map +1 -1
- package/dist/marketplace/registry-client.js +148 -24
- package/dist/marketplace/registry-client.js.map +1 -1
- package/dist/marketplace/types.d.ts +24 -4
- package/dist/marketplace/types.d.ts.map +1 -1
- package/dist/marketplace/types.js +4 -1
- package/dist/marketplace/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry client — lightweight index of skill links.
|
|
3
|
+
*
|
|
4
|
+
* The registry no longer stores skill files. It's just a curated
|
|
5
|
+
* JSON index pointing to original sources. Skills are fetched
|
|
6
|
+
* directly from their author's repos when installing.
|
|
7
|
+
*/
|
|
1
8
|
import type { RegistryIndex, SkillManifest, SkillDetail } from './types.js';
|
|
2
9
|
/**
|
|
3
10
|
* Get the registry index, from cache if fresh, otherwise from remote.
|
|
11
|
+
* Optionally enriches with external sources.
|
|
4
12
|
*/
|
|
5
|
-
export declare function getRegistry(forceRefresh?: boolean): Promise<RegistryIndex>;
|
|
13
|
+
export declare function getRegistry(forceRefresh?: boolean, includeExternal?: boolean): Promise<RegistryIndex>;
|
|
6
14
|
/**
|
|
7
15
|
* Simple fuzzy search across skill name, description, and tags.
|
|
8
16
|
*/
|
|
@@ -12,7 +20,8 @@ export declare function searchSkills(registry: RegistryIndex, query: string): Sk
|
|
|
12
20
|
*/
|
|
13
21
|
export declare function findSkill(registry: RegistryIndex, name: string): SkillManifest | undefined;
|
|
14
22
|
/**
|
|
15
|
-
* Get full skill detail including
|
|
23
|
+
* Get full skill detail including SKILL.md content.
|
|
24
|
+
* Fetches directly from the original source URL.
|
|
16
25
|
*/
|
|
17
26
|
export declare function getSkillDetail(manifest: SkillManifest): Promise<SkillDetail>;
|
|
18
27
|
//# sourceMappingURL=registry-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-client.d.ts","sourceRoot":"","sources":["../../src/marketplace/registry-client.ts"],"names":[],"mappings":"
|
|
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,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"}
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Registry client —
|
|
2
|
+
* Registry client — lightweight index of skill links.
|
|
3
|
+
*
|
|
4
|
+
* The registry no longer stores skill files. It's just a curated
|
|
5
|
+
* JSON index pointing to original sources. Skills are fetched
|
|
6
|
+
* directly from their author's repos when installing.
|
|
3
7
|
*/
|
|
4
8
|
import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
5
9
|
import { join } from 'node:path';
|
|
6
10
|
import { homedir } from 'node:os';
|
|
11
|
+
// ──────────────────────────────────────────────
|
|
12
|
+
// Constants
|
|
13
|
+
// ──────────────────────────────────────────────
|
|
7
14
|
const REGISTRY_URL = 'https://raw.githubusercontent.com/ljk-777/transskill-registry/main/registry.json';
|
|
8
|
-
const RAW_SKILL_PREFIX = 'https://raw.githubusercontent.com/ljk-777/transskill-registry/main/skills';
|
|
9
15
|
const CACHE_DIR = join(homedir(), '.transskill', 'cache');
|
|
10
16
|
const CACHE_FILE = join(CACHE_DIR, 'registry.json');
|
|
11
17
|
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
18
|
+
// ──────────────────────────────────────────────
|
|
19
|
+
// Cache helpers
|
|
20
|
+
// ──────────────────────────────────────────────
|
|
12
21
|
function ensureCacheDir() {
|
|
13
22
|
if (!existsSync(CACHE_DIR)) {
|
|
14
23
|
mkdirSync(CACHE_DIR, { recursive: true });
|
|
@@ -17,16 +26,20 @@ function ensureCacheDir() {
|
|
|
17
26
|
function isCacheFresh() {
|
|
18
27
|
if (!existsSync(CACHE_FILE))
|
|
19
28
|
return false;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
try {
|
|
30
|
+
const raw = readFileSync(CACHE_FILE, 'utf-8');
|
|
31
|
+
const cachedAt = new Date(raw.split('\n')[0]).getTime();
|
|
32
|
+
return Date.now() - cachedAt < CACHE_TTL_MS;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
23
37
|
}
|
|
24
38
|
function readCache() {
|
|
25
39
|
if (!isCacheFresh())
|
|
26
40
|
return null;
|
|
27
41
|
try {
|
|
28
42
|
const raw = readFileSync(CACHE_FILE, 'utf-8');
|
|
29
|
-
// First line is timestamp, rest is JSON
|
|
30
43
|
const json = raw.slice(raw.indexOf('\n') + 1);
|
|
31
44
|
return JSON.parse(json);
|
|
32
45
|
}
|
|
@@ -44,18 +57,117 @@ async function fetchRemote() {
|
|
|
44
57
|
throw new Error(`Failed to fetch registry: ${res.status} ${res.statusText}`);
|
|
45
58
|
return (await res.json());
|
|
46
59
|
}
|
|
60
|
+
// ──────────────────────────────────────────────
|
|
61
|
+
// External source fetchers
|
|
62
|
+
// ──────────────────────────────────────────────
|
|
63
|
+
/**
|
|
64
|
+
* Parse awesome-agent-skills README and extract skill entries.
|
|
65
|
+
* Each section has a table of skills with links to officialskills.sh.
|
|
66
|
+
*/
|
|
67
|
+
async function fetchAwesomeAgentSkills() {
|
|
68
|
+
const readmeUrl = 'https://raw.githubusercontent.com/VoltAgent/awesome-agent-skills/main/README.md';
|
|
69
|
+
const res = await fetch(readmeUrl);
|
|
70
|
+
if (!res.ok) {
|
|
71
|
+
console.warn(` ⚠ awesome-agent-skills: HTTP ${res.status}`);
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
const md = await res.text();
|
|
75
|
+
const skills = [];
|
|
76
|
+
const lines = md.split('\n');
|
|
77
|
+
// Pattern: `- **[org/skill](https://officialskills.sh/...)** - description`
|
|
78
|
+
// or: `- [org/skill](https://github.com/.../)` - description`
|
|
79
|
+
const skillLinkRe = /^\s*-\s+\*?\*?\[([^\]]+)\]\(([^)]+)\)\*?\*?\s*-\s*(.+)/;
|
|
80
|
+
for (const line of lines) {
|
|
81
|
+
const m = line.match(skillLinkRe);
|
|
82
|
+
if (!m)
|
|
83
|
+
continue;
|
|
84
|
+
const fullName = m[1]; // e.g. "anthropics/docx"
|
|
85
|
+
const url = m[2]; // e.g. "https://officialskills.sh/anthropics/skills/docx"
|
|
86
|
+
const description = m[3]; // e.g. "Create, edit, and analyze Word documents"
|
|
87
|
+
const parts = fullName.split('/');
|
|
88
|
+
const author = parts[0];
|
|
89
|
+
const name = parts[1] || fullName;
|
|
90
|
+
// Derive download URL from the officialskills.sh page or GitHub
|
|
91
|
+
const downloadUrl = deriveDownloadUrl(url, name, author);
|
|
92
|
+
skills.push({
|
|
93
|
+
name,
|
|
94
|
+
version: '1.0.0',
|
|
95
|
+
description: description.trim(),
|
|
96
|
+
tags: [author, name],
|
|
97
|
+
author,
|
|
98
|
+
stars: 0,
|
|
99
|
+
auditScore: 0,
|
|
100
|
+
created: new Date().toISOString(),
|
|
101
|
+
sourceUrl: url,
|
|
102
|
+
downloadUrl,
|
|
103
|
+
source: 'awesome-agent-skills',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return skills;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Derive a raw SKILL.md download URL from various link formats.
|
|
110
|
+
*/
|
|
111
|
+
function deriveDownloadUrl(url, name, author) {
|
|
112
|
+
// officialskills.sh format: https://officialskills.sh/<author>/skills/<name>
|
|
113
|
+
const officialMatch = url.match(/officialskills\.sh\/([^/]+)\/skills\/([^/]+)/);
|
|
114
|
+
if (officialMatch) {
|
|
115
|
+
const org = officialMatch[1];
|
|
116
|
+
const skillName = officialMatch[2];
|
|
117
|
+
return `https://raw.githubusercontent.com/${org}/skills/main/skills/${skillName}/SKILL.md`;
|
|
118
|
+
}
|
|
119
|
+
// GitHub tree URL: https://github.com/<author>/<repo>/tree/main/skills/<name>
|
|
120
|
+
const githubTreeMatch = url.match(/github\.com\/([^/]+)\/([^/]+)\/tree\//);
|
|
121
|
+
if (githubTreeMatch) {
|
|
122
|
+
const org = githubTreeMatch[1];
|
|
123
|
+
const repo = githubTreeMatch[2];
|
|
124
|
+
return `https://raw.githubusercontent.com/${org}/${repo}/main/skills/${name}/SKILL.md`;
|
|
125
|
+
}
|
|
126
|
+
// Fallback: try generic GitHub raw
|
|
127
|
+
return `https://raw.githubusercontent.com/${author}/skills/main/skills/${name}/SKILL.md`;
|
|
128
|
+
}
|
|
129
|
+
// ──────────────────────────────────────────────
|
|
130
|
+
// Registry API
|
|
131
|
+
// ──────────────────────────────────────────────
|
|
47
132
|
/**
|
|
48
133
|
* Get the registry index, from cache if fresh, otherwise from remote.
|
|
134
|
+
* Optionally enriches with external sources.
|
|
49
135
|
*/
|
|
50
|
-
export async function getRegistry(forceRefresh = false) {
|
|
136
|
+
export async function getRegistry(forceRefresh = false, includeExternal = true) {
|
|
137
|
+
// 1. Load base index: from cache (if fresh) or remote
|
|
138
|
+
let index = null;
|
|
51
139
|
if (!forceRefresh) {
|
|
52
|
-
|
|
53
|
-
if (cached)
|
|
54
|
-
return cached;
|
|
140
|
+
index = readCache();
|
|
55
141
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
142
|
+
if (!index) {
|
|
143
|
+
index = await fetchRemote();
|
|
144
|
+
writeCache(index);
|
|
145
|
+
}
|
|
146
|
+
// 2. Always try to enrich with external sources (even from cache)
|
|
147
|
+
// This ensures broken/empty external data gets fixed on next run
|
|
148
|
+
if (includeExternal) {
|
|
149
|
+
try {
|
|
150
|
+
const externalSkills = await fetchAwesomeAgentSkills();
|
|
151
|
+
if (externalSkills.length > 0) {
|
|
152
|
+
const existingNames = new Set(index.skills.map((s) => s.name));
|
|
153
|
+
let changed = false;
|
|
154
|
+
for (const ext of externalSkills) {
|
|
155
|
+
if (!existingNames.has(ext.name)) {
|
|
156
|
+
index.skills.push(ext);
|
|
157
|
+
changed = true;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (changed) {
|
|
161
|
+
index.updated = new Date().toISOString();
|
|
162
|
+
writeCache(index);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// External enrich is best-effort
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return index;
|
|
59
171
|
}
|
|
60
172
|
/**
|
|
61
173
|
* Simple fuzzy search across skill name, description, and tags.
|
|
@@ -69,6 +181,8 @@ export function searchSkills(registry, query) {
|
|
|
69
181
|
return true;
|
|
70
182
|
if (s.tags.some((t) => t.toLowerCase().includes(q)))
|
|
71
183
|
return true;
|
|
184
|
+
if (s.author.toLowerCase().includes(q))
|
|
185
|
+
return true;
|
|
72
186
|
return false;
|
|
73
187
|
});
|
|
74
188
|
}
|
|
@@ -76,21 +190,31 @@ export function searchSkills(registry, query) {
|
|
|
76
190
|
* Find a single skill by name.
|
|
77
191
|
*/
|
|
78
192
|
export function findSkill(registry, name) {
|
|
79
|
-
|
|
193
|
+
// Exact match first
|
|
194
|
+
const exact = registry.skills.find((s) => s.name.toLowerCase() === name.toLowerCase());
|
|
195
|
+
if (exact)
|
|
196
|
+
return exact;
|
|
197
|
+
// Fuzzy match
|
|
198
|
+
return registry.skills.find((s) => s.name.toLowerCase().includes(name.toLowerCase()));
|
|
80
199
|
}
|
|
81
200
|
/**
|
|
82
|
-
* Get full skill detail including
|
|
201
|
+
* Get full skill detail including SKILL.md content.
|
|
202
|
+
* Fetches directly from the original source URL.
|
|
83
203
|
*/
|
|
84
204
|
export async function getSkillDetail(manifest) {
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
205
|
+
const res = await fetch(manifest.downloadUrl);
|
|
206
|
+
if (!res.ok) {
|
|
207
|
+
// Fallback: try common URL patterns
|
|
208
|
+
const fallbackUrl = `https://raw.githubusercontent.com/${manifest.author}/skills/main/skills/${manifest.name}/SKILL.md`;
|
|
209
|
+
const fallbackRes = await fetch(fallbackUrl);
|
|
210
|
+
if (!fallbackRes.ok) {
|
|
211
|
+
throw new Error(`Failed to fetch skill "${manifest.name}" from ${manifest.downloadUrl} ` +
|
|
212
|
+
`(HTTP ${res.status}) and fallback ${fallbackUrl} (HTTP ${fallbackRes.status})`);
|
|
213
|
+
}
|
|
214
|
+
const readme = await fallbackRes.text();
|
|
215
|
+
return { ...manifest, readme };
|
|
216
|
+
}
|
|
89
217
|
const readme = await res.text();
|
|
90
|
-
return {
|
|
91
|
-
...manifest,
|
|
92
|
-
readme,
|
|
93
|
-
downloadUrl,
|
|
94
|
-
};
|
|
218
|
+
return { ...manifest, readme };
|
|
95
219
|
}
|
|
96
220
|
//# sourceMappingURL=registry-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../src/marketplace/registry-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../src/marketplace/registry-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Marketplace types
|
|
2
|
+
* Marketplace types — v2: lightweight index (links only, no file storage).
|
|
3
|
+
*
|
|
4
|
+
* The registry is just a curated index of where skills live,
|
|
5
|
+
* not a copy of the skill files themselves.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A skill entry in the registry index.
|
|
9
|
+
* Points to the original source — no files are stored in the registry repo.
|
|
3
10
|
*/
|
|
4
11
|
export interface SkillManifest {
|
|
5
12
|
name: string;
|
|
@@ -10,16 +17,29 @@ export interface SkillManifest {
|
|
|
10
17
|
stars: number;
|
|
11
18
|
auditScore: number;
|
|
12
19
|
created: string;
|
|
20
|
+
/** URL to the original skill source (e.g. GitHub repo page) */
|
|
21
|
+
sourceUrl: string;
|
|
22
|
+
/** URL to download the SKILL.md file directly */
|
|
23
|
+
downloadUrl: string;
|
|
24
|
+
/** Optional: where this entry was sourced from */
|
|
25
|
+
source?: 'registry' | 'awesome-agent-skills' | 'officialskills.sh' | 'github' | 'manual';
|
|
26
|
+
}
|
|
27
|
+
export interface RegistrySource {
|
|
28
|
+
name: string;
|
|
29
|
+
type: string;
|
|
30
|
+
url: string;
|
|
31
|
+
description?: string;
|
|
13
32
|
}
|
|
14
33
|
export interface RegistryIndex {
|
|
15
34
|
$schema: string;
|
|
16
35
|
updated: string;
|
|
36
|
+
/** External sources that can enrich the index */
|
|
37
|
+
sources?: RegistrySource[];
|
|
38
|
+
/** Curated skill list — just metadata + links */
|
|
17
39
|
skills: SkillManifest[];
|
|
18
40
|
}
|
|
19
41
|
export interface SkillDetail extends SkillManifest {
|
|
20
|
-
/** Full content of SKILL.md */
|
|
42
|
+
/** Full content of the SKILL.md */
|
|
21
43
|
readme: string;
|
|
22
|
-
/** Raw download URL for the SKILL.md */
|
|
23
|
-
downloadUrl: string;
|
|
24
44
|
}
|
|
25
45
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/marketplace/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/marketplace/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,MAAM,CAAC,EAAE,UAAU,GAAG,sBAAsB,GAAG,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC1F;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,iDAAiD;IACjD,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Marketplace types
|
|
2
|
+
* Marketplace types — v2: lightweight index (links only, no file storage).
|
|
3
|
+
*
|
|
4
|
+
* The registry is just a curated index of where skills live,
|
|
5
|
+
* not a copy of the skill files themselves.
|
|
3
6
|
*/
|
|
4
7
|
export {};
|
|
5
8
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/marketplace/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/marketplace/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|