Marketplace: three sources and the CLI crawl
Where the listings come from
Section titled “Where the listings come from”Skills, MCP servers and agent-first CLIs are listed in different places. Smithery lists skills and MCP servers. skills.sh lists and installs skills. CLIs built for agents live in their own GitHub repositories. Each source counts popularity its own way.
What HarnessKit does
Section titled “What HarnessKit does”Each tab opens with a default list and has a search box. Search starts at 2 characters. The app keeps each tab’s default list for 5 minutes. Offline or on an error, the tab shows the last list it loaded.
Skills
Section titled “Skills”- Default list. Smithery’s
/skillsAPI, 10 skills per page. The page rotates through 1 to 5 by the day of the year, so the list changes daily. Skills under Smithery’s own account name,smithery-ai, are left out. The count is Smithery’s activation count. - Search. The skills.sh search API. The count is skills.sh’s install count. skills.sh sends no descriptions, so search results show none.
- Preview. HarnessKit downloads the skill’s
SKILL.mdfrom raw.githubusercontent.com. - Third-party audits. HarnessKit asks the audit service at add-skill.vercel.sh. It shows up to three results, from the partners
ath, Socket and Snyk. Previews and audit results are cached for 5 minutes. - Install. HarnessKit runs
git clone --depth 1on the skill’s GitHub repository, which copies only the latest commit. It finds the skill folder, as described under Finding one named skill below, copies it into the agent you pick, records the repository as the source, and audits the new copy.
A default-list skill has no skills.sh id. Before installing one, HarnessKit searches skills.sh by name. If nothing matches, it asks you to search for the skill directly.
MCP servers
Section titled “MCP servers”The default list and search both use Smithery’s /servers API. The default list rotates pages the same way as skills. The count is Smithery’s use count.
HarnessKit does not install MCP servers from this tab. Each listing has a Set up on Smithery link to the server’s page on smithery.ai. To copy a server you already have to another agent, use Install to Agent on the Extensions page.
Agent-first CLIs
Section titled “Agent-first CLIs”The list is cli-registry/registry.json in the public repository RealZST/harnesskit-resources. HarnessKit downloads it from GitHub and keeps it for 5 minutes. If the download fails, it uses a list built into the app. It asks the GitHub API for each repository’s star count, keeps the counts for an hour, and sorts by stars. Search filters this list by name and description, on your machine.
A listing shows the install section of the tool’s README. You run the install yourself. An entry marked verified has a skills repository with valid skill definitions, a tested install command and a maintainer review.
A GitHub Actions workflow in the same repository looks for new candidates.
- Schedule. It is scheduled for 00:00 UTC on the 1st, 4th, 7th and every third day after, through the 31st (cron
0 0 */3 * *). - Search. It runs 10 GitHub searches, such as
"agent-first" in:readme,descriptionandtopic:agent-cli, and takes 30 results from each. - Filter. It drops repositories already in the registry or on its rejected list. It also drops forks, archived or empty repositories, and those with fewer than 3 stars. The README must contain an install command, such as
npm install -gorbrew install. The README or the repository’s description must contain an agent keyword, such as “agent” or “llm”. - Score. A
SKILL.mdfile or.skill/folder adds 3 points, and anmcp.jsonor.mcp.jsonfile 2. Stars add up to 3, a push in the last 180 days 2,--jsonor--outputin the README 1, and prebuilt binaries in the latest release 2. - Report. It opens an issue labelled
cli-discoverywith the 20 highest scores. The workflow has read-only access to the repository, so it cannot edit the registry.
A maintainer reviews each issue by hand. Accepted tools go into registry.json. Rejected tools go into excluded.json with a reason, and the crawl skips them from then on.
Install from Git or a local folder
Section titled “Install from Git or a local folder”The Install from Git and Install from Local buttons on the Marketplace page take a URL or a folder.
- Git. HarnessKit runs
git clone --depth 1, then finds every folder with aSKILL.mdup to 4 levels deep. A single skill installs right away. Several skills appear in a list, all selected, for you to choose from. - Finding one named skill. For a Marketplace install, HarnessKit knows the skill’s id. It tries
skills/<id>/, then<id>/, then the repository root if it holds the only skill. Last, it searches up to 4 levels deep for a folder named<id>. - Local folder. The folder must have a
SKILL.mdat its top level. HarnessKit copies it.
Each install records how it was made, marketplace, git or local, which hk info --json shows.
Limitations
Section titled “Limitations”Under the hood
Section titled “Under the hood”crates/hk-core/src/marketplace.rscalls Smithery, skills.sh, the audit service and GitHub, and holds the built-in CLI list.src/stores/marketplace-store.tscaches each tab and resolves default-list skills through skills.sh before install.crates/hk-core/src/manager.rsclones a repository and finds the skill folder.RealZST/harnesskit-resources: .github/workflows/discover-cli.ymlschedules the CLI crawl.RealZST/harnesskit-resources: .github/scripts/discover_cli.pysearches, filters, scores and opens the issue.