skill-hub-query

SKILLAI 工具
AI 工具 未标注权限 许可证不明确
安装这个技能

Query, install, update, and edit AI agent skills on any compatible Skill Hub (self-hosted, or any Hub implementing the documented API contract). Dual-channel: with a token it uses the authenticated API (full features including private skills); without a token it falls back to the unauthenticated channel (public skills only). Covers: list newly published skills, search by keyword / author / time / source, inspect version history, install or upgrade a specific version, and edit a skill's card metadata (display name, summary, tags, visibility, applicable position, etc.) via a safety-first GET -> diff -> backup -> PUT -> dual-channel verify -> auto-rollback flow, plus team member management (search teams / list members / add / remove with pre-write de-duplication and post-write verification). Trigger phrases include "what's new on the hub", "search for X skill", "install X", "update Y skill", "edit hub card info", "show skill version history", "add a team member", "remove from team", "list team members", "skill-hub-query". Use when the user asks what is on a hub, wants a skill installed or upgraded to an exact version, needs card metadata edited safely, or manages skill-hub team membership.

一句话选型结论

按资料字段整理

skill-hub-query是AI 工具类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类AI 工具 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_2a52e6b3/skill-hub-query
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

AI 工具
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_2a52e6b3仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791733262
正文体量26.6 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
组合多个 AI 能力

把写作、检索、总结串成一条流程。

搭工作流

把固定流程做成可重复调用的步骤。

做提示词与评测

整理提示词并对比输出效果。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在AI 工具场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
skill-hub-query当前 未标注权限 未标注 未标注 未标注 有
执行计划 只读 GitHub 仓库 151.5 万 Codex、Claude、Cursor 有
Playwright MCP 测试 浏览器控制 ClawHub 市场 136.5 万 OpenClaw 有
完成前的验证 未标注权限 GitHub 仓库 131.9 万 Codex、Claude、Cursor 有
子 Agent 驱动开发 只读 GitHub 仓库 131.2 万 Codex、Claude、Cursor 有
前端设计 执行命令 GitHub 仓库 125.6 万 Codex、Claude、Cursor 有

SKILL.md 全文

26.6 KB
模型实际读到的说明书原文,来自技能仓库

skill-hub-query

  • Version: 1.4.0
  • License: MIT
  • Author: Evan Song (<https://github.com/Songhonglei>)
  • Repository: <https://github.com/Songhonglei/build-better-skills/tree/main/skills/skill-hub-query>
  • Part of: build-better-skills suite — see Stages for the lifecycle map.

> Drive any compatible Skill Hub from the command line with a single,
> predictable interface. Works with self-hosted Hubs that implement the
> documented API contract.

> Heads-up: this tool talks to Hubs that implement the API contract below.
> It does NOT target clawhub.ai — that Hub has its own
> API surface and an official CLI named clawhub. Use this tool when you have
> a private or compatible Hub to drive.


Requirements

Command Used for If missing
bash (≥ 4.0) all scripts nothing works
curl every HTTP call nothing works
jq JSON parsing, cache queries nothing works
python3 (≥ 3.6, stdlib only) scripts/_zip_safe.py — listing and extracting skill archives install.sh cannot extract
file archive type detection in error paths degraded diagnostics only
git edit.sh owner pre-check via git config user.email set SKILL_HUB_OWNER_EMAIL instead

> unzip is not required. Extraction goes through Python's zipfile
> because Info-ZIP unzip 6.00 ignores the ZIP spec's UTF-8 filename flag and
> mangles non-ASCII filenames — the installed skill then crashes on first run
> with a FileNotFoundError that points at the wrong culprit. Run
> bash scripts/doctor.sh to verify filename handling on your machine.


Agent workflow

Dual-channel auto-selection

When the user asks a Hub-related question ("what's on the hub", "install X",
"search for Y"), run sync.sh / query.sh / install.sh directly — the
scripts pick the right channel:

User state Channel Capability
Token set (env or credentials file) OpenAPI (&lt;HUB_API_PREFIX&gt;/* with auth header) Full features incl. private skills
No token Legacy fallback (&lt;HUB_LEGACY_API_PREFIX&gt;/* without auth) Search & install public skills

When falling back the first time, the script emits a one-shot notice
suggesting the user request a token for long-term stability. After that it
stays silent.

When to actively suggest the user configure a token

Only when the user explicitly needs to:
- install a private skill (search finds it, but download requires auth)
- get contract-stable, long-term behavior (legacy fallback may be removed)
- when doctor.sh explicitly recommends it

Setting up the token (after the user provides one)

# Option A: env var (CI / temporary)
export SKILL_HUB_URL=&quot;https://hub.your-company.com&quot;
export SKILL_HUB_TOKEN=&quot;&lt;your-token&gt;&quot;

# Option B: credentials file (recommended, cross-skill reusable)
mkdir -p &quot;${XDG_CONFIG_HOME:-$HOME/.config}/skill-hub-query&quot;
cat &gt; &quot;${XDG_CONFIG_HOME:-$HOME/.config}/skill-hub-query/credentials.json&quot; &lt;&lt;EOF
{
  &quot;endpoint&quot;:   &quot;https://hub.your-company.com&quot;,
  &quot;token&quot;:      &quot;&lt;your-token&gt;&quot;,
  &quot;authHeader&quot;: &quot;Authorization&quot;,
  &quot;authScheme&quot;: &quot;Bearer &quot;
}
EOF
chmod 600 &quot;${XDG_CONFIG_HOME:-$HOME/.config}/skill-hub-query/credentials.json&quot;

Then verify with bash scripts/doctor.sh.

> Never echo a full token back to the user, write it outside the credentials
> directory, or commit it to git.

"What's on the hub for X?"

  1. Silently bash sync.sh (incremental; zero HTTP if nothing changed)
  2. bash query.sh keyword X
  3. Reply with a user-readable table (name / author / version / updated / summary), not raw IDs
  4. If ≤5 hits include the summary; if many, list top 10 + total count

"Install X"

  1. bash sync.sh then bash query.sh slug X to get the latest version and summary
  2. Confirm first: "Will install {displayName} v{latest} (author X). Proceed?"
  3. After user approves, run: bash install.sh X --yes
  4. Without --yes, install.sh blocks on stdin for already-installed skills; in non-interactive mode it refuses outright — preventing silent overwrite
  5. Show: "installed; will be loaded on the next agent session"

"Install a batch"

  1. Query each slug for version + permission info
  2. Show one combined manifest + estimated download size, wait for approval
  3. After approval, install serially with install.sh &lt;slug&gt; --yes (avoid rate limiting); report failures separately

"Manage team members"

Runs team.sh (team member management: search / my teams / detail / member
list / add / remove). Optional Hub capability — contract in
references/api.md §5; if your Hub does not implement
it, set SKILL_HUB_DISABLE_TEAM=1.

Field-tested pitfalls the script already defends against (do not bypass):

  • add returns success even for non-existent emails and writes a dangling
    record — the script re-verifies every add against the member list.
  • add is idempotent for existing members — the script de-duplicates first
    and reports the existing role (never silently changes it).
  • The pagination parameter is current= (page= is silently ignored).
  • Valid roles: member / admin / viewer.
  • Write operations show the target team + full roster and wait for
    confirmation; --yes must be user-authorized (an agent must never pass it).

Configuration

> ⚠️ You MUST configure SKILL_HUB_URL (or .endpoint in the credentials
> file) before any network call. There is no baked-in default, because no
> single public Hub is guaranteed to implement this contract. Run
> bash scripts/doctor.sh first — it will tell you exactly what's missing.

Env variable Default Purpose
SKILL_HUB_PROVIDER (unset) Select a built-in adapter for a known public Hub instead of the generic contract. Currently supports skillhub_cn (see Built-in provider: skillhub.cn). When unset, the generic-contract behavior below applies.
SKILL_HUB_URL (must be set) Hub base URL, e.g. https://hub.your-company.com (ignored when SKILL_HUB_PROVIDER is set)
SKILL_HUB_API_PREFIX /api/v1/skill Primary API path
SKILL_HUB_LEGACY_API_PREFIX /api/skill Fallback API path
SKILL_HUB_AUTH_HEADER Authorization HTTP header name for auth
SKILL_HUB_AUTH_SCHEME Bearer Header value prefix (note trailing space; set to &quot;&quot; for API-key auth)
SKILL_HUB_TOKEN (unset) API token (takes precedence over credentials file)
SKILL_HUB_TOKEN_FILE ${XDG_CONFIG_HOME:-~/.config}/skill-hub-query/credentials.json Credentials file
SKILL_HUB_SKILLS_DIR (auto-detect) Where installed skills land
SKILL_HUB_CACHE_DIR ${XDG_CACHE_HOME:-~/.cache}/skill-hub-query Where the local cache lives
SKILL_HUB_EDIT_PREFIX same as SKILL_HUB_LEGACY_API_PREFIX Path prefix for /edit and /detail (edit.sh only)
SKILL_HUB_DISABLE_EDIT 0 Set to 1 to disable edit.sh when your Hub does not implement /edit
SKILL_HUB_BACKUP_RETENTION 20 How many recent edit.sh backups to keep per slug (older are pruned)
SKILL_HUB_DOWNLOAD_TIMEOUT 120 curl --max-time (seconds) for skill ZIP download in install.sh
SKILL_HUB_OWNER_EMAIL (auto: git config user.email) Email used by edit.sh owner pre-check; override if your git identity differs from your Hub identity
SKILL_HUB_TEAM_PREFIX /api/team Path prefix for team endpoints (team.sh only)
SKILL_HUB_DISABLE_TEAM 0 Set to 1 to disable team.sh when your Hub does not implement the team endpoints

Skills install directory

Resolved in order: SKILL_HUB_SKILLS_DIR -> ~/.claude/skills/ ->
~/.openclaw/workspace/skills/ -> ~/.config/skills/ (first existing wins).

Setting up Hub URL + token (one-time)

echo &#x27;export SKILL_HUB_URL=&quot;https://hub.your-company.com&quot;&#x27; &gt;&gt; ~/.bashrc
echo &#x27;export SKILL_HUB_TOKEN=&quot;&lt;your-token&gt;&quot;&#x27; &gt;&gt; ~/.bashrc
source ~/.bashrc

Or — for richer per-Hub profiles — use the credentials file:

mkdir -p &quot;${XDG_CONFIG_HOME:-$HOME/.config}/skill-hub-query&quot;
cat &gt; &quot;${XDG_CONFIG_HOME:-$HOME/.config}/skill-hub-query/credentials.json&quot; &lt;&lt;EOF
{
  &quot;endpoint&quot;:   &quot;https://hub.your-company.com&quot;,
  &quot;token&quot;:      &quot;&lt;your-token&gt;&quot;,
  &quot;authHeader&quot;: &quot;Authorization&quot;,
  &quot;authScheme&quot;: &quot;Bearer &quot;
}
EOF
chmod 600 &quot;${XDG_CONFIG_HOME:-$HOME/.config}/skill-hub-query/credentials.json&quot;

> Never commit tokens to git, never hardcode them in scripts, and never
> echo the full token to the user.


Built-in provider: skillhub.cn

skillhub.cn is a China-optimized public skills hub.
Because its API shape differs from the generic contract above, this skill ships
a built-in adapter for it. Activate it with:

export SKILL_HUB_PROVIDER=skillhub_cn        # one-off
# or persist it:
echo &#x27;export SKILL_HUB_PROVIDER=skillhub_cn&#x27; &gt;&gt; ~/.bashrc

When the provider is active, SKILL_HUB_URL / token / API-prefix env vars are
ignored — the adapter targets https://api.skillhub.cn directly. No token
is needed (all supported operations are public, read-only).

Capability matrix (skillhub.cn)

Operation Command Supported?
Search / browse query.sh keyword &lt;kw&gt; · query.sh today · query.sh combo --keyword= --category= --source= ✅ live (no local cache)
Skill detail query.sh slug &lt;slug&gt; ✅
Version history query.sh versions &lt;slug&gt; ✅
Install install.sh &lt;slug&gt; [--yes] ✅
sync.sh — ⚪ no-op (live search needs no cache; informational, exit 0)
query.sh author &lt;handle&gt; — ❌ no author-filter param on skillhub.cn (use keyword)
edit.sh (edit card metadata) — ❌ not available — see below
team.sh (team management) — ❌ not available (no team endpoints on skillhub.cn)

Why edit is not supported on skillhub.cn

skillhub.cn card metadata (displayName / summary / tags / category) is a
one-way mirror synced from the upstream source (clawhub / GitHub). The only
write endpoints the platform exposes are publish / unlist / relist / delete /
claim — none of which edit card fields. To change a card, update the
upstream source and re-publish/let it re-sync. (This differs from a
generic Hub that implements a PUT /edit contract, which edit.sh drives.)

Examples (skillhub.cn)

export SKILL_HUB_PROVIDER=skillhub_cn
bash scripts/query.sh keyword code           # search
bash scripts/query.sh today                  # browse newest
bash scripts/query.sh slug skill-creator     # detail
bash scripts/query.sh versions skill-creator # versions
bash scripts/install.sh skill-creator --yes  # install
bash scripts/doctor.sh                        # shows the capability matrix

Self-check / diagnosis

bash scripts/doctor.sh

doctor.sh probes both channels (OpenAPI with token, legacy without) plus
optionally the /edit endpoint. If at least one channel works, the skill is
usable.


Cache & performance

All list queries hit a local JSON cache (${SKILL_HUB_CACHE_DIR}/skill-cache.json),
parsed with jq (sub-ms).

Trigger Sync action
Cache missing or corrupt Full sync
User asks "refresh cache" Forced full sync
Routine query Incremental (records with updatedAt newer than cursor)
Incremental page 1 entirely new (= 100 records) Upgrade to full sync

> Incremental sync does NOT prune removed/withdrawn skills (it only unions
> new records). If you hit a "found in cache but install 404s" case, run
> bash sync.sh --full. The full sync log will report "pruned N removed".

Do not treat cached latestVersion as authoritative

query.sh list/slug queries read the local cache. When that cache is stale the
latestVersion field is stale too — and a stale value looks exactly like a fresh
one
. There is no signal telling you to doubt it.

Observed failure: a cache left untouched for 67 days reported an old release as
"latest", which nearly caused a publish against the wrong version baseline.

  • query.sh now warns when the cache is older than 7 days (notice) or
    older than 30 days (loud). Warnings go to stderr only and never block —
    offline use stays intentional. When you see one, run sync.sh before trusting
    the numbers.
  • For anything version-critical — deciding a release number, comparing
    versions, checking whether an upgrade exists — re-sync first and only then read
    the number:
bash scripts/sync.sh &amp;&amp; bash scripts/query.sh slug &lt;slug&gt;

> Note: the skillhub_cn provider queries the hub live and never reads this
> cache, so the warning does not apply there — it also offers a dedicated
> query.sh versions &lt;slug&gt; listing.

> Rule of thumb: use the cache for discovery (search, browse, read summaries);
> never let a cached number decide a release.


Multi-user / shared-host caveat

The legacy channel (no token) identifies callers by source IP. On shared
hosts (containers, CI runners), all agents/users share one identity.
scope=mine returns the list for that shared identity.

For per-user isolation on shared hosts, configure a per-user SKILL_HUB_TOKEN.


Quick reference: scenarios

Scenario 1: search

User request Action
"Search for calendar-related skills" bash sync.sh &amp;&amp; bash query.sh keyword calendar
"What was published this week?" bash sync.sh &amp;&amp; bash query.sh time this_week
"Anything on 2026-05-20?" bash query.sh time 2026-05-20 (single day: 00:00 - 23:59)
"Between 5/18 and 5/22?" bash query.sh time 2026-05-18:2026-05-22
"Last week by user X?" bash sync.sh &amp;&amp; bash query.sh combo --since=last_week --author=X
"Only this account (avoid prefix collisions)" bash query.sh author alice@example.com --exact
"Official skills today?" bash sync.sh &amp;&amp; bash query.sh combo --since=today --source=official
"Show details of skill XX" bash query.sh slug XX

Scenario 2: install / update

User request Action
"Install calendar" 1) Check cached version 2) Confirm with user 3) After approval: bash install.sh calendar --yes
"Update html-go-live to latest" First query.sh slug html-go-live for new version + confirm with user -> after approval bash install.sh html-go-live --yes (--yes must be user-authorized)
"Install html-go-live 2.4.0" Same confirmation flow -> after approval bash install.sh html-go-live 2.4.0 --yes
"Search skillhub.cn for X" SKILL_HUB_PROVIDER=skillhub_cn bash query.sh keyword X (no token; see Built-in provider: skillhub.cn)
"Install X from skillhub.cn" SKILL_HUB_PROVIDER=skillhub_cn bash install.sh X --yes

> --yes is a user-authorization flag; an LLM/agent caller must not add it on its own.
> The user must explicitly say "yes" / "go ahead" / "install" first; SKILL.md examples in
> automated paths intentionally omit --yes.

Scenario 3: version history

User request Action
"Version history of html-go-live" source scripts/_lib.sh &amp;&amp; api_get &quot;${HUB_API_PREFIX}/versions/html-go-live?limit=20&quot; \| jq
"What changed in 2.4.0?" api_get &quot;${HUB_API_PREFIX}/versions/html-go-live/2.4.0&quot; \| jq .data.version.changelog

Scenario 4: diagnose / refresh

User request Action
"skill-hub-query is broken / I can't find anything" bash doctor.sh (probes all channels and reports the precise issue)
"Refresh cache / rebuild cache / prune removed skills" bash sync.sh --full

Scenario 5: edit a skill's card metadata

Use edit.sh to modify the Hub card for a skill you own. You can only edit
skills you own
; non-owners get 403 from the Hub.

> Hub compatibility: This requires your Hub to implement
> PUT /edit/&lt;slug&gt; and GET /detail/&lt;slug&gt;. If your Hub does not implement
> them, run: export SKILL_HUB_DISABLE_EDIT=1 and edit.sh will refuse to run
> with an informative message instead of producing confusing errors.

User request Action
"Show current card info for my-skill" bash edit.sh &lt;slug&gt; --show
"Change summary of my-skill to xxx" First --show or --dry-run to confirm -> after approval: bash edit.sh &lt;slug&gt; --summary &quot;xxx&quot; --yes
"Add tags Demo / Test to my-skill" First --show to grab current tags, build the merged list -> after approval bash edit.sh &lt;slug&gt; --tags &quot;old1,old2,Demo,Test&quot; --yes
"Change visibility of my-skill to public" High-risk: surface the prompt to the user explicitly (including any Hub-side policy that may silently downgrade) -> after explicit approval add --yes

> Agent caller rule (same as install.sh): --yes is a user-authorization
> flag. An agent must NOT add it on its own; the human user must explicitly
> approve. Without --yes, edit.sh blocks on stdin in a TTY and refuses to
> proceed in non-interactive mode.

> Array fields (tags / scene / business / ...) are full overwrites, not
> additive. To append, first --show to read the current list, then submit
> the merged list.

> Supported fields: see bash edit.sh --help for the full list of CLI flags.

> Safety guarantees (five-stage flow):
> 1. GET the authoritative current value
> 2. Owner pre-check (server-side 403 is the ultimate safety net)
> 3. Build patch + show diff (skip PUT if no actual diff)
> 4. Backup to disk + user confirm (backups in ${SKILL_HUB_CACHE_DIR}/edit-backups/, latest 20 per slug)
> 5. PUT + dual-channel verify with retry + auto-rollback on mismatch
> (visibility silent-downgrade is a documented partial-success edge case)


Self-hosted Hub: API contract

Your Hub must implement these endpoints (response envelope
{code: 200, message: &quot;&quot;, data: {...}}):

GET  &lt;endpoint&gt;&lt;SKILL_HUB_API_PREFIX&gt;/search?page=N&amp;size=N&amp;orderBy=updatedAt&amp;order=desc
     -&gt; data: {records: [&lt;skill&gt;...], total: &lt;number&gt;}

GET  &lt;endpoint&gt;&lt;SKILL_HUB_API_PREFIX&gt;/versions/&lt;slug&gt;?limit=N
     -&gt; data: {items: [{version, changelog, ...}, ...]}

GET  &lt;endpoint&gt;&lt;SKILL_HUB_API_PREFIX&gt;/versions/&lt;slug&gt;/&lt;version&gt;
     -&gt; data: {version: {...}}

GET  &lt;endpoint&gt;&lt;SKILL_HUB_LEGACY_API_PREFIX&gt;/download/&lt;slug&gt;?version=&lt;v&gt;&amp;track=true
     -&gt; body: zip bytes (Content-Type may be application/octet-stream)

Each &lt;skill&gt; record minimally contains:

{
  &quot;slug&quot;: &quot;string&quot;,
  &quot;displayName&quot;: &quot;string&quot;,
  &quot;summary&quot;: &quot;string&quot;,
  &quot;owner&quot;: {&quot;displayName&quot;: &quot;...&quot;, &quot;handle&quot;: &quot;...&quot;, &quot;email&quot;: &quot;...&quot;},
  &quot;source&quot;: &quot;official|personal|external&quot;,
  &quot;updatedAt&quot;: &lt;epoch_ms&gt;,
  &quot;latestVersion&quot;: {&quot;version&quot;: &quot;x.y.z&quot;}
}

For edit.sh (optional), additionally:

PUT  &lt;endpoint&gt;&lt;SKILL_HUB_EDIT_PREFIX&gt;/edit/&lt;slug&gt;
     body = JSON patch (any subset of editable fields)
     empty body returns the current snapshot
     -&gt; data: &lt;full skill metadata&gt;

GET  &lt;endpoint&gt;&lt;SKILL_HUB_EDIT_PREFIX&gt;/detail/&lt;slug&gt;
     -&gt; data: {skill: &lt;full metadata&gt;}

If your Hub uses a different auth scheme, override SKILL_HUB_AUTH_HEADER and
SKILL_HUB_AUTH_SCHEME (e.g. SKILL_HUB_AUTH_HEADER=X-API-Key
SKILL_HUB_AUTH_SCHEME=&quot;&quot;).

> 📖 Need the full request/response field reference? When implementing or
> debugging a self-hosted Hub, read references/api.md —
> it documents every endpoint's exact parameters, response envelope, and field
> semantics in detail.


File layout

skill-hub-query/
├── SKILL.md                          # this file
├── credentials.example.json          # template for the credentials file
├── references/
│   └── api.md                        # detailed API contract reference
└── scripts/
    ├── _lib.sh                       # path discovery + token + curl wrapper (sourced)
    ├── _edit_lib.sh                  # edit.sh internals (sourced)
    ├── _zip_safe.py                  # zip list/extract with correct filename decoding
    ├── doctor.sh                     # one-shot self-check
    ├── sync.sh                       # full / incremental cache sync
    ├── query.sh                      # query the local cache
    ├── install.sh                    # download + safe extract + atomic dir replace
    └── edit.sh                       # five-stage safe metadata editor (optional Hub features)

Cache & credentials (NOT in skill directory, NOT git-tracked):

${SKILL_HUB_CACHE_DIR:-~/.cache/skill-hub-query}/
├── skill-cache.json                  # full skill index (key = slug)
├── skill-cache-meta.json             # sync cursor + metadata
├── skill-versions.json               # locally installed skill versions
└── edit-backups/                     # snapshots before each edit (latest 20 per slug)

${XDG_CONFIG_HOME:-~/.config}/skill-hub-query/credentials.json   (chmod 600)

Direct API call pattern (advanced)

# 1) source the lib (loads token / paths / curl wrapper)
source ./scripts/_lib.sh

# 2) call any API path (api_get auto-routes: token -&gt; OpenAPI; none -&gt; legacy)
api_get &quot;${HUB_API_PREFIX}/search?keyword=calendar&amp;size=20&quot;
api_get &quot;${HUB_API_PREFIX}/versions/html-go-live?limit=10&quot;
api_get &quot;${HUB_API_PREFIX}/versions/html-go-live/2.4.0&quot;

# 3) download a zip (public skills don&#x27;t need auth; private skills do)
api_download &quot;html-go-live&quot; &quot;2.4.0&quot; &quot;/tmp/x.zip&quot;

For direct curl calls, pass the auth header when you have a token:
-H &quot;$(load_auth_header): $(load_auth_scheme)$SKILL_HUB_TOKEN&quot;.


Error reference

Error What to do
[info] No SKILL_HUB_TOKEN configured, falling back to legacy channel Normal; consider setting a token for long-term stability
[error] No SKILL_HUB_TOKEN found, and the legacy fallback channel is unavailable Both channels are down; run doctor.sh to pinpoint
HTTP 401 / token invalid Token expired or revoked; refresh it or remove it to fall back to legacy
[error] Skill &#x27;X&#x27; access denied (HTTP 403, private skill) Private skill; configure a token with permission, or ask the owner
[error] Skill &#x27;X&#x27; is private (response code=403) Same as above (some Hubs return 200 + JSON error)
[error] Skill &#x27;X&#x27; not found (HTTP 404) Wrong slug / removed; try query.sh slug X and possibly sync.sh --full
[error] Download failed: X (network error) curl-layer failure (network/DNS); check connectivity
zip contains unsafe paths Defense against directory traversal; report to Hub maintainer
extraction failed (corrupt or truncated zip) The download is not a valid archive; existing install untouched. Retry; if it persists, report to the Hub maintainer
version mismatch: requested vX, but the package&#x27;s SKILL.md says vY The Hub's download endpoint served a different version than requested. The ledger records the actual version. Pin the version explicitly and re-check if you need an exact one
version-history API unavailable; falling back to cached version The version API failed (the printed reason says whether it was auth or network). The cache can lag the Hub, so verify the version, or run sync.sh and reinstall
_zip_safe.py cannot decode UTF-8 filenames The python3 zipfile module is broken/incomplete; skills with non-ASCII filenames would break after install. Fix python3 before installing
Extracted content is missing SKILL.md Malformed zip; aborted without touching existing install
install failed; rolling back Atomic dir replace failed (rare; usually disk full)
X exists and --yes not given Agent didn't get user authorization; have the user say "yes" first
Cache corruption (jq parse failure) sync.sh rebuilds automatically
edit.sh is disabled because SKILL_HUB_DISABLE_EDIT=1 Your Hub does not expose /edit; unset the var only if it does

Known limitations

  1. The ZIP download endpoint is not part of the formal OpenAPI spec on all Hubs; install.sh uses the legacy /download/&lt;slug&gt; path (public skills: no auth needed; private: token required).
  2. Some legacy fields (starredAt, starred, litToday, etc.) are deprecated and may be missing depending on Hub version.
  3. Incremental sync does not prune removed skills (see "Cache" section).
  4. The legacy channel is a transition path; for production / long-term use, configure a token.
  5. edit.sh requires optional /edit and /detail endpoints; not all Hubs expose them.
  6. The cached latestVersion.version is not a source of truth. It is a snapshot written by sync.sh and is not invalidated when the Hub publishes afterwards (observed drift: cache 1.3.0 vs. real latest 2.2.2). install.sh therefore queries /versions/&lt;slug&gt;?limit=1 first and only falls back to the cache — with a loud warning — when that call fails. If you write your own logic, use items[0].version, never the cached field.
  7. A Hub's download endpoint may serve a version other than the one requested (observed: requested v2.2.2, received the v1.3.0 package). Before replacing anything, install.sh compares the version declared in the package's SKILL.md and records the actual value with a warning. It warns rather than fails, because some packages legitimately ship an un-bumped SKILL.md. When you need an exact version, pass it explicitly and check the output.

Version

Currently v1.2.0. Full history: CHANGELOG.md.

常见问题

5 问
答案由本站依据条目字段整理
skill-hub-query怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_2a52e6b3/skill-hub-query。安装方式为未标注。装完刷新技能列表或重开客户端。

skill-hub-query支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

skill-hub-query权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

skill-hub-query收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

skill-hub-query用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。