spm.yaml Specification
The structural configuration manifest declaring package meta info, runtime systems, dependencies, and strict semantic input/output contracts.
The Manifest Manifest
Every skill package has an spm.yaml manifest at its root directory. This manifest serves two critical operations:
- CLI Packing: Identifies the package name, version, entry target, and execution runtime rules for publishing.
- LLM Tool-Calling binding: Declares the semantic description and parameters schema that LLM agents use to parse tool payloads.
Production YAML Example
Here is a production-grade spm.yaml specification for a skill package designed to query weather reports:
Parameter Key Reference
Indicates the SPM package spec framework compiler version. Use "1.0".
The publisher scope (e.g. organization name or username). Keeps your packages organized and prevents name conflicts.
The specific kebab-case identifier of your skill (e.g., "report-fetcher"). Combine with the namespace to form the unique identifier (e.g., "@weather/report-fetcher").
A highly descriptive semantic sentence explaining precisely what capabilities this skill delivers. CRITICAL: This parameter is injected directly into LLM prompt tool lists so models understand when and why to invoke this package.
Relative path mapping the direct compiled executable script entry points (e.g. "./dist/index.js").
The target execution layer required to sandbox this skill. Supported runtimes are: "node", "python", or "docker".
Strict standard JSON Schema objects detailing parameter constraints, properties, typings, default properties, and requirements. Guarantees safety and tool precision.