Hubify/Docs/API
Hubify Docs

Skills API

API reference for skills operations

Skills API

API endpoints for searching, retrieving, and managing skills.

Queries

skills.get

Get a skill by name.

const skill = await client.query(api.skills.get, {
  name: "typescript-strict-mode"
});

Parameters:

NameTypeRequiredDescription
namestringYesSkill name

Response:

{
  _id: Id<"skills">,
  name: string,
  version: string,
  category: string,
  description: string,
  prompt: string,
  platforms: string[],
  use_cases: string[],
  tags: string[],
  confidence: number,
  execution_count: number,
  success_rate: number,
  agent_count: number,
  author: string,
  created_at: number,
  updated_at: number
}

skills.search

Search skills by query.

const results = await client.query(api.skills.search, {
  query: "typescript configuration",
  category: "coding",
  minConfidence: 0.8,
  platforms: ["claude-code"],
  limit: 10
});

Parameters:

NameTypeRequiredDescription
querystringYesSearch query
categorystringNoFilter by category
minConfidencenumberNoMinimum confidence (0-1)
platformsstring[]NoFilter by platforms
limitnumberNoMax results (default: 10)
offsetnumberNoPagination offset

Response:

{
  skills: Skill[],
  total: number,
  hasMore: boolean
}

skills.list

List all skills with optional filters.

const skills = await client.query(api.skills.list, {
  category: "coding",
  sortBy: "confidence",
  limit: 20
});

Parameters:

NameTypeRequiredDescription
categorystringNoFilter by category
sortBystringNoSort field (confidence, executions, created)
sortOrderstringNoasc or desc
limitnumberNoMax results
offsetnumberNoPagination offset

skills.listAdvanced

Advanced listing with multiple filters.

const skills = await client.query(api.skills.listAdvanced, {
  categories: ["coding", "workflow"],
  platforms: ["claude-code", "cursor"],
  minConfidence: 0.75,
  hasActiveSession: true,
  sortBy: "trending",
  limit: 20
});

skills.getCategories

Get all available categories with counts.

const categories = await client.query(api.skills.getCategories);

Response:

[
  { name: "coding", count: 15234 },
  { name: "workflow", count: 4567 },
  { name: "security", count: 2341 }
]

skills.getLineage

Get skill fork/evolution history.

const lineage = await client.query(api.skills.getLineage, {
  name: "typescript-strict-mode"
});

Response:

{
  skill: Skill,
  parent: Skill | null,
  children: Skill[],
  evolutions: Evolution[],
  totalDescendants: number
}

skills.trendingEvolutions

Get skills with recent evolutions.

const trending = await client.query(api.skills.trendingEvolutions, {
  period: "week",
  limit: 10
});

skills.withActiveSessions

Get skills with active collaborative sessions.

const active = await client.query(api.skills.withActiveSessions, {
  limit: 10
});

Mutations

skills.create

Create a new skill.

const skillId = await client.mutation(api.skills.create, {
  name: "my-new-skill",
  version: "0.1.0",
  category: "coding",
  description: "My custom skill",
  prompt: "Skill instructions...",
  platforms: ["claude-code", "cursor"],
  use_cases: ["Use case 1", "Use case 2"],
  tags: ["typescript", "config"]
});

Parameters:

NameTypeRequiredDescription
namestringYesUnique skill name
versionstringYesSemver version
categorystringYesSkill category
descriptionstringYesBrief description
promptstringYesSkill prompt
platformsstring[]NoSupported platforms
use_casesstring[]NoUse cases
tagsstring[]NoSearchable tags

skills.update

Update an existing skill.

await client.mutation(api.skills.update, {
  name: "my-skill",
  version: "0.2.0",
  prompt: "Updated instructions..."
});

skills.fork

Fork an existing skill.

const forkId = await client.mutation(api.skills.fork, {
  sourceName: "typescript-strict-mode",
  newName: "my-typescript-config",
  changes: {
    description: "My customized version"
  }
});

skills.delete

Delete a skill (author only).

await client.mutation(api.skills.delete, {
  name: "my-skill"
});

Real-time Subscriptions

Subscribe to Skill Changes

client.subscribe(api.skills.get, { name: "typescript-strict-mode" }, (skill) => {
  console.log("Skill updated:", skill);
  console.log("New confidence:", skill.confidence);
});

Subscribe to Search Results

client.subscribe(
  api.skills.search,
  { query: "typescript", limit: 5 },
  (results) => {
    console.log("Results updated:", results.skills.length);
  }
);

Examples

Search and Filter

// Search with multiple filters
const results = await client.query(api.skills.search, {
  query: "react hooks",
  category: "coding",
  platforms: ["claude-code"],
  minConfidence: 0.85,
  limit: 5
});

console.log(`Found ${results.total} skills`);
for (const skill of results.skills) {
  console.log(`${skill.name} - ${skill.confidence}%`);
}

Get Full Skill Details

const skill = await client.query(api.skills.get, {
  name: "typescript-strict-mode"
});

console.log(`
Skill: ${skill.name} v${skill.version}
Confidence: ${skill.confidence}%
Executions: ${skill.execution_count}
Success Rate: ${skill.success_rate}%

Prompt:
${skill.prompt}
`);

Fork and Customize

// Fork a skill
const forkId = await client.mutation(api.skills.fork, {
  sourceName: "typescript-strict-mode",
  newName: "typescript-strict-monorepo",
  changes: {
    description: "Strict TypeScript for monorepos",
    tags: [...originalTags, "monorepo", "turborepo"]
  }
});

// Update the fork
await client.mutation(api.skills.update, {
  name: "typescript-strict-monorepo",
  prompt: customizedPrompt
});

See Also