Skills Upload & Discovery
Use the Registry Broker skill endpoints to publish SKILL.md + skill.json packages, then discover releases by name, version, and ownership.
Publish a skill packageDirect link to Publish a skill package
The SDK exposes a quote → publish → job-status flow:
import { RegistryBrokerClient } from '@hashgraphonline/standards-sdk';
const client = new RegistryBrokerClient({
baseUrl: 'http://localhost:4000',
apiKey: process.env.REGISTRY_BROKER_API_KEY,
});
const files = [
{
name: 'SKILL.md',
mimeType: 'text/markdown',
base64: Buffer.from('# Demo Skill\n').toString('base64'),
},
{
name: 'skill.json',
mimeType: 'application/json',
base64: Buffer.from(
JSON.stringify({
name: 'demo-skill',
version: '1.0.0',
description: 'Demo publish flow',
}),
).toString('base64'),
},
];
const quote = await client.quoteSkillPublish({
accountId: '0.0.1234',
files,
});
const publish = await client.publishSkill({
accountId: '0.0.1234',
quoteId: quote.quoteId,
files,
});
const job = await client.getSkillPublishJob(publish.jobId, {
accountId: '0.0.1234',
});
console.log(job.status);
Required files:
SKILL.mdskill.json
Optional files can be included in the same files array and are inscribed as package artifacts.
Simplified local demo scriptDirect link to Simplified local demo script
standards-sdk includes a single-skill publish demo for local or remote brokers:
pnpm -C standards-sdk exec tsx demo/registry-broker/skill-registry-publish-demo.ts \
--base-url=http://localhost:4000 \
--ledger-network=testnet \
--skill-dir=/path/to/skill-package \
--name=my-skill \
--version=1.0.0
Flags:
--base-url: broker origin (http://localhost:4000,https://registry-staging.hol.org/registry, etc.)--ledger-network: ledger network for demo auth (testnetormainnet)--skill-dir: directory containingSKILL.mdandskill.json--name,--version: optional overrides applied toskill.jsonat runtime--quote-only: only request a quote--fast: skip HCS-26 post-publish verification
Discover published skillsDirect link to Discover published skills
Use listSkills for browsing and detail pages:
const list = await client.listSkills({
name: 'demo-skill',
version: '1.0.0',
includeFiles: true,
limit: 10,
});
List all versions for a skill name:
const versions = await client.listSkillVersions({ name: 'demo-skill' });
List skills owned by the authenticated account:
const mine = await client.listMySkills({ limit: 25 });
List account-curated “My Skills List” entries:
const myList = await client.getMySkillsList({ limit: 25 });
Generate skill badgesDirect link to Generate skill badges
Use the badge endpoint with Shields to display live skill metadata in README files and docs:
const endpointUrl =
'https://hol.org/registry/api/v1/skills/badge?name=demo-skill&metric=version&style=flat';
const imageUrl = `https://img.shields.io/endpoint?url=${encodeURIComponent(endpointUrl)}`;
Supported metrics: version, status, trust, upvotes, updated.
For complete examples and embed snippets, see Skill Badges.
HTTP routesDirect link to HTTP routes
The client methods map to:
GET /api/v1/skillsGET /api/v1/skills/badgeGET /api/v1/skills/versionsGET /api/v1/skills/mineGET /api/v1/skills/my-listPOST /api/v1/skills/quotePOST /api/v1/skills/publishGET /api/v1/skills/jobs/:jobId
For schema details, response types, and complete skill method coverage (quoteSkillPublish, publishSkill, getSkillPublishJob, discovery, ownership, voting, and verification), see the Registry Broker Client API: Skill Registry.