{"$schema":"http://json-schema.org/draft-07/schema#","$id":"urn:toolnest:agent-catalog:v1","title":"KitNelo Agent & Skill catalog v1","description":"Machine-readable structure. Run validateAgentCatalog for public-link validation, cross-resource uniqueness, source counts, date chronology and editorial installation-command checks.","type":"object","additionalProperties":false,"required":["schemaVersion","generatedAt","sources","resources"],"properties":{"schemaVersion":{"const":1},"generatedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z)?$"},"sources":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","name","url","type","status","lastAttemptAt","lastSuccessAt","revision","resourceCount","truncated","note"],"properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:/@-]{0,239}$"},"name":{"type":"string","minLength":1,"maxLength":240,"pattern":"[^\\s]"},"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"},"type":{"type":"string","enum":["github-skills","mcp-registry","editorial"]},"status":{"type":"string","enum":["ok","partial","failed","not-checked"]},"lastAttemptAt":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z)?$"}]},"lastSuccessAt":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z)?$"}]},"revision":{"anyOf":[{"type":"null"},{"type":"string","minLength":1,"maxLength":240,"pattern":"[^\\s]"}]},"resourceCount":{"type":"integer","minimum":0},"truncated":{"type":"boolean"},"note":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"}}},"termsUrl":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"}}},"minItems":0,"maxItems":500},"resources":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","slug","kind","name","title","summary","publisher","industries","roles","tasks","platforms","tags","languages","access","difficulty","lifecycle","authentication","pricing","license","permissions","prerequisites","steps","example","limitations","actions","provenance"],"properties":{"id":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:/@-]{0,239}$"},"slug":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"kind":{"type":"string","enum":["agent","skill","mcp","app","framework"]},"name":{"type":"string","minLength":1,"maxLength":240,"pattern":"[^\\s]"},"title":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":240,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":240,"pattern":"[^\\s]"}}},"summary":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"}}},"publisher":{"type":"string","minLength":1,"maxLength":240,"pattern":"[^\\s]"},"industries":{"type":"array","items":{"type":"string","enum":["general","technology","finance","commerce","marketing","media","education","healthcare","legal","manufacturing","logistics","real-estate","construction","hospitality","tourism","agriculture","energy","government","nonprofit","research","hr-services","consulting"]},"minItems":1,"maxItems":50,"uniqueItems":true},"roles":{"type":"array","items":{"type":"string","enum":["office","operations","marketer","sales","customer-support","hr","recruiter","accountant","finance-analyst","legal-counsel","product-manager","project-manager","developer","data-analyst","designer","writer","translator","researcher","teacher","student","health-worker","engineer","logistics-manager","store-owner","entrepreneur","executive","procurement","compliance","consultant","content-creator","real-estate-agent","administrator"]},"minItems":1,"maxItems":50,"uniqueItems":true},"tasks":{"type":"array","items":{"type":"string","enum":["writing","presentations","documents","spreadsheets","data-analysis","coding","debugging","code-review","research","search","email","meetings","scheduling","customer-service","sales","crm","marketing","content","design","images","video","audio","translation","automation","knowledge","recruiting","finance","legal","compliance","procurement","logistics","education","health","reporting","project-management","web-browsing","file-management","database","security"]},"minItems":1,"maxItems":50,"uniqueItems":true},"platforms":{"type":"array","items":{"type":"string","enum":["web","claude","claude-code","claude-cowork","codex","cursor","chatgpt","gemini","google-workspace","microsoft365","github","slack","notion","mcp","python","nodejs","docker","local","windows","macos","linux","api"]},"minItems":1,"maxItems":50,"uniqueItems":true},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120,"pattern":"[^\\s]"},"minItems":0,"maxItems":50,"uniqueItems":true},"languages":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"pattern":"[^\\s]"},"minItems":1,"maxItems":30,"uniqueItems":true},"access":{"type":"string","enum":["web","client","developer"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"lifecycle":{"type":"string","enum":["active","archived","unverified"]},"authentication":{"type":"string","enum":["none","account","api-key","service-credentials","unknown"]},"pricing":{"type":"object","additionalProperties":false,"required":["model","note"],"properties":{"model":{"type":"string","enum":["free","freemium","paid","usage-based","unknown"]},"note":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"}}},"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"}}},"license":{"type":"object","additionalProperties":false,"required":["spdx","note"],"properties":{"spdx":{"anyOf":[{"type":"null"},{"type":"string","minLength":1,"maxLength":120,"pattern":"[^\\s]"}]},"note":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"}}},"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"}}},"permissions":{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"[^\\s]"},"minItems":0,"maxItems":30,"uniqueItems":true},"prerequisites":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"}}},"minItems":0,"maxItems":30},"steps":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"}}},"minItems":1,"maxItems":30},"example":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"}}},"limitations":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":2000,"pattern":"[^\\s]"}}},"minItems":1,"maxItems":30},"actions":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["kind","label","url"],"properties":{"kind":{"type":"string","enum":["open","docs","source"]},"label":{"type":"object","additionalProperties":false,"required":["zh","en"],"properties":{"zh":{"type":"string","minLength":1,"maxLength":160,"pattern":"[^\\s]"},"en":{"type":"string","minLength":1,"maxLength":160,"pattern":"[^\\s]"}}},"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"}}},"minItems":1,"maxItems":8},"install":{"type":"object","additionalProperties":false,"required":["command","platform","sourceUrl"],"properties":{"command":{"type":"string","minLength":1,"maxLength":3000,"pattern":"[^\\s]"},"platform":{"type":"string","minLength":1,"maxLength":120,"pattern":"[^\\s]"},"sourceUrl":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"}}},"provenance":{"type":"object","additionalProperties":false,"required":["sourceId","sourceUrl","revision","metadataCheckedAt","upstreamUpdatedAt","review"],"properties":{"sourceId":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9._:/@-]{0,239}$"},"sourceUrl":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"},"revision":{"anyOf":[{"type":"null"},{"type":"string","minLength":1,"maxLength":240,"pattern":"[^\\s]"}]},"metadataCheckedAt":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z)?$"}]},"upstreamUpdatedAt":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?Z)?$"}]},"review":{"type":"string","enum":["curated","imported"]}}}}},"minItems":0,"maxItems":20000}}}
