Back to Docs

Kit Schema

Kits in the registry follow a strict schema. The push command builds and validates this format automatically — you never write kit.json by hand.

Schema Version

Current version: 1

Top-Level Fields

FieldTypeRequiredDescription
idstringyesUUIDv4 — assigned on first push, preserved on updates
schemanumberyesSchema version (must be 1)
namestringyesKit name (usually repo directory name)
descriptionstringyesWhat this kit does
repoUrlstringyesGitHub URL (must start with https://github.com/)
ownerstringyesGitHub username or org
compatibilitystring[]yesDetected agent compatibility
skillsSkill[]yesSkills found in the repo
configsConfig[]yesAgent config files found
scanScanyesSecurity scan results
pushedAtstringyesISO 8601 timestamp

Skill Object

FieldTypeRequiredDescription
namestringyesSkill name (from SKILL.md frontmatter or directory name)
descriptionstringyesWhat the skill does
pathstringyesRelative path to skill directory
licensestringnoLicense from frontmatter
compatibilitystringnoAgent compatibility from frontmatter
allowedToolsstring[]noDeclared tool access

Config Object

FieldTypeRequiredDescription
filestringyesConfig file path (e.g. .cursorrules)
agentstringyesWhich agent uses this config

Scan Object

FieldTypeRequiredDescription
trustScorenumberyes0-100 trust score
blockedbooleanyesWhether blocking issues were found
summarystringyesHuman-readable summary
findingsFinding[]yesDetailed scan findings
scannedAtstringyesISO 8601 timestamp

Finding Object

FieldTypeDescription
severitystring"block" or "warn"
messagestringWhat was found
matchstringMatched text (truncated to 100 chars)

Validation

The push command validates every kit before submitting to the registry:

  • All required fields must be present and correctly typed
  • repoUrl must be a valid GitHub URL
  • trustScore must be 0-100
  • Skill paths must not reference sensitive directories
  • Kit name must not match sensitive file names
  • Blocked kits (scan.blocked = true) are rejected

Invalid kits are rejected before a PR is created.

Example

{
  "id": "06465063-6a42-410f-9240-ee3ebce78bc9",
  "schema": 1,
  "name": "gstack",
  "description": "Agent skills from gstack",
  "repoUrl": "https://github.com/garrytan/gstack",
  "owner": "garrytan",
  "compatibility": ["agent-skills", "claude-code"],
  "skills": [
    {
      "name": "review",
      "description": "Code review skill",
      "path": "review"
    }
  ],
  "configs": [
    { "file": "CLAUDE.md", "agent": "claude-code" }
  ],
  "scan": {
    "trustScore": 95,
    "blocked": false,
    "summary": "0 blocked, 1 warnings",
    "findings": [],
    "scannedAt": "2026-03-15T00:00:00.000Z"
  },
  "pushedAt": "2026-03-15T00:00:00.000Z"
}

clawclawgo