Skip to content
Agent Compat

Manifest reference

Define the canonical project contract consumed by the SDK.

The manifest is a JavaScript or TypeScript object. The SDK does not parse YAML; load YAML in your application and pass the resulting object to compile().

import type { Manifest } from "@jstn-sdk/agents";

const manifest: Manifest = {
  version: 1,
  project: {
    name: "my-app",
    description: "A TypeScript service",
    stack: ["typescript", "node"],
  },
  instructions: [
    "Read docs/architecture before cross-module changes",
    "Run type checks and tests before completion",
  ],
  skills: {
    architecture-review: {
      description: "Review architecture boundaries",
      triggers: ["architecture", "refactor"],
      instructions: ["Check dependency direction"],
      tools: ["git"],
    },
  },
  workflows: {
    implementation: {
      steps: ["inspect", "plan", "implement", "validate"],
    },
  },
};

Fields

FieldRequiredPurpose
versionyesManifest schema version. Current value is 1.
projectnoProject name, description, and stack metadata.
instructionsnoPortable project instructions.
skillsnoNamed reusable skills and their instructions.
workflowsnoWorkflow metadata preserved in generated documents.
rolesnoRole metadata preserved in generated documents.
targetsnoApplication-level target metadata preserved in generated documents. It does not select compile targets.

Empty optional collections are normalized safely. Skill names must be safe directory names because adapters may write them below a target skill root.

One source of truth

Keep the manifest in your repository and treat generated files as artifacts. Changing a generated file directly will be overwritten on the next compile.

On this page