skillbroker
v0.1.0
Published
JavaScript/TypeScript SDK for SkillBroker - Access expert knowledge in your AI applications
Downloads
12
Maintainers
Readme
SkillBroker JavaScript/TypeScript SDK
Access expert knowledge in your applications with SkillBroker - the marketplace where AI agents pay for human expertise.
Installation
npm install skillbroker
# or
yarn add skillbroker
# or
pnpm add skillbrokerQuick Start
import { SkillBrokerClient } from 'skillbroker';
const client = new SkillBrokerClient();
// Search for skills
const results = await client.search({ query: 'tax advice' });
console.log(`Found ${results.skills.length} skills`);
// Invoke a skill
const response = await client.invoke(
'freelancer-tax-advisor',
'Can I deduct my home office as a freelancer?'
);
console.log(response.response);Configuration
Environment Variables
# Optional: Override the API URL (defaults to https://api.skillbroker.io)
export SKILLBROKER_API_URL="https://api.skillbroker.io"
# Optional: API key for authenticated requests
export SKILLBROKER_API_KEY="your-api-key"Programmatic Configuration
import { SkillBrokerClient } from 'skillbroker';
const client = new SkillBrokerClient({
apiUrl: 'https://api.skillbroker.io',
apiKey: 'your-api-key',
timeout: 30000, // 30 seconds
});API Reference
SkillBrokerClient
const client = new SkillBrokerClient(config?: SkillBrokerConfig);
// Methods
await client.getRegistryInfo(): Promise<RegistryInfo>
await client.search(options?: SearchOptions): Promise<SearchResult>
await client.getSkill(skillId: string): Promise<Skill>
await client.invoke(skillId: string, query: string, context?: object): Promise<SkillResponse>
await client.getCategories(): Promise<Category[]>
await client.getTopSkills(options?: { limit?: number; category?: string }): Promise<Skill[]>
await client.getRecommendations(taskDescription: string, limit?: number): Promise<Skill[]>Types
interface Skill {
id: string;
name: string;
description: string;
category: string;
version: string;
author: string;
tags?: string[];
pricing?: SkillPricing;
stats?: SkillStats;
quality?: SkillQuality;
}
interface SkillResponse {
success: boolean;
response: string;
skillId: string;
skillName: string;
tokensUsed?: number;
cost?: number;
}
interface SearchResult {
skills: Skill[];
totalCount: number;
query?: string;
category?: string;
}Examples
Search for Skills
import { SkillBrokerClient } from 'skillbroker';
const client = new SkillBrokerClient();
// Search by query
const results = await client.search({ query: 'financial planning' });
// Search by category
const financeSkills = await client.search({
category: 'Finance',
limit: 10
});
// Display results
for (const skill of results.skills) {
console.log(`${skill.name}: ${skill.description}`);
}Invoke a Skill
import { SkillBrokerClient } from 'skillbroker';
const client = new SkillBrokerClient();
try {
const response = await client.invoke(
'freelancer-tax-advisor',
'What expenses can I deduct as a freelance developer?',
{ userType: 'freelancer', country: 'US' } // Optional context
);
console.log(response.response);
console.log(`Tokens used: ${response.tokensUsed}`);
} catch (error) {
console.error('Failed to invoke skill:', error.message);
}Get Recommendations
import { SkillBrokerClient } from 'skillbroker';
const client = new SkillBrokerClient();
// Get skill recommendations for a task
const recommendations = await client.getRecommendations(
'I need help understanding cryptocurrency tax implications',
3
);
for (const skill of recommendations) {
console.log(`Recommended: ${skill.name}`);
}Get Top Skills
import { SkillBrokerClient } from 'skillbroker';
const client = new SkillBrokerClient();
// Get top-rated skills
const topSkills = await client.getTopSkills({ limit: 5 });
// Get top skills in a category
const topFinanceSkills = await client.getTopSkills({
limit: 5,
category: 'Finance'
});Error Handling
import {
SkillBrokerClient,
SkillBrokerError,
SkillNotFoundError,
InvocationError
} from 'skillbroker';
const client = new SkillBrokerClient();
try {
const response = await client.invoke('unknown-skill', 'question');
} catch (error) {
if (error instanceof SkillNotFoundError) {
console.error('Skill not found');
} else if (error instanceof InvocationError) {
console.error('Failed to invoke skill');
} else if (error instanceof SkillBrokerError) {
console.error('API error:', error.message);
}
}Framework Integration
Express.js
import express from 'express';
import { SkillBrokerClient } from 'skillbroker';
const app = express();
const client = new SkillBrokerClient();
app.post('/ask-expert', async (req, res) => {
const { skillId, question } = req.body;
try {
const response = await client.invoke(skillId, question);
res.json({ answer: response.response });
} catch (error) {
res.status(500).json({ error: error.message });
}
});Next.js API Route
// pages/api/skills/invoke.ts
import type { NextApiRequest, NextApiResponse } from 'next';
import { SkillBrokerClient } from 'skillbroker';
const client = new SkillBrokerClient();
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
const { skillId, query } = req.body;
const response = await client.invoke(skillId, query);
res.json(response);
}Support
- Documentation: https://skillbroker.io/docs
- API Reference: https://api.skillbroker.io/swagger
- Issues: https://github.com/skillbroker/skillbroker-js/issues
- Email: [email protected]
License
MIT License - see LICENSE file for details.
