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

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 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 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.

// 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 – 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 – 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 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:


# 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
  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 content under the pack's namespace

Versioning is handled through the semantic version tags declared in 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 entry lists a parent directory that contains multiple skill subdirectories. Claude Code loads each 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 to enumerate available plugin packs, eliminating the need for manual file downloads.
  • Standardized structure: Each skill requires a 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 under the pack namespace.

Frequently Asked Questions

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

The .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 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. When installed, Claude Code loads each subdirectory's 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 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.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →