JSON Schema

Field reference for listing.json files.

FieldTypeReqDescription
namestringYesDisplay name (2-100 chars)
slugstringURL identifier. Auto-generated from name if omitted
descriptionstringYesShort description (10-300 chars)
longDescriptionstringMulti-paragraph description (max 5000 chars)
typestring"skill" | "mcp-server" | "agent". Default: "skill"
categorystringYescode-review, testing, deployment, documentation, security, data-pipeline, devops, productivity, database, api, design
sourceUrlstringPublic URL to source (GitHub, npm, etc.)
sourceTypestring"github" | "npm" | "other". Default: "github"
installCmdstringCommand users run to install (max 500 chars)
compatibilitystringComma-separated tools. Default: "claude-code"
tagsstringComma-separated keywords (max 500 chars)
isFreebooleanDefault: true. Community listings are always free
pricenumberUSD, minimum $0.99 (required if isFree is false)
listingTypestring"original" | "community". Default: "original"
originalAuthorstringOriginal author name (for community listings)
originalUrlstringOriginal author URL (for community listings)
skillContentstringSKILL.md content delivered via CLI (max 100KB)
filesarrayArray of {filename, content} for multi-file skills
dependenciesarrayArray of slugs this skill depends on

Full Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Skill Shope Listing",
  "description": "Schema for publishing a skill, MCP server, or agent on Skill Shope",
  "type": "object",
  "required": ["name", "description", "category", "skillContent"],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100,
      "description": "Display name of the skill"
    },
    "slug": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      "description": "URL-friendly identifier. Auto-generated from name if omitted"
    },
    "description": {
      "type": "string",
      "minLength": 10,
      "maxLength": 300,
      "description": "Short one-line description shown in search results"
    },
    "longDescription": {
      "type": "string",
      "maxLength": 5000,
      "description": "Multi-paragraph description with features and usage details"
    },
    "type": {
      "type": "string",
      "enum": ["skill", "mcp-server", "agent"],
      "default": "skill",
      "description": "Type of listing"
    },
    "category": {
      "type": "string",
      "enum": [
        "code-review", "testing", "deployment", "documentation",
        "security", "data-pipeline", "devops", "productivity",
        "database", "api", "design"
      ],
      "description": "Primary category for browse filtering"
    },
    "sourceUrl": {
      "type": "string",
      "format": "uri",
      "description": "Optional public URL to source code or preview page (GitHub repo, npm package, etc.)"
    },
    "sourceType": {
      "type": "string",
      "enum": ["github", "npm", "other"],
      "default": "github",
      "description": "Type of source hosting"
    },
    "installCmd": {
      "type": "string",
      "maxLength": 500,
      "description": "Command users run to install (e.g., npx skillshope install my-skill)"
    },
    "compatibility": {
      "type": "string",
      "default": "claude-code",
      "description": "Comma-separated list of compatible tools (claude-code, codex, cursor)"
    },
    "tags": {
      "type": "string",
      "maxLength": 500,
      "description": "Comma-separated keywords for search"
    },
    "listingType": {
      "type": "string",
      "enum": ["original", "community"],
      "default": "original",
      "description": "original = your own skill, community = curating an existing open-source skill"
    },
    "originalAuthor": {
      "type": "string",
      "maxLength": 100,
      "description": "Name of original author (required for community listings)"
    },
    "originalUrl": {
      "type": "string",
      "format": "uri",
      "description": "URL to original author's profile or repo (for community listings)"
    },
    "isFree": {
      "type": "boolean",
      "default": true,
      "description": "Whether the skill is free or paid"
    },
    "price": {
      "type": "number",
      "minimum": 0.99,
      "description": "Price in USD (required if isFree is false)"
    },
    "skillContent": {
      "type": "string",
      "maxLength": 100000,
      "description": "The actual SKILL.md content delivered to users via CLI"
    }
  }
}