Skillz Market SDK

Discovery

Search and browse skills on the Skillz Market.

Discovery

The SDK provides methods to discover skills without requiring a wallet.

Searching Skills

Use search() to find skills by keyword:

const market = new SkillzMarket();
 
// Basic search
const skills = await market.search('image generation');
 
// With filters
const skills = await market.search('AI', {
  category: 'text',
  minPrice: '0.001',
  maxPrice: '0.01',
  creator: '0x...',
});

Search Filters

FilterTypeDescription
categorystringFilter by category
minPricestringMinimum price in USDC
maxPricestringMaximum price in USDC
creatorstringFilter by creator wallet address
groupstringFilter by group slug

Search Results

Returns an array of Skill objects:

interface Skill {
  id: string;
  slug: string;
  name: string;
  description: string | null;
  price: string;
  currency: string;
  endpoint: string;
  inputSchema: Record<string, unknown> | null;
  outputSchema: Record<string, unknown> | null;
  paymentAddress: string;
  isActive: boolean;
  creatorId: string;
  createdAt: string;
  updatedAt: string;
  groups?: SkillGroup[];  // Groups this skill belongs to
}

Getting Skill Details

Use info() to get detailed information about a specific skill:

const skill = await market.info('text-to-image');
 
console.log(skill.name);        // "Text to Image"
console.log(skill.price);       // "0.005"
console.log(skill.currency);    // "USDC"
console.log(skill.endpoint);    // "https://..."
console.log(skill.isActive);    // true

Input/Output Schemas

Skills can define JSON Schemas for their input and output:

const skill = await market.info('summarize-text');
 
// Check if skill has input schema
if (skill.inputSchema) {
  console.log(skill.inputSchema);
  // { type: 'object', properties: { text: { type: 'string' } }, required: ['text'] }
}

Getting Creator Info

Fetch a creator's profile:

const creator = await market.getCreator('0x...');
 
console.log(creator.name);     // "AI Developer"
console.log(creator.bio);      // "Building cool AI tools"
console.log(creator.avatar);   // "https://..."

Creator Type

interface Creator {
  id: string;
  walletAddress: string;
  name: string | null;
  avatar: string | null;
  bio: string | null;
  createdAt: string;
}

Getting Reviews

Fetch reviews for a skill:

const reviews = await market.getReviews('text-to-image');
 
for (const review of reviews) {
  console.log(`${review.score}/100 - ${review.comment}`);
}

Review Type

interface Review {
  id: string;
  skillId: string;
  consumerAddress: string;
  score: number;
  comment: string | null;
  createdAt: string;
}

Browsing Groups

Skill groups allow creators to organize related skills together.

Listing Groups

// Get all groups
const groups = await market.getGroups();
 
// Get groups by a specific creator
const creatorGroups = await market.getGroups('0x...');

Getting Group Details

// Get a group with its skills
const group = await market.getGroup('ai-tools');
 
console.log(group.name);         // "AI Tools"
console.log(group.description);  // "Collection of AI utilities"
console.log(group.skills);       // Array of skills in this group

Searching Within a Group

// Find all skills in a group
const skills = await market.search('', { group: 'ai-tools' });
 
// Combine with other filters
const cheapSkills = await market.search('image', {
  group: 'ai-tools',
  maxPrice: '0.01',
});

SkillGroup Type

interface SkillGroup {
  id: string;
  slug: string;
  name: string;
  description: string | null;
  icon: string | null;
  creatorId: string;
  isActive: boolean;
  createdAt: string;
  updatedAt: string;
}
 
interface SkillGroupWithSkills extends SkillGroup {
  skills: Skill[];
  creator: Creator | null;
}

Example: Building a Skill Browser

import { SkillzMarket } from '@skillzmarket/sdk';
 
const market = new SkillzMarket();
 
async function browseSkills() {
  // Search for skills
  const skills = await market.search('AI');
 
  for (const skill of skills) {
    console.log(`\n${skill.name} (${skill.slug})`);
    console.log(`  Price: ${skill.price} ${skill.currency}`);
    console.log(`  ${skill.description || 'No description'}`);
 
    // Get reviews
    const reviews = await market.getReviews(skill.slug);
    const avgScore = reviews.length > 0
      ? reviews.reduce((sum, r) => sum + r.score, 0) / reviews.length
      : 0;
    console.log(`  Rating: ${avgScore.toFixed(1)}/100 (${reviews.length} reviews)`);
  }
}

Next Steps

On this page