Manifest Schema

The JSON Schema that defines valid effector.toml manifests.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://effectorhq.dev/schemas/effector.schema.json",
  "title": "Effector Manifest",
  "description": "Schema for effector.toml — the Effector package manifest",
  "type": "object",
  "required": [
    "effector"
  ],
  "properties": {
    "effector": {
      "type": "object",
      "required": [
        "name",
        "version",
        "type",
        "description"
      ],
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^(@[a-z0-9-]+/)?[a-z0-9-]{2,64}$",
          "description": "Unique package name (kebab-case, optional @scope prefix)"
        },
        "version": {
          "type": "string",
          "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
          "description": "Semantic version (MAJOR.MINOR.PATCH)"
        },
        "type": {
          "type": "string",
          "enum": [
            "skill",
            "extension",
            "workflow",
            "workspace",
            "bridge",
            "prompt"
          ],
          "description": "Effector type"
        },
        "description": {
          "type": "string",
          "minLength": 10,
          "maxLength": 200,
          "description": "One-line human-readable description"
        },
        "license": {
          "type": "string",
          "description": "SPDX license identifier"
        },
        "emoji": {
          "type": "string",
          "description": "Single emoji for UI display"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 10,
          "description": "Discovery tags"
        },
        "authors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Author list"
        },
        "repository": {
          "type": "string",
          "format": "uri",
          "description": "Source repository URL"
        },
        "homepage": {
          "type": "string",
          "format": "uri",
          "description": "Project homepage URL"
        },
        "documentation": {
          "type": "string",
          "format": "uri",
          "description": "Documentation URL"
        },
        "min-spec-version": {
          "type": "string",
          "description": "Minimum Effector spec version required"
        },
        "categories": {
          "type": "object",
          "properties": {
            "primary": {
              "type": "string",
              "enum": [
                "developer-tools",
                "productivity",
                "data",
                "communication",
                "infrastructure",
                "security",
                "content",
                "research"
              ]
            },
            "secondary": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "version"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "skill",
                  "extension",
                  "workflow",
                  "workspace",
                  "bridge",
                  "prompt"
                ]
              },
              "optional": {
                "type": "boolean",
                "default": false
              },
              "registry": {
                "type": "string"
              }
            }
          }
        },
        "permissions": {
          "type": "object",
          "properties": {
            "network": {
              "type": "boolean",
              "default": false
            },
            "filesystem": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "read",
                  "write"
                ]
              }
            },
            "filesystem-paths": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "env-read": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "env-write": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "subprocess": {
              "type": "boolean",
              "default": false
            },
            "secrets": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "system": {
              "type": "boolean",
              "default": false
            }
          }
        },
        "errors": {
          "type": "object",
          "properties": {
            "retry": {
              "type": "object",
              "properties": {
                "max-attempts": {
                  "type": "integer",
                  "minimum": 1
                },
                "backoff": {
                  "type": "string",
                  "enum": [
                    "linear",
                    "exponential",
                    "fixed"
                  ]
                }
              }
            },
            "on-failure": {
              "type": "string",
              "enum": [
                "log",
                "abort",
                "fallback"
              ]
            },
            "fallback": {
              "type": "string"
            }
          }
        },
        "bridge": {
          "type": "object",
          "properties": {
            "source-runtime": {
              "type": "string"
            },
            "source-format": {
              "type": "string"
            },
            "target-runtime": {
              "type": "string"
            },
            "target-format": {
              "type": "string"
            },
            "transport": {
              "type": "string"
            }
          }
        },
        "prompt": {
          "type": "object",
          "properties": {
            "format": {
              "type": "string"
            },
            "entry": {
              "type": "string"
            },
            "variables": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "context": {
              "type": "string",
              "enum": [
                "system",
                "user",
                "assistant"
              ]
            }
          }
        },
        "interface": {
          "type": "object",
          "description": "Typed interface declaration — the core of the Effector type system",
          "properties": {
            "input": {
              "type": "string",
              "description": "Input type name from effector-types standard library"
            },
            "output": {
              "type": "string",
              "description": "Output type name from effector-types standard library"
            },
            "context": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Context type names required for execution"
            },
            "nondeterminism": {
              "type": "string",
              "enum": [
                "none",
                "low",
                "moderate",
                "high"
              ],
              "description": "Degree of output variability across invocations"
            },
            "idempotent": {
              "type": "boolean",
              "description": "Whether repeated invocations produce same side effects"
            },
            "token-budget": {
              "type": "integer",
              "minimum": 0,
              "description": "Maximum token consumption per invocation"
            },
            "latency-p50": {
              "type": "integer",
              "minimum": 0,
              "description": "Expected median latency in milliseconds"
            }
          }
        },
        "security": {
          "type": "object",
          "properties": {
            "advisory": {
              "type": "string",
              "format": "uri"
            },
            "deprecated-versions": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "runtime": {
      "type": "object",
      "description": "Runtime-specific binding configurations",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string"
          },
          "entry": {
            "type": "string"
          },
          "min-version": {
            "type": "string"
          },
          "transport": {
            "type": "string"
          }
        }
      }
    }
  }
}