Skip to content

Manifest Reference

The pack.yml fields that define a vertical agent app.

Every pack requires a pack.yml at its root. This file declares what the pack provides and how the core should load it.

name: notes
version: 1.0.0
display_name: Notes Companion
description: Daily journaling and reflection companion
provided_skills:
- onboarding
- aggregator
- daily-note
name: english
version: 1.0.0
display_name: English Coach
description: Listening, speaking, reading, writing & vocabulary training
requires_core: ">=0.1.0"
# Skills this pack provides (must match skills/ subdirectories)
provided_skills:
- onboarding
- aggregator
- shadowing
- dictation
- freetalk
- vocab-review
# Fast-path routing (deterministic UI, no LLM cost)
fast_paths:
menu: ./menu.json
i18n: ./i18n/zh-CN.json
# Database schema (one DB per pack, isolated)
schema:
file: ./schema.sql
owned_tables:
- samples
- vocabulary
- daily_plan
# Persist data contract — enforced on every persist() call
persist_contract:
skill_type_prefix: "english."
required_fields:
- skill_type
- session_id
- response
optional_fields:
- subcap_scores
- errors
- metadata
subcap_keys:
- listening.gist
- listening.detail
- vocab.recall
# Cron jobs registered on pack load
cron_defaults:
- id: morning-reading
schedule: "0 8 * * *"
skill: daily-article
enabled_by_default: false
# Custom tools (optional, must export ToolDefinition)
custom_tools:
- name: pronAssess
path: tools/pronAssess.ts
# Declared capabilities for review and future install prompts
permissions:
files: []
network:
- "https://api.example.com"
platforms:
- telegram
cron: true
external_commands: []
# Runtime requirements
runtime:
js:
tools: true
external_tools: []
FieldTypeRequiredDescription
namestringPack identifier. Must be lowercase, alphanumeric + hyphens. Used as DB name and directory name.
versionstringSemver version of the pack.
display_namestringHuman-readable name shown in menus and UI.
descriptionstringOne-line description.
requires_corestringSemver range for core compatibility, e.g. ">=0.1.0".
depends_onstring[]Other packs that must be installed. v0.1: not enforced at runtime.

Array of skill directory names. Each must have a corresponding skills/<name>/SKILL.md.

Two skills are mandatory for every pack:

  • onboarding — Initial diagnostic, run when the pack is first enabled
  • aggregator — Periodic profile synthesis, run by cron or on demand
FieldDescription
menuPath to menu.json — deterministic UI navigation, zero LLM cost
i18nPath to translation JSON — template strings for the pack’s language
FieldDescription
filePath to schema.sql — run on pack’s isolated SQLite DB
owned_tablesTables this pack creates and owns. Core enforces that only this pack accesses them.

Defines validation rules for the persist tool when called from this pack’s skills.

FieldDescription
skill_type_prefixAll skill_type values must start with this (e.g. "english.")
required_fieldsFields that must be present on every persist() call
optional_fieldsAdditional allowed fields
subcap_keysValid keys for structured sub-capability scoring

Array of cron job definitions:

FieldDescription
idUnique job identifier within the pack
scheduleCron expression (e.g. "0 8 * * *") or interval (e.g. "every 2h")
skillSkill to invoke when the job fires
enabled_by_defaultWhether the job is active on install

Array of pack-specific tool registrations:

FieldDescription
nameTool name exposed to the LLM
pathRelative path to TypeScript file exporting a ToolDefinition

Declared capabilities for review, validation, and future install prompts.

FieldDescription
filesFile paths the pack needs to access
networkNetwork origins or services the pack needs
platformsPlatform accounts/channels the pack integrates with
cronWhether the pack registers scheduled jobs
external_commandsExternal command names requested through the future external-tool protocol

Runtime requirements. MVP treats JS/TS tools as first-class. Python and other languages should be declared later through external_tools with explicit command, JSON input/output, dependency checks, permissions, and sandbox policy.