Marketplace.json Format
marketplace.json is a standardized JSON file that describes available skills in a repository. It enables the FastSkill registry to discover and display skills without scanning repository contents.
File Location
For sources to be discoverable in the registry,marketplace.json must be accessible at one of these locations (checked in priority order):
Priority 1: Claude Code Standard Location (Recommended)
- Git sources:
{repository_url}/.claude-plugin/marketplace.json(via raw content API)- Example:
https://raw.githubusercontent.com/owner/repo/main/.claude-plugin/marketplace.json
- Example:
- Zip URL sources:
{base_url}/.claude-plugin/marketplace.json- Example:
https://skills.example.com/.claude-plugin/marketplace.json
- Example:
Priority 2: Root Location (Legacy Support)
- Git sources:
{repository_url}/marketplace.json(via raw content API)- Example:
https://raw.githubusercontent.com/owner/repo/main/marketplace.json
- Example:
- Zip URL sources:
{base_url}/marketplace.json- Example:
https://skills.example.com/marketplace.json
- Example:
.claude-plugin/marketplace.json) first, then fall back to the root location if not found. This ensures compatibility with both Claude Code standard repositories and legacy setups.
Format
FastSkill uses the Claude Code standard format for marketplace.json files. This ensures compatibility with Claude Code repositories and follows the established standard.Schema
Fields
Root Object
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Repository name |
owner | object | No | Owner information |
metadata | object | No | Repository metadata |
plugins | array | Yes | Array of plugin definitions |
Owner Object
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Owner name |
email | string | No | Owner email address |
Metadata Object
| Field | Type | Required | Description |
|---|---|---|---|
description | string | No | Repository description |
version | string | No | Repository version |
Plugin Object
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Plugin name |
description | string | No | Plugin description |
source | string | No | Source path (default: ”./“) |
strict | boolean | No | Strict mode flag (default: false) |
skills | array | Yes | Array of skill paths (relative to repository root) |
Internal Processing
When FastSkill reads a marketplace.json file, it:- Parses Claude Code format directly
- Converts to internal format for processing by:
- Extracting skills from plugin
skillsarrays - Resolving skill paths relative to the repository root
- Mapping owner information to skill author fields
- Using plugin-level metadata as defaults for skills
- Constructing download URLs from base repository URL + skill path
- Extracting skills from plugin
Generating marketplace.json
Use thefastskill registry create command to generate marketplace.json in Claude Code format from a directory of skills:
--path <path>: Directory to scan for skills (default: current directory)--output <path>: Output file path (default:.claude-plugin/marketplace.json)--name <name>: Repository name (required, or inferred from directory name)--owner-name <name>: Owner name (optional)--owner-email <email>: Owner email (optional)--description <text>: Repository description (optional)--version <version>: Repository version (optional)--base-url <url>: Base URL for skill download links (optional)
.claude-plugin/marketplace.json (unless --output is specified).
Command Behavior
The command:- Scans for
SKILL.mdfiles - Reads
skill-project.tomlif present (takes priority for all fields) - Extracts metadata from
SKILL.mdYAML frontmatter as fallback - Applies field-by-field priority: skill-project.toml > SKILL.md
- Generates the marketplace.json file in Claude Code format
skill-project.toml provides metadata support (id, version, description, author, tags, capabilities, download_url). The id field is required and must not contain slashes. The name field is not used in skill-project.toml - skill names for display come from SKILL.md frontmatter only. All fields in skill-project.toml take priority over SKILL.md frontmatter.
Example
Metadata Priority
When generatingmarketplace.json, all metadata fields follow this priority order:
- skill-project.toml
[metadata]section (highest priority)- Fields:
id(required, no slashes),version(required),description,author,tags,capabilities,download_url - All fields from skill-project.toml take precedence over SKILL.md
- The
idfield is required and must not contain slashes or scope information
- Fields:
- SKILL.md frontmatter (fallback)
- Used for:
name(display only),description,author,tags,capabilities namein SKILL.md is for display purposes only, not for package identification
- Used for:
- Override specific fields in skill-project.toml while keeping others in SKILL.md
- Supplement SKILL.md metadata with additional fields in skill-project.toml
- Maintain version control separately from SKILL.md content
version = "2.0.0" but SKILL.md has version: "1.0.0", the marketplace.json will use "2.0.0". Similarly, if skill-project.toml has author = "New Author", it will override the author from SKILL.md. The name field always comes from SKILL.md frontmatter for display purposes, as it is not present in skill-project.toml.
Validation
The registry validatesmarketplace.json files:
- All required fields must be present
id,name, anddescriptionmust not be empty- Skills with invalid data are skipped
Caching
Marketplace.json files are cached for 5 minutes to reduce network requests. To force a refresh:- Wait 5 minutes for cache expiry
- Restart the server
- Clear cache manually (future feature)
Best Practices
- Keep it updated: Regenerate
marketplace.jsonwhen skills change - Use semantic versioning: Use clear version identifiers
- Include all metadata: Provide tags, capabilities, and author information
- Test accessibility: Verify the URL is accessible from your environment
- Version control: Commit
marketplace.jsonto your repository