@framers/agentos-skills-registry 0.2.1 → 0.3.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/CONTRIBUTING.md +11 -5
- package/README.md +33 -7
- package/dist/catalog.d.ts +100 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +222 -1
- package/dist/catalog.js.map +1 -1
- package/dist/index.d.ts +18 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -11
- package/dist/index.js.map +1 -1
- package/dist/workspace-discovery.d.ts +3 -10
- package/dist/workspace-discovery.d.ts.map +1 -1
- package/dist/workspace-discovery.js +28 -67
- package/dist/workspace-discovery.js.map +1 -1
- package/package.json +8 -6
- package/registry/curated/image-gen/SKILL.md +8 -2
- package/registry/curated/memory-manager/SKILL.md +127 -0
- package/registry/curated/reddit-bot/SKILL.md +13 -1
- package/registry/curated/voice-conversation/SKILL.md +65 -0
- package/registry.json +161 -109
- package/scripts/validate-skill.mjs +10 -4
package/CONTRIBUTING.md
CHANGED
|
@@ -88,14 +88,20 @@ npm run validate registry/community/my-skill/SKILL.md
|
|
|
88
88
|
|
|
89
89
|
### Valid Categories
|
|
90
90
|
|
|
91
|
-
- `
|
|
92
|
-
- `developer-tools` — Code, repos, CI/CD, debugging
|
|
91
|
+
- `automation` — Workflow automation, orchestration, repetitive task handling
|
|
93
92
|
- `communication` — Chat, email, messaging platforms
|
|
94
|
-
- `
|
|
95
|
-
- `
|
|
93
|
+
- `content` — Content planning, drafting, publishing pipelines
|
|
94
|
+
- `creative` — Art, writing, design, generation
|
|
95
|
+
- `developer-tools` — Code, repos, CI/CD, debugging
|
|
96
|
+
- `devops` — Operational tooling, monitoring, reliability checks
|
|
97
|
+
- `information` — Data lookup, search, knowledge retrieval
|
|
98
|
+
- `infrastructure` — Infrastructure provisioning, hosting, deployment workflows
|
|
99
|
+
- `marketing` — SEO, campaigns, growth workflows
|
|
96
100
|
- `media` — Audio, video, image, streaming
|
|
101
|
+
- `productivity` — Note-taking, task management, organization
|
|
102
|
+
- `research` — Multi-source investigation and synthesis
|
|
97
103
|
- `security` — Passwords, encryption, access control
|
|
98
|
-
- `
|
|
104
|
+
- `social-automation` — Social publishing, engagement, and channel management
|
|
99
105
|
|
|
100
106
|
### Full Template
|
|
101
107
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://agentos.sh"><img src="logos/agentos-primary-no-tagline-transparent-2x.png" alt="AgentOS" height="56" /></a>
|
|
3
|
+
|
|
4
|
+
<a href="https://frame.dev"><img src="logos/frame-logo-green-no-tagline.svg" alt="Frame.dev" height="36" /></a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
1
7
|
# @framers/agentos-skills-registry
|
|
2
8
|
|
|
3
|
-
Curated skills registry for [AgentOS](https://github.com/framersai/agentos) —
|
|
9
|
+
Curated skills registry for [AgentOS](https://github.com/framersai/agentos) — 40 SKILL.md prompt modules, typed catalog, and lazy-loading factories.
|
|
4
10
|
|
|
5
11
|
[](https://www.npmjs.com/package/@framers/agentos-skills-registry)
|
|
6
12
|
|
|
@@ -12,7 +18,7 @@ npm install @framers/agentos-skills-registry
|
|
|
12
18
|
|
|
13
19
|
This is the **single package** for AgentOS skills. It contains:
|
|
14
20
|
|
|
15
|
-
- **
|
|
21
|
+
- **40 curated SKILL.md files** — prompt modules spanning social automation, developer tooling, productivity, research, voice, and more
|
|
16
22
|
- **registry.json** — machine-readable index of all skills with metadata
|
|
17
23
|
- **Static catalog** (`SKILLS_CATALOG`) — typed array with query helpers
|
|
18
24
|
- **Registry factories** — `createCuratedSkillRegistry()`, `createCuratedSkillSnapshot()` (requires `@framers/agentos`)
|
|
@@ -20,7 +26,7 @@ This is the **single package** for AgentOS skills. It contains:
|
|
|
20
26
|
|
|
21
27
|
## Quick Start
|
|
22
28
|
|
|
23
|
-
### 1. Browse the catalog (zero deps)
|
|
29
|
+
### 1. Browse the catalog (zero peer deps)
|
|
24
30
|
|
|
25
31
|
The `./catalog` sub-export has no peer dependencies:
|
|
26
32
|
|
|
@@ -61,7 +67,7 @@ Access the JSON index directly:
|
|
|
61
67
|
import { getSkillsCatalog } from '@framers/agentos-skills-registry';
|
|
62
68
|
|
|
63
69
|
const catalog = await getSkillsCatalog();
|
|
64
|
-
console.log(catalog.skills.curated.length); //
|
|
70
|
+
console.log(catalog.skills.curated.length); // 40
|
|
65
71
|
console.log(catalog.version); // '1.0.0'
|
|
66
72
|
```
|
|
67
73
|
|
|
@@ -85,21 +91,36 @@ import {
|
|
|
85
91
|
createCuratedSkillRegistry,
|
|
86
92
|
createCuratedSkillSnapshot,
|
|
87
93
|
getBundledCuratedSkillsDir,
|
|
94
|
+
loadSkillByName,
|
|
88
95
|
} from '@framers/agentos-skills-registry';
|
|
89
96
|
|
|
90
97
|
// Option A: Create a live SkillRegistry loaded with all curated skills
|
|
91
98
|
const registry = await createCuratedSkillRegistry();
|
|
92
99
|
|
|
100
|
+
// Or load only a specific curated subset
|
|
101
|
+
const selectedRegistry = await createCuratedSkillRegistry({
|
|
102
|
+
skills: ['github', 'weather'],
|
|
103
|
+
});
|
|
104
|
+
|
|
93
105
|
// Option B: Build a prompt snapshot for specific skills
|
|
94
106
|
const snapshot = await createCuratedSkillSnapshot({
|
|
95
107
|
skills: ['github', 'weather', 'notion'], // or 'all'
|
|
96
108
|
platform: 'darwin',
|
|
97
109
|
});
|
|
98
110
|
|
|
111
|
+
// Only the selected skills are loaded when you pass an explicit list.
|
|
112
|
+
console.log(snapshot.skills.map((skill) => skill.name));
|
|
113
|
+
// ['github', 'weather', 'notion']
|
|
114
|
+
|
|
99
115
|
// Inject the snapshot prompt into your agent's system message
|
|
100
116
|
const systemPrompt = `You are an AI assistant.\n\n${snapshot.prompt}`;
|
|
101
117
|
|
|
102
|
-
// Option C:
|
|
118
|
+
// Option C: Load a single SKILL.md lazily with parsed metadata
|
|
119
|
+
const githubSkill = await loadSkillByName('github');
|
|
120
|
+
console.log(githubSkill?.metadata?.primaryEnv); // 'GITHUB_TOKEN'
|
|
121
|
+
console.log(githubSkill?.frontmatter.requires_tools); // ['filesystem']
|
|
122
|
+
|
|
123
|
+
// Option D: Get the directory path and load manually
|
|
103
124
|
const skillsDir = getBundledCuratedSkillsDir();
|
|
104
125
|
// → '/path/to/node_modules/@framers/agentos-skills-registry/registry/curated'
|
|
105
126
|
```
|
|
@@ -128,6 +149,11 @@ const valid = skillNames.filter((name) => {
|
|
|
128
149
|
const snapshot = await createCuratedSkillSnapshot({ skills: valid });
|
|
129
150
|
```
|
|
130
151
|
|
|
152
|
+
When `skills` is a string array, the registry only loads those specific `SKILL.md`
|
|
153
|
+
files before building the snapshot. It does not walk the full curated bundle first.
|
|
154
|
+
Loaded skills also include parsed `metadata` so consumers do not need to decode
|
|
155
|
+
the `metadata.agentos` block manually.
|
|
156
|
+
|
|
131
157
|
## Two Import Paths
|
|
132
158
|
|
|
133
159
|
| Import | Peer deps | Use case |
|
|
@@ -137,7 +163,7 @@ const snapshot = await createCuratedSkillSnapshot({ skills: valid });
|
|
|
137
163
|
|
|
138
164
|
The `@framers/agentos` dependency is loaded **lazily** at runtime and cached after first resolution. If it's not installed and you call a factory function, you get a clear error with install instructions.
|
|
139
165
|
|
|
140
|
-
## Included Skills (
|
|
166
|
+
## Included Skills (40)
|
|
141
167
|
|
|
142
168
|
The catalog now includes both foundational utility skills and social automation modules, including:
|
|
143
169
|
|
|
@@ -182,7 +208,7 @@ import type {
|
|
|
182
208
|
| Export path | Contents |
|
|
183
209
|
|-------------|----------|
|
|
184
210
|
| `.` | Full SDK: catalog helpers + factory functions + schema types |
|
|
185
|
-
| `./catalog` | Lightweight: `SKILLS_CATALOG`, query helpers (zero deps) |
|
|
211
|
+
| `./catalog` | Lightweight: `SKILLS_CATALOG`, query helpers (zero peer deps) |
|
|
186
212
|
| `./registry.json` | Raw JSON index of all skills |
|
|
187
213
|
| `./types` | TypeScript declarations for registry.json schema |
|
|
188
214
|
|
package/dist/catalog.d.ts
CHANGED
|
@@ -4,7 +4,51 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Programmatic catalog derived from registry.json so it stays in sync with
|
|
6
6
|
* bundled SKILL.md entries.
|
|
7
|
+
*
|
|
8
|
+
* Pattern mirrors `@framers/agentos-extensions-registry/tool-registry`:
|
|
9
|
+
* - `SKILLS_CATALOG` array with metadata + lazy `loadSkill` factory
|
|
10
|
+
* - `createLocalSkillProxy()` for lazy-loading from local paths
|
|
11
|
+
* - `loadSkillByName()` for on-demand loading by name
|
|
12
|
+
*/
|
|
13
|
+
import type { SkillMetadata } from './schema-types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Result of loading a skill via its `loadSkill()` factory.
|
|
16
|
+
*
|
|
17
|
+
* Contains the parsed SKILL.md content, frontmatter, and body text — everything
|
|
18
|
+
* needed to inject the skill into an agent's prompt context.
|
|
7
19
|
*/
|
|
20
|
+
export interface LoadedSkill {
|
|
21
|
+
/** Skill name */
|
|
22
|
+
name: string;
|
|
23
|
+
/** Human-readable display name */
|
|
24
|
+
displayName: string;
|
|
25
|
+
/** Brief description */
|
|
26
|
+
description: string;
|
|
27
|
+
/** Full SKILL.md body content (after frontmatter) */
|
|
28
|
+
content: string;
|
|
29
|
+
/** Raw parsed frontmatter key/value pairs */
|
|
30
|
+
frontmatter: LoadedSkillFrontmatter;
|
|
31
|
+
/** Parsed metadata extracted from frontmatter (when available) */
|
|
32
|
+
metadata?: SkillMetadata;
|
|
33
|
+
/** Absolute path to the SKILL.md file that was loaded */
|
|
34
|
+
sourcePath: string;
|
|
35
|
+
}
|
|
36
|
+
export interface LoadedSkillFrontmatter extends Record<string, unknown> {
|
|
37
|
+
name?: string;
|
|
38
|
+
version?: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
author?: string;
|
|
41
|
+
namespace?: string;
|
|
42
|
+
category?: string;
|
|
43
|
+
tags?: string[];
|
|
44
|
+
requires_secrets?: string[];
|
|
45
|
+
requires_tools?: string[];
|
|
46
|
+
metadata?: unknown;
|
|
47
|
+
userInvocable?: boolean | string;
|
|
48
|
+
'user-invocable'?: boolean | string;
|
|
49
|
+
disableModelInvocation?: boolean | string;
|
|
50
|
+
'disable-model-invocation'?: boolean | string;
|
|
51
|
+
}
|
|
8
52
|
export interface SkillCatalogEntry {
|
|
9
53
|
/** Unique skill name (matches directory name under registry/curated/) */
|
|
10
54
|
name: string;
|
|
@@ -26,7 +70,29 @@ export interface SkillCatalogEntry {
|
|
|
26
70
|
source?: 'curated' | 'community';
|
|
27
71
|
/** Namespace used by the skill registry */
|
|
28
72
|
namespace: string;
|
|
73
|
+
/** Whether this skill is available (SKILL.md exists on disk). Always true for bundled skills. */
|
|
74
|
+
available: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Lazy factory function that loads and parses the SKILL.md on demand.
|
|
77
|
+
*
|
|
78
|
+
* Mirrors the `createPack` pattern from `@framers/agentos-extensions-registry`.
|
|
79
|
+
* Returns parsed skill content including frontmatter and body text.
|
|
80
|
+
*/
|
|
81
|
+
loadSkill: () => Promise<LoadedSkill>;
|
|
29
82
|
}
|
|
83
|
+
export declare function extractLoadedSkillMetadata(frontmatter: LoadedSkillFrontmatter): SkillMetadata | undefined;
|
|
84
|
+
export declare function loadSkillFromAbsolutePath(absolutePath: string, displayName: string): Promise<LoadedSkill>;
|
|
85
|
+
/**
|
|
86
|
+
* Create a lazy-loading skill proxy for a relative SKILL.md path.
|
|
87
|
+
*
|
|
88
|
+
* Mirrors `createLocalPackProxy()` from the extensions-registry: the SKILL.md
|
|
89
|
+
* is only read and parsed when the returned function is called.
|
|
90
|
+
*
|
|
91
|
+
* @param relativePath - Path from the package root to the SKILL.md file
|
|
92
|
+
* (e.g. 'registry/curated/github/SKILL.md')
|
|
93
|
+
* @param displayName - Human-readable display name for the loaded skill
|
|
94
|
+
*/
|
|
95
|
+
export declare function createLocalSkillProxy(relativePath: string, displayName: string): () => Promise<LoadedSkill>;
|
|
30
96
|
export declare const SKILLS_CATALOG: SkillCatalogEntry[];
|
|
31
97
|
/**
|
|
32
98
|
* Get all skills in a given category.
|
|
@@ -66,4 +132,38 @@ export declare function getCommunitySkills(): SkillCatalogEntry[];
|
|
|
66
132
|
* Get all skills (curated + community). Alias for SKILLS_CATALOG.
|
|
67
133
|
*/
|
|
68
134
|
export declare function getAllSkills(): SkillCatalogEntry[];
|
|
135
|
+
/**
|
|
136
|
+
* Get skill entries filtered by name.
|
|
137
|
+
*
|
|
138
|
+
* Mirrors `getToolEntries()` from the extensions-registry.
|
|
139
|
+
*/
|
|
140
|
+
export declare function getSkillEntries(names?: string[] | 'all' | 'none'): SkillCatalogEntry[];
|
|
141
|
+
/**
|
|
142
|
+
* Load a skill by name from the catalog.
|
|
143
|
+
*
|
|
144
|
+
* Finds the entry in SKILLS_CATALOG and calls its `loadSkill()` factory to
|
|
145
|
+
* read and parse the SKILL.md file on demand. Returns `null` if the skill
|
|
146
|
+
* is not found in the catalog.
|
|
147
|
+
*
|
|
148
|
+
* This is the primary consumer-facing API for lazy skill loading, mirroring
|
|
149
|
+
* how the extensions-registry resolves and loads extension packs.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* import { loadSkillByName } from '@framers/agentos-skills-registry';
|
|
154
|
+
*
|
|
155
|
+
* const skill = await loadSkillByName('github');
|
|
156
|
+
* if (skill) {
|
|
157
|
+
* console.log(skill.content); // SKILL.md body for injection into prompt
|
|
158
|
+
* }
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
export declare function loadSkillByName(name: string): Promise<LoadedSkill | null>;
|
|
162
|
+
/**
|
|
163
|
+
* Load multiple skills by name from the catalog.
|
|
164
|
+
*
|
|
165
|
+
* Convenience wrapper that calls `loadSkillByName()` for each name in parallel.
|
|
166
|
+
* Silently skips skills that are not found in the catalog.
|
|
167
|
+
*/
|
|
168
|
+
export declare function loadSkillsByNames(names: string[]): Promise<LoadedSkill[]>;
|
|
69
169
|
//# sourceMappingURL=catalog.d.ts.map
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/catalog.js
CHANGED
|
@@ -4,8 +4,175 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Programmatic catalog derived from registry.json so it stays in sync with
|
|
6
6
|
* bundled SKILL.md entries.
|
|
7
|
+
*
|
|
8
|
+
* Pattern mirrors `@framers/agentos-extensions-registry/tool-registry`:
|
|
9
|
+
* - `SKILLS_CATALOG` array with metadata + lazy `loadSkill` factory
|
|
10
|
+
* - `createLocalSkillProxy()` for lazy-loading from local paths
|
|
11
|
+
* - `loadSkillByName()` for on-demand loading by name
|
|
7
12
|
*/
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
import * as fs from 'node:fs/promises';
|
|
8
15
|
import { createRequire } from 'node:module';
|
|
16
|
+
import YAML from 'yaml';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// PATH HELPERS
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
21
|
+
/** Package root (one level up from dist/ or src/) */
|
|
22
|
+
function resolvePackageRoot() {
|
|
23
|
+
return path.resolve(__dirname, '..');
|
|
24
|
+
}
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// LAZY SKILL LOADER (mirrors createLocalPackProxy from extensions-registry)
|
|
27
|
+
// ============================================================================
|
|
28
|
+
/** Resolved module cache for @framers/agentos SkillLoader — loaded at most once. */
|
|
29
|
+
let _skillLoaderMod = null;
|
|
30
|
+
/**
|
|
31
|
+
* Attempt to lazily import the SkillLoader from @framers/agentos.
|
|
32
|
+
* Falls back to a local YAML-backed parser if the peer dep is unavailable.
|
|
33
|
+
*/
|
|
34
|
+
async function getSkillParser() {
|
|
35
|
+
if (_skillLoaderMod)
|
|
36
|
+
return _skillLoaderMod;
|
|
37
|
+
try {
|
|
38
|
+
const mod = await import('@framers/agentos/skills');
|
|
39
|
+
_skillLoaderMod = {
|
|
40
|
+
parseSkillFrontmatter: mod.parseSkillFrontmatter,
|
|
41
|
+
extractMetadata: mod.extractMetadata,
|
|
42
|
+
};
|
|
43
|
+
return _skillLoaderMod;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Fallback: local YAML-backed frontmatter parser.
|
|
47
|
+
_skillLoaderMod = {
|
|
48
|
+
parseSkillFrontmatter: builtinParseSkillFrontmatter,
|
|
49
|
+
extractMetadata: extractLoadedSkillMetadata,
|
|
50
|
+
};
|
|
51
|
+
return _skillLoaderMod;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Built-in frontmatter parser used when @framers/agentos is not installed.
|
|
56
|
+
* Uses the same YAML parser family as the standalone skills runtime so nested
|
|
57
|
+
* metadata blocks keep working even without the peer dependency.
|
|
58
|
+
*/
|
|
59
|
+
function builtinParseSkillFrontmatter(content) {
|
|
60
|
+
const normalized = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
61
|
+
const lines = normalized.split('\n');
|
|
62
|
+
if (lines[0]?.trim() !== '---') {
|
|
63
|
+
return { frontmatter: {}, body: normalized.trim() };
|
|
64
|
+
}
|
|
65
|
+
let endIndex = -1;
|
|
66
|
+
for (let i = 1; i < lines.length; i++) {
|
|
67
|
+
if (lines[i]?.trim() === '---') {
|
|
68
|
+
endIndex = i;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (endIndex === -1) {
|
|
73
|
+
return { frontmatter: {}, body: normalized.trim() };
|
|
74
|
+
}
|
|
75
|
+
const frontmatterBlock = lines.slice(1, endIndex).join('\n');
|
|
76
|
+
const body = lines.slice(endIndex + 1).join('\n').trim();
|
|
77
|
+
try {
|
|
78
|
+
const parsed = YAML.parse(frontmatterBlock);
|
|
79
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
80
|
+
return { frontmatter: {}, body };
|
|
81
|
+
}
|
|
82
|
+
return { frontmatter: parsed, body };
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return { frontmatter: {}, body };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function extractLoadedSkillMetadata(frontmatter) {
|
|
89
|
+
const metadataValue = frontmatter.metadata;
|
|
90
|
+
let meta;
|
|
91
|
+
if (metadataValue && typeof metadataValue === 'object') {
|
|
92
|
+
const metadataObject = metadataValue;
|
|
93
|
+
meta =
|
|
94
|
+
metadataObject.agentos ??
|
|
95
|
+
metadataObject.wunderland ??
|
|
96
|
+
metadataObject.openclaw ??
|
|
97
|
+
metadataObject;
|
|
98
|
+
}
|
|
99
|
+
else if (typeof metadataValue === 'string' && metadataValue.trim()) {
|
|
100
|
+
try {
|
|
101
|
+
meta = JSON.parse(metadataValue);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
meta = undefined;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (!meta) {
|
|
108
|
+
meta = frontmatter;
|
|
109
|
+
}
|
|
110
|
+
if (!meta || typeof meta !== 'object' || Array.isArray(meta)) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
const metadata = meta;
|
|
114
|
+
return {
|
|
115
|
+
always: metadata.always === true,
|
|
116
|
+
skillKey: typeof metadata.skillKey === 'string' ? metadata.skillKey : undefined,
|
|
117
|
+
primaryEnv: typeof metadata.primaryEnv === 'string' ? metadata.primaryEnv : undefined,
|
|
118
|
+
emoji: typeof metadata.emoji === 'string' ? metadata.emoji : undefined,
|
|
119
|
+
homepage: typeof metadata.homepage === 'string' ? metadata.homepage : undefined,
|
|
120
|
+
os: Array.isArray(metadata.os) ? metadata.os.filter((value) => typeof value === 'string') : undefined,
|
|
121
|
+
requires: metadata.requires && typeof metadata.requires === 'object' && !Array.isArray(metadata.requires)
|
|
122
|
+
? metadata.requires
|
|
123
|
+
: undefined,
|
|
124
|
+
install: Array.isArray(metadata.install)
|
|
125
|
+
? metadata.install
|
|
126
|
+
: undefined,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async function loadSkillFromContent(args) {
|
|
130
|
+
const parser = await getSkillParser();
|
|
131
|
+
const { frontmatter, body } = parser.parseSkillFrontmatter(args.content);
|
|
132
|
+
const metadata = parser.extractMetadata?.(frontmatter) ?? extractLoadedSkillMetadata(frontmatter);
|
|
133
|
+
const name = typeof frontmatter.name === 'string' && frontmatter.name.trim()
|
|
134
|
+
? frontmatter.name.trim()
|
|
135
|
+
: path.basename(path.dirname(args.absolutePath));
|
|
136
|
+
const description = typeof frontmatter.description === 'string' && frontmatter.description.trim()
|
|
137
|
+
? frontmatter.description.trim()
|
|
138
|
+
: body.split('\n').find((line) => line.trim() && !line.startsWith('#'))?.trim() ?? '';
|
|
139
|
+
return {
|
|
140
|
+
name,
|
|
141
|
+
displayName: args.displayName,
|
|
142
|
+
description,
|
|
143
|
+
content: body,
|
|
144
|
+
frontmatter,
|
|
145
|
+
metadata,
|
|
146
|
+
sourcePath: args.absolutePath,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export async function loadSkillFromAbsolutePath(absolutePath, displayName) {
|
|
150
|
+
let content;
|
|
151
|
+
try {
|
|
152
|
+
content = await fs.readFile(absolutePath, 'utf-8');
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
throw new Error(`Failed to load SKILL.md at ${absolutePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
156
|
+
}
|
|
157
|
+
return loadSkillFromContent({
|
|
158
|
+
absolutePath,
|
|
159
|
+
content,
|
|
160
|
+
displayName,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Create a lazy-loading skill proxy for a relative SKILL.md path.
|
|
165
|
+
*
|
|
166
|
+
* Mirrors `createLocalPackProxy()` from the extensions-registry: the SKILL.md
|
|
167
|
+
* is only read and parsed when the returned function is called.
|
|
168
|
+
*
|
|
169
|
+
* @param relativePath - Path from the package root to the SKILL.md file
|
|
170
|
+
* (e.g. 'registry/curated/github/SKILL.md')
|
|
171
|
+
* @param displayName - Human-readable display name for the loaded skill
|
|
172
|
+
*/
|
|
173
|
+
export function createLocalSkillProxy(relativePath, displayName) {
|
|
174
|
+
return async () => loadSkillFromAbsolutePath(path.resolve(resolvePackageRoot(), relativePath), displayName);
|
|
175
|
+
}
|
|
9
176
|
// ============================================================================
|
|
10
177
|
// CATALOG BUILD
|
|
11
178
|
// ============================================================================
|
|
@@ -25,9 +192,10 @@ function slugToDisplayName(slug) {
|
|
|
25
192
|
}
|
|
26
193
|
function toCatalogEntry(entry) {
|
|
27
194
|
const skillPath = `${entry.path}/SKILL.md`;
|
|
195
|
+
const entryDisplayName = entry.displayName?.trim() || slugToDisplayName(entry.name);
|
|
28
196
|
return {
|
|
29
197
|
name: entry.name,
|
|
30
|
-
displayName:
|
|
198
|
+
displayName: entryDisplayName,
|
|
31
199
|
description: entry.description ?? '',
|
|
32
200
|
category: entry.category?.trim() || 'uncategorized',
|
|
33
201
|
tags: toStringArray(entry.keywords),
|
|
@@ -36,6 +204,8 @@ function toCatalogEntry(entry) {
|
|
|
36
204
|
skillPath,
|
|
37
205
|
source: entry.source,
|
|
38
206
|
namespace: entry.namespace?.trim() || 'wunderland',
|
|
207
|
+
available: true,
|
|
208
|
+
loadSkill: createLocalSkillProxy(skillPath, entryDisplayName),
|
|
39
209
|
};
|
|
40
210
|
}
|
|
41
211
|
const curated = (registry.skills?.curated ?? []).map(toCatalogEntry);
|
|
@@ -106,4 +276,55 @@ export function getCommunitySkills() {
|
|
|
106
276
|
export function getAllSkills() {
|
|
107
277
|
return SKILLS_CATALOG;
|
|
108
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* Get skill entries filtered by name.
|
|
281
|
+
*
|
|
282
|
+
* Mirrors `getToolEntries()` from the extensions-registry.
|
|
283
|
+
*/
|
|
284
|
+
export function getSkillEntries(names) {
|
|
285
|
+
if (names === 'none')
|
|
286
|
+
return [];
|
|
287
|
+
if (!names || names === 'all')
|
|
288
|
+
return [...SKILLS_CATALOG];
|
|
289
|
+
return SKILLS_CATALOG.filter((entry) => names.includes(entry.name));
|
|
290
|
+
}
|
|
291
|
+
// ============================================================================
|
|
292
|
+
// ON-DEMAND SKILL LOADING
|
|
293
|
+
// ============================================================================
|
|
294
|
+
/**
|
|
295
|
+
* Load a skill by name from the catalog.
|
|
296
|
+
*
|
|
297
|
+
* Finds the entry in SKILLS_CATALOG and calls its `loadSkill()` factory to
|
|
298
|
+
* read and parse the SKILL.md file on demand. Returns `null` if the skill
|
|
299
|
+
* is not found in the catalog.
|
|
300
|
+
*
|
|
301
|
+
* This is the primary consumer-facing API for lazy skill loading, mirroring
|
|
302
|
+
* how the extensions-registry resolves and loads extension packs.
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* ```typescript
|
|
306
|
+
* import { loadSkillByName } from '@framers/agentos-skills-registry';
|
|
307
|
+
*
|
|
308
|
+
* const skill = await loadSkillByName('github');
|
|
309
|
+
* if (skill) {
|
|
310
|
+
* console.log(skill.content); // SKILL.md body for injection into prompt
|
|
311
|
+
* }
|
|
312
|
+
* ```
|
|
313
|
+
*/
|
|
314
|
+
export async function loadSkillByName(name) {
|
|
315
|
+
const entry = SKILLS_CATALOG.find((s) => s.name === name);
|
|
316
|
+
if (!entry)
|
|
317
|
+
return null;
|
|
318
|
+
return entry.loadSkill();
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Load multiple skills by name from the catalog.
|
|
322
|
+
*
|
|
323
|
+
* Convenience wrapper that calls `loadSkillByName()` for each name in parallel.
|
|
324
|
+
* Silently skips skills that are not found in the catalog.
|
|
325
|
+
*/
|
|
326
|
+
export async function loadSkillsByNames(names) {
|
|
327
|
+
const results = await Promise.all(names.map((n) => loadSkillByName(n)));
|
|
328
|
+
return results.filter((r) => r !== null);
|
|
329
|
+
}
|
|
109
330
|
//# sourceMappingURL=catalog.js.map
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -49,14 +49,27 @@ export interface SkillEligibilityContext {
|
|
|
49
49
|
hasEnv?: (envVar: string) => boolean;
|
|
50
50
|
note?: string;
|
|
51
51
|
}
|
|
52
|
-
export { SKILLS_CATALOG, getSkillsByCategory, getSkillByName, getAvailableSkills, getCategories, getSkillsByTag, searchSkills, getCuratedSkills, getCommunitySkills, getAllSkills, } from './catalog.js';
|
|
53
|
-
export type { SkillCatalogEntry } from './catalog.js';
|
|
52
|
+
export { SKILLS_CATALOG, getSkillsByCategory, getSkillByName, getAvailableSkills, getCategories, getSkillsByTag, searchSkills, getCuratedSkills, getCommunitySkills, getAllSkills, getSkillEntries, createLocalSkillProxy, loadSkillFromAbsolutePath, loadSkillByName, loadSkillsByNames, } from './catalog.js';
|
|
53
|
+
export type { SkillCatalogEntry, LoadedSkill, LoadedSkillFrontmatter } from './catalog.js';
|
|
54
|
+
import { type LoadedSkillFrontmatter } from './catalog.js';
|
|
55
|
+
import type { SkillMetadata } from './schema-types.js';
|
|
54
56
|
export { discoverWorkspaceSkills, mergeWithWorkspaceSkills, parseSkillFrontmatter, } from './workspace-discovery.js';
|
|
55
57
|
export type { SkillFrontmatter, WorkspaceDiscoveryOptions, } from './workspace-discovery.js';
|
|
56
58
|
export type { SkillInstallKind, SkillInstallSpec, SkillRequirements, SkillMetadata, SkillRegistryEntry, SkillsRegistryStats, SkillsRegistry, } from './schema-types.js';
|
|
57
59
|
/** Resolved module cache — loaded at most once per process. */
|
|
58
60
|
declare let _agentosSkillsMod: {
|
|
59
61
|
SkillRegistry: new (config?: SkillsConfig) => {
|
|
62
|
+
register(entry: {
|
|
63
|
+
skill: {
|
|
64
|
+
name: string;
|
|
65
|
+
description: string;
|
|
66
|
+
content: string;
|
|
67
|
+
};
|
|
68
|
+
frontmatter: LoadedSkillFrontmatter;
|
|
69
|
+
metadata?: SkillMetadata;
|
|
70
|
+
sourcePath?: string;
|
|
71
|
+
source?: string;
|
|
72
|
+
}): boolean;
|
|
60
73
|
loadFromDirs(dirs: string[]): Promise<number>;
|
|
61
74
|
loadFromDir?(dir: string, options?: {
|
|
62
75
|
source?: string;
|
|
@@ -69,6 +82,7 @@ declare let _agentosSkillsMod: {
|
|
|
69
82
|
runtimeConfig?: Record<string, unknown>;
|
|
70
83
|
}): SkillSnapshot;
|
|
71
84
|
};
|
|
85
|
+
extractMetadata?: (frontmatter: LoadedSkillFrontmatter) => SkillMetadata | undefined;
|
|
72
86
|
} | null;
|
|
73
87
|
declare function requireAgentOS(): Promise<NonNullable<typeof _agentosSkillsMod>>;
|
|
74
88
|
/**
|
|
@@ -106,7 +120,7 @@ export interface SkillsCatalogEntry {
|
|
|
106
120
|
keywords?: string[];
|
|
107
121
|
requiredSecrets?: string[];
|
|
108
122
|
requiredTools?: string[];
|
|
109
|
-
metadata?:
|
|
123
|
+
metadata?: SkillMetadata;
|
|
110
124
|
}
|
|
111
125
|
export interface SkillsCatalog {
|
|
112
126
|
version: string;
|
|
@@ -135,7 +149,7 @@ export declare function getAvailableCuratedSkills(): Promise<SkillsCatalogEntry[
|
|
|
135
149
|
* **Requires** `@framers/agentos` as a peer dependency.
|
|
136
150
|
* Throws a descriptive error if the peer dep is missing.
|
|
137
151
|
*/
|
|
138
|
-
export declare function createCuratedSkillRegistry(options?: Pick<CuratedSkillsOptions, 'config'>): Promise<InstanceType<Awaited<ReturnType<typeof requireAgentOS>>['SkillRegistry']>>;
|
|
152
|
+
export declare function createCuratedSkillRegistry(options?: Pick<CuratedSkillsOptions, 'config' | 'skills'>): Promise<InstanceType<Awaited<ReturnType<typeof requireAgentOS>>['SkillRegistry']>>;
|
|
139
153
|
/**
|
|
140
154
|
* Build a SkillSnapshot from bundled curated skills.
|
|
141
155
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,OAAO,CAAC,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC;IAChF,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN;QACE,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CACF,CAAC;CACH;AAED,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|