Skip to main content

Skill, Specialist, and MCP formats

Skills, Specialists and Connector templates have different package boundaries. This reference centralizes their fields and import budgets. Limits and validation rules are source-verified; importing a particular archive must still be checked in its preview before treating it as installed.

Skill document and resources

A Skill root contains SKILL.md; references and scripts live below the same package root. Its metadata block is YAML followed by Markdown instructions.

Example A minimal SKILL.md document

---
name: public-data-audit
description: Audit an attached public dataset before descriptive analysis.
---

# Public data audit

Read the supplied input, retain its source and checksum, and report
missingness, units and validation limits before creating derived files.

The parser separates name and description from other metadata, normalizes line endings and keeps scalar metadata values as strings. Check the import/editor validation result before publishing the package.

Package elementUseBoundary
nameStable invocation identityKeep it consistent with references to the package
descriptionWhen the agent should select the SkillDoes not execute anything by itself
Markdown bodyInstructions loaded on invocationA supported instruction is not evidence that its external dependency exists
Relative resourcesScripts, templates, references and dataKeep referenced paths inside the package structure
.source.json, .specialist-package.json at rootApp-owned metadataExcluded from the user-authored package budget; do not invent or repurpose these files

Skill import budgets

LimitValue
Files in one Skill16,384
Individual decompressed file50 MiB
Total decompressed Skill128 MiB
Aggregate raw SKILL.md content in one preview response4 MiB
Directory nesting8 levels
GitHub requests per import512
Nested compressed Skill archive64 MiB
Outer uploaded bundle256 MiB
Skills per bundle256
Outer bundle entries32,768

Budgets apply at different levels. A bundle below its outer limit can still contain a Skill that exceeds an inner limit. Review each candidate's diagnostics; do not interpret partial import as every candidate succeeding. Personal-editor reference-file counts reserve one package entry for SKILL.md.

Skill parser, shared import limits.

Specialist package

A portable Specialist package contains manifest.json and specialist.json. Bundled Skill resources use skills/<skill-name>/<file>, with SKILL.md in each Skill root. Its frontmatter name must match that directory name.

File / fieldContract
manifest.json → schema_version1
idPackage identity; contribution IDs use lowercase letters/digits/hyphens and avoid reserved os- / mcp- prefixes
versionSemantic version
exported_with_app_versionExporting application version
specialist.json → nameStable Specialist profile name
display_nameOptional presentation name
descriptionRole description
system_promptSpecialist instructions; snake_case at the package boundary
skill_idsArray of nonempty Skill names without duplicates
connector_idsArray of nonempty Connector names without duplicates

Unknown or forbidden fields are rejected. In-memory payloads use camelCase (systemPrompt, skillIds, connectorIds), which must not be confused with the portable JSON field spelling. Portable Connector names can resolve to machine-local IDs on import; package references do not carry machine credentials.

Specialist archive limitValue
Compressed size50 MiB
Uncompressed size200 MiB
File count2,000
Individual file25 MiB
Compression ratio1,000
Path depth32

The import preview reports diagnostics, whether it is installable and each Skill disposition: install, reuse, conflict or replace. An overwrite requires explicit confirmation. A stale or expired candidate must be previewed again; do not blindly replay its token. Skill conflicts require an explicit installed/incoming choice.

Export uses an expected revision and selected included Skills. Deletion also uses a preview/revision and protects built-in, main-enabled, shared or referenced Skills. Removing one Specialist is not equivalent to deleting every Skill it can access.

Package types and archive budgets, package validation.

Connector template and MCP client export

An Open-Science Connector template is not the same JSON document as an MCP client's mcpServers configuration.

Template fieldContract
schema_version1
kindopen-science.connector
nameStable custom name, up to 64 characters, lowercase letters/digits/hyphens; unique and not a built-in reserved name
display_nameHuman-readable label
descriptionOptional explanation
transportstdio, streamable_http, or sse
command, argsLocal stdio executable and argument list
urlRemote HTTP/SSE endpoint
required_secrets.environmentNames of environment secrets for stdio; not their values
required_secrets.headersNames of HTTP header secrets; not their values
required_secrets.oauth_client_secretWhether an OAuth client secret must be supplied locally
oauthSupported registration/issuer/scopes/client/redirect metadata

Transport-specific validation applies: remote transports do not include required environment secrets; OAuth and required header secrets cannot be combined. A pre-registered OAuth client requires its authorization server; client metadata registration and explicit client ID are separate modes. Redirect/client-secret metadata requires the corresponding client ID.

Portable exports reject embedded credentials in URLs and command arguments. MCP client export uses mcpServers, command/args/env for stdio or type/url/headers for remote transport, with secret placeholders. OAuth registration and tokens are excluded from that client format, and the export reports the limitation.

Importing configuration does not install the external server, sign in to its service or establish successful tool execution. Confirm connection state and inspect advertised tools after supplying credentials through the application.

Template parser and both export formats, custom Connector identity.