API Reference

Build integrations with Skillsmith using our TypeScript API. Access skill search, installation, and management programmatically.

Installation

npm install @skillsmith/core

Quick Start

import { SkillRegistry, SkillInstaller } from '@skillsmith/core';

// Initialize the registry
const registry = new SkillRegistry();

// Search for skills
const results = await registry.search({
  query: 'testing',
  trustTier: 'verified',
  limit: 10
});

// Install a skill
const installer = new SkillInstaller();
await installer.install('community/jest-helper');

SkillRegistry

The main interface for discovering and querying skills.

Constructor

const registry = new SkillRegistry(options?: RegistryOptions);

RegistryOptions

Property Type Description
registryUrl string Custom registry URL
cacheEnabled boolean Enable response caching
cacheTtl number Cache TTL in seconds
apiKey string API key for authenticated requests

search()

Search for skills matching the given criteria.

async search(options: SearchOptions): Promise<SearchResult[]>

SearchOptions

Property Type Required Description
query string Yes Search query (min 2 characters)
category Category No Filter by category
trustTier TrustTier No Filter by trust tier
minScore number No Minimum quality score (0-100)
limit number No Max results (default: 10)

Example

const results = await registry.search({
  query: 'git',
  trustTier: 'verified',
  category: 'devops',
  minScore: 80,
  limit: 5
});

for (const skill of results) {
  console.log(`${skill.id}: ${skill.name}`);
}

getSkill()

Get detailed information about a specific skill.

async getSkill(id: string): Promise<Skill | null>

Example

const skill = await registry.getSkill('community/jest-helper');

if (skill) {
  console.log(skill.name);
  console.log(skill.description);
  console.log(skill.trustTier);
  console.log(skill.qualityScore);
}

compare()

Compare multiple skills side-by-side.

async compare(ids: string[]): Promise<ComparisonResult>

Example

const comparison = await registry.compare([
  'community/jest-helper',
  'community/vitest-helper'
]);

console.log(comparison.skills);
console.log(comparison.differences);
console.log(comparison.recommendation);

SkillInstaller

Handle skill installation and removal.

Constructor

const installer = new SkillInstaller(options?: InstallerOptions);

InstallerOptions

Property Type Description
installPath string Default installation directory
registry SkillRegistry Registry instance to use

install()

Install a skill to the local environment.

async install(id: string, options?: InstallOptions): Promise<InstallResult>

InstallOptions

Property Type Description
path string Override installation path
force boolean Overwrite existing installation

Example

const result = await installer.install('community/jest-helper', {
  path: '~/.claude/skills',
  force: true
});

if (result.success) {
  console.log(`Installed to ${result.installPath}`);
} else {
  console.error(result.error);
}

uninstall()

Remove an installed skill.

async uninstall(id: string): Promise<UninstallResult>

list()

List all installed skills.

async list(): Promise<InstalledSkill[]>

Types

Skill

interface Skill {
  id: string;              // "author/name" format
  name: string;            // Display name
  description: string;     // Full description
  author: string;          // Author identifier
  version: string;         // Semantic version
  trustTier: TrustTier;    // Trust level
  qualityScore: number;    // 0-100 score
  category: Category;      // Primary category
  tags: string[];          // Searchable tags
  dependencies: string[];  // Required dependencies
  createdAt: Date;         // Creation timestamp
  updatedAt: Date;         // Last update timestamp
}

TrustTier

type TrustTier = 'verified' | 'community' | 'experimental' | 'unknown';

Category

type Category =
  | 'development'
  | 'testing'
  | 'devops'
  | 'documentation'
  | 'security'
  | 'productivity'
  | 'data'
  | 'ai'
  | 'other';

SearchResult

interface SearchResult {
  skill: Skill;
  score: number;        // Relevance score
  highlights: string[]; // Matching text highlights
}

Error Handling

import { SkillsmithError, NotFoundError, ValidationError } from '@skillsmith/core';

try {
  await registry.getSkill('invalid/skill');
} catch (error) {
  if (error instanceof NotFoundError) {
    console.log('Skill not found');
  } else if (error instanceof ValidationError) {
    console.log('Invalid skill ID format');
  } else {
    throw error;
  }
}

Error Types

Error Description
SkillsmithError Base error class
NotFoundError Skill or resource not found
ValidationError Invalid input or parameters
InstallError Installation failed
NetworkError Network request failed

Rate Limiting

API requests are rate-limited based on your plan:

Plan Requests/Month
Community 1,000
Individual 10,000
Team 100,000
Enterprise Unlimited

API Key Required

For higher rate limits and premium features, obtain an API key from your account settings.