transskill 0.3.0 → 0.4.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.
@@ -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 README content and download URL.
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":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA4C5E;;GAEG;AACH,wBAAsB,WAAW,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAS9E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAQpF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE1F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAWlF"}
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,14 +1,23 @@
1
1
  /**
2
- * Registry client — fetches, caches, and searches skill registry.
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
- const mtime = readFileSync(CACHE_FILE, 'utf-8').split('\n')[0];
21
- const cachedAt = new Date(mtime).getTime();
22
- return Date.now() - cachedAt < CACHE_TTL_MS;
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,10 +57,83 @@ 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) {
51
137
  if (!forceRefresh) {
52
138
  const cached = readCache();
53
139
  if (cached)
@@ -55,6 +141,27 @@ export async function getRegistry(forceRefresh = false) {
55
141
  }
56
142
  const remote = await fetchRemote();
57
143
  writeCache(remote);
144
+ // Enrich with external sources
145
+ if (includeExternal) {
146
+ try {
147
+ const externalSkills = await fetchAwesomeAgentSkills();
148
+ if (externalSkills.length > 0) {
149
+ // Merge: registry entries take priority (dedup by name)
150
+ const existingNames = new Set(remote.skills.map((s) => s.name));
151
+ for (const ext of externalSkills) {
152
+ if (!existingNames.has(ext.name)) {
153
+ remote.skills.push(ext);
154
+ }
155
+ }
156
+ remote.updated = new Date().toISOString();
157
+ // Rewrite cache with enriched data
158
+ writeCache(remote);
159
+ }
160
+ }
161
+ catch {
162
+ // External enrich is best-effort
163
+ }
164
+ }
58
165
  return remote;
59
166
  }
60
167
  /**
@@ -69,6 +176,8 @@ export function searchSkills(registry, query) {
69
176
  return true;
70
177
  if (s.tags.some((t) => t.toLowerCase().includes(q)))
71
178
  return true;
179
+ if (s.author.toLowerCase().includes(q))
180
+ return true;
72
181
  return false;
73
182
  });
74
183
  }
@@ -76,21 +185,31 @@ export function searchSkills(registry, query) {
76
185
  * Find a single skill by name.
77
186
  */
78
187
  export function findSkill(registry, name) {
79
- return registry.skills.find((s) => s.name === name);
188
+ // Exact match first
189
+ const exact = registry.skills.find((s) => s.name.toLowerCase() === name.toLowerCase());
190
+ if (exact)
191
+ return exact;
192
+ // Fuzzy match
193
+ return registry.skills.find((s) => s.name.toLowerCase().includes(name.toLowerCase()));
80
194
  }
81
195
  /**
82
- * Get full skill detail including README content and download URL.
196
+ * Get full skill detail including SKILL.md content.
197
+ * Fetches directly from the original source URL.
83
198
  */
84
199
  export async function getSkillDetail(manifest) {
85
- const downloadUrl = `${RAW_SKILL_PREFIX}/${manifest.name}/SKILL.md`;
86
- const res = await fetch(downloadUrl);
87
- if (!res.ok)
88
- throw new Error(`Failed to fetch skill: ${res.status} ${res.statusText}`);
200
+ const res = await fetch(manifest.downloadUrl);
201
+ if (!res.ok) {
202
+ // Fallback: try common URL patterns
203
+ const fallbackUrl = `https://raw.githubusercontent.com/${manifest.author}/skills/main/skills/${manifest.name}/SKILL.md`;
204
+ const fallbackRes = await fetch(fallbackUrl);
205
+ if (!fallbackRes.ok) {
206
+ throw new Error(`Failed to fetch skill "${manifest.name}" from ${manifest.downloadUrl} ` +
207
+ `(HTTP ${res.status}) and fallback ${fallbackUrl} (HTTP ${fallbackRes.status})`);
208
+ }
209
+ const readme = await fallbackRes.text();
210
+ return { ...manifest, readme };
211
+ }
89
212
  const readme = await res.text();
90
- return {
91
- ...manifest,
92
- readme,
93
- downloadUrl,
94
- };
213
+ return { ...manifest, readme };
95
214
  }
96
215
  //# sourceMappingURL=registry-client.js.map
@@ -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,5 +1,12 @@
1
1
  /**
2
- * Marketplace types for skill metadata and registry.
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;;GAEG;AAEH,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;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;CACrB"}
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 for skill metadata and registry.
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;;GAEG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/marketplace/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "transskill",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Cross-platform AI agent skill converter - Write once, run on any agent",
5
5
  "bin": {
6
6
  "transskill": "dist/index.js"