# What Are Skills in the Context Hub Ecosystem? A Complete Technical Guide

> Discover how skills in the Context Hub ecosystem act as behavioral instructions for LLMs and automation agents. Learn to implement specific tasks with this technical guide.

- Repository: [Andrew Ng/context-hub](https://github.com/andrewyng/context-hub)
- Tags: deep-dive
- Published: 2026-03-20

---

**Skills in Context Hub are behavioral instructions—concise, actionable guides that teach LLMs and automation agents how to perform specific tasks, stored as [`SKILL.md`](https://github.com/andrewyng/context-hub/blob/main/SKILL.md) files and fetched via the CLI.**

Context Hub is an open-source knowledge management system created by Andrew Ng's team. Within this ecosystem, **skills** represent a fundamental content type distinct from traditional documentation, designed specifically for agentic workflows and reusable automation patterns.

## Understanding Skills vs. Documentation in Context Hub

The architectural foundation of Context Hub establishes a strict separation between **documentation** (information-heavy "what to know") and **skills** (actionable "how to do it"). According to the design specification in [`docs/design.md`](https://github.com/andrewyng/context-hub/blob/main/docs/design.md), this distinction is a core architectural decision that shapes how content is organized and consumed【1†L9-L11】.

While documentation entries explain concepts, APIs, and reference material, skills provide **behavioral instructions**—step-by-step guidance for coding patterns, deployment playbooks, API integration workflows, or troubleshooting procedures. This separation allows agents to quickly identify executable knowledge versus background information.

## Technical Structure and Format Specifications

A Context Hub skill follows a standardized file format designed for portability and quick parsing by agentic systems.

### The SKILL.md File Format

Each skill resides in a [`SKILL.md`](https://github.com/andrewyng/context-hub/blob/main/SKILL.md) file containing YAML front-matter followed by the instructional body. The front-matter includes:

- `name`: The skill identifier
- `description`: A brief summary of the skill's purpose
- `metadata`: Optional additional configuration

Unlike documentation entries, skills are **language-agnostic by design**. The registry does not require `languages[]` or `versions[]` nesting for skill entries, as documented in the design rationale【1†L59-L61】.

### Size and Storage Constraints

Skills are intentionally small entry points—typically **fewer than 500 lines**—optimized for local caching and rapid retrieval. This compact size ensures that agents can load multiple skills into context without exceeding token limits, while maintaining fast fetch operations through the CLI.

## Registry Architecture and Discovery

Skills are indexed separately from documentation in the repository's [`registry.json`](https://github.com/andrewyng/context-hub/blob/main/registry.json) structure. The registry maintains a dedicated `skills[]` array that lists all available behavioral instructions【1†L44-L51】.

### Auto-Detection Logic

The CLI command `chub get <id>` employs auto-detection logic implemented in [`cli/src/commands/get.js`](https://github.com/andrewyng/context-hub/blob/main/cli/src/commands/get.js). This module checks whether a registry entry resides in the `docs[]` or `skills[]` array, then streams the appropriate file type—either [`DOC.md`](https://github.com/andrewyng/context-hub/blob/main/DOC.md) or [`SKILL.md`](https://github.com/andrewyng/context-hub/blob/main/SKILL.md)—based on the entry's classification【2†cli/src/commands/get.js】.

The registry loader in [`cli/src/lib/registry.js`](https://github.com/andrewyng/context-hub/blob/main/cli/src/lib/registry.js) provides the `skills[]` array used throughout the CLI for validation and retrieval operations.

## Installing and Managing Skills via CLI

The Context Hub CLI provides several commands for skill retrieval and local installation.

### Fetching Skills by ID

Retrieve any skill using its registry identifier:

```bash

# Retrieve the Playwright login-flows skill and display it on stdout

chub get pw-community/login-flows

```

### Installing to Agent Directories

Skills can be installed directly into agent-specific skill directories for persistent reuse:

```bash

# The -o flag points to the destination directory; --full writes all companion files

chub get pw-community/login-flows -o .claude/skills/login-flows/

```

Once installed, skills persist in locations such as `~/.claude/skills/` or `~/.cursor/skills/`, making them reusable across sessions without repeated network requests.

### Batch Operations

Fetch multiple skills in a single command:

```bash
chub get pw-community/login-flows mycompany/deploy-staging

```

### Discovery and Search

List all available skills using the search command:

```bash
chub search --type skill

```

When executed without a query parameter, the search command displays all entries in the registry, allowing users to browse both documentation and skills【2†cli/src/commands/get.js】.

## Cross-Platform Interoperability

The [`SKILL.md`](https://github.com/andrewyng/context-hub/blob/main/SKILL.md) format adheres to the **Agent Skills specification**, ensuring compatibility across multiple AI coding platforms. A skill fetched from Context Hub can be dropped directly into:

- **Claude Code** (`.claude/skills/`)
- **Cursor** (`.cursor/skills/`)
- **Vercel Skills**
- **OpenCode**

This interoperability eliminates vendor lock-in and allows teams to maintain a single source of truth for automation workflows. A real-world example of this format is available in [`content/playwright-community/skills/login-flows/SKILL.md`](https://github.com/andrewyng/context-hub/blob/main/content/playwright-community/skills/login-flows/SKILL.md), which demonstrates proper front-matter conventions and instructional structure【4†content/playwright-community/skills/login-flows/SKILL.md】.

## Authoring New Skills

Content creators should reference [`docs/content-guide.md`](https://github.com/andrewyng/context-hub/blob/main/docs/content-guide.md) for authoring guidelines. This document specifies front-matter conventions, formatting standards, and best practices for creating effective behavioral instructions【3†docs/content-guide.md】.

When the CLI processes a skill fetch request, it ignores `--lang` and `--version` flags because skills do not support language or version variants【1†L59-L61】. This simplifies the user interface for skill management while maintaining consistency with the language-agnostic philosophy.

## Summary

- **Skills are behavioral instructions** stored as [`SKILL.md`](https://github.com/andrewyng/context-hub/blob/main/SKILL.md) files, distinct from informational documentation in the Context Hub architecture.
- **Registry structure** maintains skills in a separate `skills[]` array within [`registry.json`](https://github.com/andrewyng/context-hub/blob/main/registry.json), enabling the CLI to auto-detect content type in [`cli/src/commands/get.js`](https://github.com/andrewyng/context-hub/blob/main/cli/src/commands/get.js).
- **Language-agnostic design** means skills require no language or version specification,不同于 documentation entries.
- **Local persistence** allows skills to be cached in agent-specific directories like `~/.claude/skills/` for cross-session reuse.
- **Universal compatibility** through the Agent Skills specification enables skills to work across Claude Code, Cursor, Vercel Skills, and other agentic platforms.

## Frequently Asked Questions

### How do skills differ from documentation in Context Hub?

Skills provide "how-to" behavioral instructions for performing tasks, while documentation offers "what-to-know" informational content. This distinction is implemented at the architectural level in [`docs/design.md`](https://github.com/andrewyng/context-hub/blob/main/docs/design.md), where skills are stored as [`SKILL.md`](https://github.com/andrewyng/context-hub/blob/main/SKILL.md) files and listed separately in the registry's `skills[]` array【1†L9-L11】【1†L44-L51】.

### Where are fetched skills stored locally?

Skills can be installed to agent-specific directories using the `-o` flag with `chub get`. Common locations include `~/.claude/skills/` for Claude Code and `~/.cursor/skills/` for Cursor, though any directory path is valid. Once placed in these locations, skills persist across sessions and are automatically detected by agents scanning the local filesystem.

### Can skills be filtered by programming language or version?

No. According to the design documentation in [`docs/design.md`](https://github.com/andrewyng/context-hub/blob/main/docs/design.md), the CLI ignores `--lang` and `--version` flags when handling skills because they are language-agnostic by design【1†L59-L61】. This architectural decision reflects that skills describe behavioral patterns rather than language-specific implementations.

### How does the Context Hub CLI distinguish between a skill and a document?

The auto-detection logic in [`cli/src/commands/get.js`](https://github.com/andrewyng/context-hub/blob/main/cli/src/commands/get.js) checks whether the registry entry ID exists in the `skills[]` or `docs[]` array loaded from [`registry.json`](https://github.com/andrewyng/context-hub/blob/main/registry.json) by [`cli/src/lib/registry.js`](https://github.com/andrewyng/context-hub/blob/main/cli/src/lib/registry.js). Based on this classification, the CLI streams either a [`SKILL.md`](https://github.com/andrewyng/context-hub/blob/main/SKILL.md) or [`DOC.md`](https://github.com/andrewyng/context-hub/blob/main/DOC.md) file, ensuring the correct content type is retrieved without requiring explicit user flags【2†cli/src/commands/get.js】.