Skip to content
lqdflying edited this page Aug 18, 2026 · 7 revisions

Agent Skills

ChatHub skills are globally installed SKILL.md instruction bundles. Open Settings -> Skills to install, edit, or remove them. On desktop, select a skill from the left panel to see its description and source. On mobile, open Skills from the Settings menu and tap an installed skill to open its details. Internal content hashes are not shown in either layout.

Skills are enabled by default. Operators can hide the Skills settings and ChatInput picker with:

FEATURE_FLAGS="-skills"

Disabling the interface does not remove installed skills. Re-enable the flag to restore those controls. Hiding the Skills UI is unrelated to background conversation generation: activated skills still load on the server worker. See Background Conversation Generation.

Install a skill

Select Install skill, then choose one of these sources:

  • Local file uploads a .skill package from your laptop. Packages exported by Claude are supported when they contain either SKILL.md at the archive root or <skill-name>/SKILL.md. The archive can be up to 30 MiB and contain up to 1024 files; SKILL.md itself is limited to 128 KiB.
  • URL accepts an HTTPS URL to a raw Markdown file, a GitHub repository/blob/tree URL, or a configured registry result. GitHub repository and directory links are resolved to SKILL.md automatically. The server does not follow redirects, rejects URLs with credentials, performs SSRF-safe fetching, and limits the document to 128 KiB.

Local packages currently import only the instructions in SKILL.md. Bundled scripts, references, assets, and other files are skipped, and ChatHub shows a warning with the number of skipped files after installation. Skills that depend on those files may not work as intended; use an instruction-only package or move the required information into SKILL.md.

The document needs YAML frontmatter with a valid lowercase identifier, a description, and a non-empty Markdown body:

---
name: concise-skill-name
description: One sentence describing when to use it.
---
Instructions for the model...

The installed record keeps an internal SHA-256 content hash. Reinstalling the same identifier replaces its metadata and body. Uninstall removes the user's copy and any pending composer selection for it.

If SKILLS_INDEX_URL is set on the server, entering at least two search characters also searches that JSON registry. A registry can be an array or an object with skills, items, or results, and each result must provide an identifier, description, and HTTPS source (or GitHub repository/path/ref). Registry results are metadata-only until installed. Installation is rejected if the downloaded document's frontmatter name does not match the registry identifier.

Installing byte-identical content under a second identifier is rejected with a clear conflict message. Source documents that are malformed, unavailable, or larger than 128 KiB are also reported as actionable install errors.

Edit a skill

Select an installed skill and use the pencil button. The identifier is fixed, while the description and Markdown instructions can be edited. Saving validates the same format and size limits used during installation, preserves the original source information, and refreshes the installed list.

Enable and activate

An installed skill is not automatically active. Use the Sparkles button in the topic composer and check the globally installed skills that conversation should use. The same picker is available in desktop, mobile, single-assistant, and group chats.

Selections stay with that session, topic, and thread across messages and in-app navigation until manually unchecked. They reset after a browser reload or account change. Uninstalling a skill also removes it from saved in-memory selections.

Skill names are not slash commands. Input such as /reviewer is sent as normal message text and does not activate the skill. Other editor slash actions remain available.

ChatHub resolves at most the first 16 distinct, checked skill activations in a turn. Additional selections are ignored in their existing order instead of failing the whole message.

Only checked skills load their full body. Unchecked skills are not disclosed to the model and cannot be activated by a hidden loader. Older conversations may still display compact historical loader rows, but those rows cannot activate a skill.

Troubleshooting

  • A skill missing from the picker is either not installed, still loading, or hidden because the Skills feature flag is disabled.
  • A .skill upload error can indicate an invalid ZIP package, an unsafe archive path, a missing or duplicate SKILL.md, a folder/frontmatter name mismatch, invalid UTF-8, or an archive or instruction file over its limit.
  • A URL install error can indicate a non-HTTPS source, a redirect, a private network target, oversized content, invalid frontmatter, or a registry/name mismatch.
  • Registry search is disabled when SKILLS_INDEX_URL is unset. The registry endpoint must return JSON over HTTPS.

Clone this wiki locally