mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-05 07:41:39 +00:00
fix(skills-hub): show every catalog source on /docs/skills (skills.sh, ClawHub, browse.sh, OpenAI, …) (#32336)
Some checks are pending
Deploy Site / deploy-vercel (push) Waiting to run
Deploy Site / deploy-docs (push) Waiting to run
Docker / shell lint / Lint Dockerfile (hadolint) (push) Waiting to run
Docker / shell lint / Lint docker/ shell scripts (shellcheck) (push) Waiting to run
Docker Build and Publish / build-amd64 (push) Waiting to run
Docker Build and Publish / build-arm64 (push) Waiting to run
Docker Build and Publish / merge (push) Blocked by required conditions
Docker Build and Publish / move-latest (push) Blocked by required conditions
Lint (ruff + ty) / ruff + ty diff (push) Waiting to run
Lint (ruff + ty) / ruff enforcement (blocking) (push) Waiting to run
Lint (ruff + ty) / Windows footguns (blocking) (push) Waiting to run
Nix / nix (macos-latest) (push) Waiting to run
Nix / nix (ubuntu-latest) (push) Waiting to run
Build Skills Index / build-index (push) Waiting to run
Build Skills Index / trigger-deploy (push) Blocked by required conditions
Tests / test (1) (push) Waiting to run
Tests / test (2) (push) Waiting to run
Tests / test (3) (push) Waiting to run
Tests / test (4) (push) Waiting to run
Tests / test (5) (push) Waiting to run
Tests / test (6) (push) Waiting to run
Tests / save-durations (push) Blocked by required conditions
Tests / e2e (push) Waiting to run
Some checks are pending
Deploy Site / deploy-vercel (push) Waiting to run
Deploy Site / deploy-docs (push) Waiting to run
Docker / shell lint / Lint Dockerfile (hadolint) (push) Waiting to run
Docker / shell lint / Lint docker/ shell scripts (shellcheck) (push) Waiting to run
Docker Build and Publish / build-amd64 (push) Waiting to run
Docker Build and Publish / build-arm64 (push) Waiting to run
Docker Build and Publish / merge (push) Blocked by required conditions
Docker Build and Publish / move-latest (push) Blocked by required conditions
Lint (ruff + ty) / ruff + ty diff (push) Waiting to run
Lint (ruff + ty) / ruff enforcement (blocking) (push) Waiting to run
Lint (ruff + ty) / Windows footguns (blocking) (push) Waiting to run
Nix / nix (macos-latest) (push) Waiting to run
Nix / nix (ubuntu-latest) (push) Waiting to run
Build Skills Index / build-index (push) Waiting to run
Build Skills Index / trigger-deploy (push) Blocked by required conditions
Tests / test (1) (push) Waiting to run
Tests / test (2) (push) Waiting to run
Tests / test (3) (push) Waiting to run
Tests / test (4) (push) Waiting to run
Tests / test (5) (push) Waiting to run
Tests / test (6) (push) Waiting to run
Tests / save-durations (push) Blocked by required conditions
Tests / e2e (push) Waiting to run
The Skills Hub page was stuck on a stale Feb 25 snapshot, showing only Built-in
+ Optional + Anthropic + LobeHub. The unified index already has 2078 skills
from skills.sh / ClawHub / LobeHub / GitHub taps / Claude Marketplace, and
BrowseShSource adds another ~330 — none of it was reaching the page.
Changes:
- website/scripts/extract-skills.py: read website/static/api/skills-index.json
(the unified multi-source catalog, rebuilt twice daily) as the canonical
external source. Keep the legacy skills/index-cache/ fallback for offline
builds. Add friendly per-source labels (skills.sh, ClawHub, browse.sh,
OpenAI, HuggingFace, Anthropic, LobeHub, etc.) and per-entry installCmd.
- website/src/pages/skills/index.tsx: add source pills + ordering for the 11
new sources; render installCmd from the index entry.
- website/scripts/prebuild.mjs: when no local skills-index.json exists, fetch
the live one from hermes-agent.nousresearch.com so local 'npm run build'
matches production without burning GitHub API quota.
- scripts/build_skills_index.py: crawl BrowseShSource so browse.sh entries
land in the unified index. Adjust source_order.
- tools/skills_hub.py: GitHubSource.DEFAULT_TAPS — openai/skills moved its
skills into skills/.curated/ and skills/.system/, so add both as explicit
taps (the listing code skips dotted dirs by design). Drop
VoltAgent/awesome-agent-skills (README-only, no SKILL.md files) and
MiniMax-AI/cli (singular skill, not a tap directory). Net effect: github
source jumps from 83 → 143 skills, with OpenAI properly included.
- .github/workflows/deploy-site.yml: build the unified index BEFORE running
extract-skills.py — previous order meant extract-skills always fell back
to the legacy cache. Drop the 'skip if file exists' guard; the file is
gitignored and must be rebuilt every deploy.
- .github/workflows/skills-index.yml: drop the broken 'deploy-with-index'
job (it cp'd 'landingpage/\*' which no longer exists, failing every cron
run since the landingpage move). Replace it with a workflow_dispatch
trigger of deploy-site.yml so the index refresh still reaches production
on schedule.
- website/docs/user-guide/features/skills.md: drop VoltAgent from the
default-taps doc list to match the code.
Before: 695 skills (Built-in 90, Optional 84, Anthropic 16, LobeHub 505).
After: 2168 skills across 9 source pills, including the 1212 skills.sh
entries the user expected to see.
This commit is contained in:
parent
c26af46811
commit
cea87d9139
8 changed files with 396 additions and 95 deletions
|
|
@ -18,6 +18,8 @@ interface Skill {
|
|||
envVars?: string[];
|
||||
commands?: string[];
|
||||
docsPath?: string;
|
||||
identifier?: string;
|
||||
installCmd?: string;
|
||||
}
|
||||
|
||||
const allSkills: Skill[] = skills as Skill[];
|
||||
|
|
@ -95,9 +97,96 @@ const SOURCE_CONFIG: Record<
|
|||
border: "rgba(167, 139, 250, 0.2)",
|
||||
icon: "\u{25A0}",
|
||||
},
|
||||
"skills.sh": {
|
||||
label: "skills.sh",
|
||||
color: "#34d399",
|
||||
bg: "rgba(52, 211, 153, 0.08)",
|
||||
border: "rgba(52, 211, 153, 0.2)",
|
||||
icon: "\u{2734}",
|
||||
},
|
||||
ClawHub: {
|
||||
label: "ClawHub",
|
||||
color: "#f472b6",
|
||||
bg: "rgba(244, 114, 182, 0.08)",
|
||||
border: "rgba(244, 114, 182, 0.2)",
|
||||
icon: "\u{2726}",
|
||||
},
|
||||
"browse.sh": {
|
||||
label: "browse.sh",
|
||||
color: "#22d3ee",
|
||||
bg: "rgba(34, 211, 238, 0.08)",
|
||||
border: "rgba(34, 211, 238, 0.2)",
|
||||
icon: "\u{29BF}",
|
||||
},
|
||||
OpenAI: {
|
||||
label: "OpenAI",
|
||||
color: "#10b981",
|
||||
bg: "rgba(16, 185, 129, 0.08)",
|
||||
border: "rgba(16, 185, 129, 0.2)",
|
||||
icon: "\u{2737}",
|
||||
},
|
||||
HuggingFace: {
|
||||
label: "HuggingFace",
|
||||
color: "#fbbf24",
|
||||
bg: "rgba(251, 191, 36, 0.08)",
|
||||
border: "rgba(251, 191, 36, 0.2)",
|
||||
icon: "\u{1F917}",
|
||||
},
|
||||
VoltAgent: {
|
||||
label: "VoltAgent",
|
||||
color: "#facc15",
|
||||
bg: "rgba(250, 204, 21, 0.08)",
|
||||
border: "rgba(250, 204, 21, 0.2)",
|
||||
icon: "\u{26A1}",
|
||||
},
|
||||
GitHub: {
|
||||
label: "GitHub",
|
||||
color: "#94a3b8",
|
||||
bg: "rgba(148, 163, 184, 0.08)",
|
||||
border: "rgba(148, 163, 184, 0.2)",
|
||||
icon: "\u{2756}",
|
||||
},
|
||||
"Well-Known": {
|
||||
label: "Well-Known",
|
||||
color: "#818cf8",
|
||||
bg: "rgba(129, 140, 248, 0.08)",
|
||||
border: "rgba(129, 140, 248, 0.2)",
|
||||
icon: "\u{2756}",
|
||||
},
|
||||
gstack: {
|
||||
label: "gstack",
|
||||
color: "#fb923c",
|
||||
bg: "rgba(251, 146, 60, 0.08)",
|
||||
border: "rgba(251, 146, 60, 0.2)",
|
||||
icon: "\u{2756}",
|
||||
},
|
||||
MiniMax: {
|
||||
label: "MiniMax",
|
||||
color: "#f87171",
|
||||
bg: "rgba(248, 113, 113, 0.08)",
|
||||
border: "rgba(248, 113, 113, 0.2)",
|
||||
icon: "\u{2756}",
|
||||
},
|
||||
};
|
||||
|
||||
const SOURCE_ORDER = ["all", "built-in", "optional", "Anthropic", "LobeHub", "Claude Marketplace"];
|
||||
const SOURCE_ORDER = [
|
||||
"all",
|
||||
"built-in",
|
||||
"optional",
|
||||
"Anthropic",
|
||||
"OpenAI",
|
||||
"HuggingFace",
|
||||
"skills.sh",
|
||||
"ClawHub",
|
||||
"browse.sh",
|
||||
"LobeHub",
|
||||
"Claude Marketplace",
|
||||
"VoltAgent",
|
||||
"Well-Known",
|
||||
"GitHub",
|
||||
"gstack",
|
||||
"MiniMax",
|
||||
];
|
||||
|
||||
function highlightMatch(text: string, query: string): React.ReactNode {
|
||||
if (!query || !text) return text;
|
||||
|
|
@ -250,7 +339,7 @@ function SkillCard({
|
|||
</div>
|
||||
)}
|
||||
<div className={styles.installHint}>
|
||||
<code>hermes skills install {skill.name}</code>
|
||||
<code>{skill.installCmd || `hermes skills install ${skill.name}`}</code>
|
||||
</div>
|
||||
{skill.docsPath && (
|
||||
<a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue