# How Skills Are Bundled into Plugin Packs for Claude Code: A Complete Technical Guide

> Learn how skills bundle into plugin packs for Claude Code using the ConardLi/garden-skills repository. Discover structured SKILL.md system prompts for reusable AI capabilities.

- Repository: [ConardLi/garden-skills](https://github.com/ConardLi/garden-skills)
- Tags: deep-dive
- Published: 2026-08-28

---

**The Garden Skills repository packages reusable AI capabilities as plugin packs that Claude Code discovers through a centralized marketplace registry and installs as versioned directories containing structured [`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md) system prompts.**

The ConardLi/garden-skills project demonstrates a standardized method for distributing specialized AI skills to Claude Code users. By organizing structured system prompts into self-contained directories and declaring them in a machine-readable registry, developers can publish versioned plugin packs that users install with simple slash commands.

## The Marketplace Registry

Claude Code discovers available plugin packs through a single source of truth located at [`.claude-plugin/marketplace.json`](https://github.com/ConardLi/garden-skills/blob/main/.claude-plugin/marketplace.json) in the repository root. This JSON file enumerates every pack that the Claude Code marketplace exposes to users.

Each entry in the registry specifies:

- **name** – The unique identifier for the pack (e.g., `web-design-engineer`)
- **repo** – The GitHub repository URL hosting the pack
- **version** – A semantic version tag (e.g., `"v1.3.0"`)
- **path** – The relative directory path to the skill (e.g., `skills/web-design-engineer`)
- **description** – A human-readable summary of the skill's purpose

When a user adds the marketplace to their Claude Code environment, the client fetches this file to populate the local index of installable packages.

```json
// Example snippet from .claude-plugin/marketplace.json
{
  "packs": [
    {
      "name": "web-design-engineer",
      "repo": "https://github.com/ConardLi/garden-skills",
      "version": "v1.3.0",
      "path": "skills/web-design-engineer",
      "description": "Design / frontend skill for Claude Code"
    },
    {
      "name": "gpt-image-2",
      "repo": "https://github.com/ConardLi/garden-skills",
      "version": "v2.0.1",
      "path": "skills/gpt-image-2",
      "description": "Image generation / prompt engineering skill"
    }
  ]
}

```

## Skill Directory Structure

Each skill bundled into a plugin pack follows a strict directory convention under `skills/<skill-name>/`. The Claude Code agent expects this layout when extracting and registering a new pack.

The required components include:

- **[`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md)** – The core system prompt that Claude Code injects into the conversation context when the skill is active. This file contains the structured instructions that define the skill's behavior.
- **[`README.md`](https://github.com/ConardLi/garden-skills/blob/main/README.md)** – Documentation for the end user, explaining how to invoke the skill, providing example prompts, and detailing any specific capabilities.
- **`assets/`** (optional) – A subdirectory containing reference files, design tokens, templates, or other resources the skill may reference at runtime.

When Claude Code installs a plugin pack, it copies the entire skill directory into the agent's local plugin storage, preserving the subdirectory structure so that relative paths within [`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md) resolve correctly.

## Installing and Managing Plugin Packs

Users interact with the Garden Skills plugin packs through Claude Code's native plugin command interface. The installation flow involves two distinct steps: subscribing to the marketplace source, then selecting specific skills to install.

To add the Garden Skills marketplace and install a specific pack, run:

```bash

# Subscribe to the Garden Skills marketplace (once)

/plugin marketplace add ConardLi/garden-skills

# Install the web-design-engineer skill pack

/plugin install web-design-engineer@garden-skills

# Verify the skill is available

/plugin list

# → shows "web-design-engineer" with its SKILL.md loaded

```

Behind the scenes, Claude Code performs the following actions:

1. Contacts the GitHub repository and reads [`.claude-plugin/marketplace.json`](https://github.com/ConardLi/garden-skills/blob/main/.claude-plugin/marketplace.json)
2. Locates the entry matching the requested pack name and version
3. Downloads the repository archive for the specified version tag
4. Extracts only the files under the `path` directory defined in the registry
5. Registers the [`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md) content under the pack's namespace

**Versioning** is handled through the semantic version tags declared in [`marketplace.json`](https://github.com/ConardLi/garden-skills/blob/main/marketplace.json). Users can upgrade installed packs using `/plugin update <pack>`, which Claude Code executes by comparing the local version against the registry and replacing only changed files, preserving any user-added configuration.

## Bundling Multiple Skills Per Pack

A single plugin pack can contain multiple related skills, allowing users to install a suite of capabilities with one command. For example, the `web-video-presentation` pack bundles 23 theme-specific sub-skills.

In this configuration, the [`marketplace.json`](https://github.com/ConardLi/garden-skills/blob/main/marketplace.json) entry lists a parent directory that contains multiple skill subdirectories. Claude Code loads each [`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md) found within the pack's tree under a shared namespace, making them selectable via a common identifier while keeping their system prompts isolated.

This architecture enables maintainers to group complementary skills—such as variations of a design tool for different frameworks—without requiring separate marketplace entries for each variant.

## Summary

- **Registry-driven discovery**: Claude Code reads [`.claude-plugin/marketplace.json`](https://github.com/ConardLi/garden-skills/blob/main/.claude-plugin/marketplace.json) to enumerate available plugin packs, eliminating the need for manual file downloads.
- **Standardized structure**: Each skill requires a [`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md) system prompt and optional assets within a named directory under `skills/`, ensuring consistent installation behavior.
- **Semantic versioning**: Packs declare versions in the marketplace registry, enabling reliable updates via `/plugin update` without overwriting user configurations.
- **Multi-skin support**: A single pack can bundle multiple related skills, with Claude Code registering each subdirectory's [`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md) under the pack namespace.

## Frequently Asked Questions

### What file declares which skills are available in the Garden Skills marketplace?

The [`.claude-plugin/marketplace.json`](https://github.com/ConardLi/garden-skills/blob/main/.claude-plugin/marketplace.json) file acts as the central registry. It contains a JSON array of pack objects, each specifying the skill name, repository URL, semantic version, and the directory path where the skill files reside.

### How does Claude Code know which prompt to use when a skill is activated?

Claude Code specifically looks for a file named [`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md) within the installed skill directory. This markdown file contains the system prompt instructions that the agent injects into the conversation context, effectively defining the skill's personality and capabilities.

### Can one plugin pack contain more than one skill?

Yes. According to the ConardLi/garden-skills source code, a pack can bundle multiple sub-skills by organizing them into separate subdirectories under a common parent path listed in [`marketplace.json`](https://github.com/ConardLi/garden-skills/blob/main/marketplace.json). When installed, Claude Code loads each subdirectory's [`SKILL.md`](https://github.com/ConardLi/garden-skills/blob/main/SKILL.md) under the pack's namespace, allowing users to access multiple related skills through a single installation command.

### How does versioning work for Claude Code plugin packs in this repository?

Each entry in [`.claude-plugin/marketplace.json`](https://github.com/ConardLi/garden-skills/blob/main/.claude-plugin/marketplace.json) includes a `version` field using semantic versioning (e.g., `"v2.0.1"`). When users run `/plugin update <pack>`, Claude Code compares the installed version against the registry, downloads only the changed files for the new version tag, and preserves any user modifications to configuration files.