npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@openreef/schema

v0.3.0

Published

JSON Schema, TypeScript types, and validation for OpenReef formation manifests (reef.json)

Downloads

427

Readme

@openreef/schema

TypeScript types, JSON Schema, and validation for OpenReef formation manifests (reef.json).

Install

npm install @openreef/schema

Quick Start

import { validateManifest, type ReefManifest } from '@openreef/schema';

const manifest: ReefManifest = {
  reef: '1.0',
  type: 'solo',
  name: 'my-formation',
  version: '0.1.0',
  description: 'A single-agent formation',
  namespace: 'my-ns',
  agents: {
    assistant: {
      source: './agents/assistant',
      description: 'General-purpose assistant',
      model: 'claude-sonnet-4-20250514',
    },
  },
};

const result = await validateManifest(manifest);

if (result.valid) {
  console.log('Manifest is valid');
} else {
  console.error('Validation errors:', result.errors);
}

API Reference

validateManifest(data: unknown): Promise<ManifestValidationResult>

Validates an object against the reef.json JSON Schema using AJV (JSON Schema draft 2020-12). Returns all errors when validation fails.

interface ManifestValidationResult {
  valid: boolean;
  errors: string[];   // human-readable error messages, empty when valid
}

Manifest Types

The core types that describe a reef.json formation manifest.

| Type | Description | |---|---| | ReefManifest | Top-level manifest object. Required fields: reef, type, name, version, description, namespace, agents. | | Agent | Agent definition with source, description, and optional role, model, tools, and sandbox. | | AgentTools | Tool configuration. Optional allow list of permitted tool/skill names. | | AgentSandbox | Sandbox constraints: network access and filesystem access level (full, restricted, none). | | Variable | User-supplied configuration variable with type, optional default, required, and sensitive flags. | | Binding | Routes a channel to an agent slug. | | CronJob | Scheduled task: schedule (cron expression), agent slug, prompt, and optional timezone. | | Dependencies | Declares required skills (with semver ranges) and external services. | | Service | External service dependency with name, optional url, required, and description. | | ValidationConfig | Post-deploy health check flags: agent_exists, file_exists, binding_active, cron_exists, agent_responds. | | Compatibility | Platform version constraints (e.g., openclaw semver range). |

Lockfile Types

Types for reef-lock.json, which pins resolved skill dependencies.

| Type | Description | |---|---| | Lockfile | Top-level lockfile containing a skills record. | | LockfileEntry | A resolved skill: version, resolved URL, and integrity hash (sha256-{hex}). |

Formation State Types

Types representing the runtime state of a deployed formation.

| Type | Description | |---|---| | FormationState | Full snapshot of a deployed formation: agents, bindings, cron jobs, variables, file hashes, and metadata. | | AgentState | Runtime state for a single agent: id, slug, workspace, files, and optional config. | | CronJobState | Runtime state for a scheduled job. | | OpenClawBinding | Resolved binding with agentId and channel match criteria. |

Validation Issue Types

General-purpose validation result types used across the toolchain.

| Type | Description | |---|---| | ValidationResult | Result containing valid boolean and an array of issues. | | ValidationIssue | A single issue with severity (error, warning, info), code, message, and optional path. | | IssueSeverity | 'error' | 'warning' | 'info' |

JSON Schema

The raw JSON Schema for reef.json is included in the package and can be imported directly:

import schema from '@openreef/schema/reef.schema.json';

This is a JSON Schema draft 2020-12 document. You can use it with any compatible validator or for editor autocompletion by referencing it in your reef.json:

{
  "$schema": "https://openreef.dev/schema/reef.schema.json",
  "reef": "1.0",
  "..."
}

Related

  • OpenReef -- CLI toolchain for packaging and deploying multi-agent AI formations
  • Tide Registry -- Formation registry for publishing and discovering formations

License

MIT