Catalog SDK for querying and loading AgentOS skills.
npm install @framers/agentos-skills-registryFor the skill content (SKILL.md files), see @framers/agentos-skills.
| Package | Role |
|---|---|
@framers/agentos-skills |
Content -- 88 SKILL.md files + registry.json |
@framers/agentos-skills-registry |
Catalog SDK -- query helpers, lazy loaders, factories |
@framers/agentos |
Engine -- SkillLoader, SkillRegistry, SkillSnapshot |
This layout mirrors the extensions ecosystem:
@framers/agentos-extensions(content) +@framers/agentos-extensions-registry(SDK).
| Package | Role | What | Runtime Code | Dependencies |
|---|---|---|---|---|
| @framers/agentos/skills | Engine | SkillLoader, SkillRegistry, path utils | Yes | yaml |
| @framers/agentos-skills | Content | 88 SKILL.md files + registry.json index | No | None |
| @framers/agentos-skills-registry | Catalog SDK | SKILLS_CATALOG, query helpers, lazy loaders, factories | Yes | agentos-skills, yaml |
import {
SKILLS_CATALOG,
searchSkills,
getSkillsByCategory,
getSkillByName,
} from '@framers/agentos-skills-registry/catalog';
// Full-text search
const matches = searchSkills('github');
console.log(matches.map((s) => `${s.name}: ${s.description}`));
// By category
const devSkills = getSkillsByCategory('developer');
console.log(`${devSkills.length} developer skills`);
// By name
const gh = getSkillByName('github');
console.log(gh?.requiredSecrets); // ['github.token']import { loadSkillByName } from '@framers/agentos-skills-registry';
const skill = await loadSkillByName('github');
if (skill) {
console.log(skill.content); // SKILL.md body for prompt injection
console.log(skill.metadata?.emoji); // "octopus"
}import { createCuratedSkillSnapshot } from '@framers/agentos-skills-registry';
const snapshot = await createCuratedSkillSnapshot({
skills: ['github', 'web-search', 'notion'],
platform: 'darwin',
});
// Inject into agent prompt
console.log(snapshot.prompt);import {
discoverWorkspaceSkills,
mergeWithWorkspaceSkills,
SKILLS_CATALOG,
} from '@framers/agentos-skills-registry';
// Scan .agents/skills/ for workspace-local skills
const workspace = await discoverWorkspaceSkills();
// Merge with curated (workspace takes priority on name collision)
const merged = mergeWithWorkspaceSkills(SKILLS_CATALOG, workspace);| Entry Point | What | Peer Deps |
|---|---|---|
@framers/agentos-skills-registry |
Full API: catalog + factories + workspace discovery | @framers/agentos (optional) |
@framers/agentos-skills-registry/catalog |
SKILLS_CATALOG, query helpers, lazy loaders |
None |
@framers/agentos-skills-registry/workspace-discovery |
Workspace skill scanning + merging | None |
SKILLS_CATALOG-- Sorted array of all curated + community skill entriessearchSkills(query)-- Full-text search across names, descriptions, tagsgetSkillsByCategory(category)-- Filter by categorygetSkillByName(name)-- Single skill lookupgetAvailableSkills(installedTools)-- Filter by available toolsgetCategories()-- List unique categoriesgetSkillsByTag(tag)-- Filter by taggetCuratedSkills()/getCommunitySkills()/getAllSkills()-- Source filtersgetSkillEntries(names)-- Filter by name list ('all'|'none'|string[])
loadSkillByName(name)-- Load and parse a single SKILL.md by nameloadSkillsByNames(names)-- Parallel load multiple skillscreateLocalSkillProxy(relativePath, displayName)-- Factory for lazy loading
createCuratedSkillRegistry(options?)-- Create a liveSkillRegistrywith selected curated skillscreateCuratedSkillSnapshot(options?)-- Build aSkillSnapshotready for prompt injection
getBundledCuratedSkillsDir()-- Absolute path to@framers/agentos-skills/registry/curated/getBundledCommunitySkillsDir()-- Absolute path to@framers/agentos-skills/registry/community/
discoverWorkspaceSkills(options?)-- Scan.agents/skills/for workspace-local skillsmergeWithWorkspaceSkills(registry, workspace)-- Merge with priority to workspaceparseSkillFrontmatter(content)-- Parse YAML frontmatter from skill content
MIT
