Manifest Specification
The bpm.json file defines your package metadata, compatibility, and behavior.
{
"name": "my-package",
"version": "1.0.0",
"type": "convention",
"description": "A short description of what this package does",
"entry": "SKILL.md",
"scope": "session",
"token_cost": 2400,
"keywords": ["workflow", "productivity"],
"author": {
"name": "Your Name",
"github": "your-username"
},
"license": "Apache-2.0",
"repository": "https://github.com/you/your-package",
"agents": ["goose", "claude-code", "codex", "cursor"],
"dependencies": [],
"conflicts": [],
"peers": []
}namestringrequiredThe package name. Must be lowercase, alphanumeric with hyphens. Unique across the registry. First-come-first-served.
versionstringrequiredSemantic version (semver). Used for version resolution and update detection.
typeenumrequiredDetermines how the package integrates with the agent.
conventionBehavioral rules that shape how the agent acts. Loaded into context as markdown. Changes posture, not capability.
e.g., learning-modeextensionMCP server providing callable tools. Registered in the agent's runtime and invoked during sessions.
e.g., timbretemplateScaffolding for new projects. Copied into the user's workspace and customized. Not loaded into agent context.
e.g., production-agent-workflowmeasurementInstruments that track agent or user behavior. Typically an extension paired with a convention for analysis and reporting.
e.g., rp-whydescriptionstringrequiredA concise description shown in search results and package cards. Keep under 120 characters.
entrystringrequiredRelative path to the main content file. For conventions, this is typically a markdown file (e.g., SKILL.md). For extensions, the server entry point.
scopeenumWhen the package should be active. Defaults to "session".
globalAlways loaded regardless of project or session. Use for identity, core boundaries, and safety constraints.
projectLoaded when working in this project. Use for team conventions, project-specific workflows, and shared norms.
sessionLoaded only when explicitly activated. Use for behavioral modes that shift agent posture on demand.
pathLoaded when tools touch specific directories. Use for module-specific conventions within a monorepo.
token_costnumberApproximate tokens consumed when loaded into agent context. Helps users budget their context window. Conventions and extensions that inject text should include this.
keywordsstring[]Tags for search and discovery. Up to 10 keywords.
authorobjectrequiredObject with "name" (display name) and "github" (GitHub username). Must match your registry login to publish.
licensestringSPDX license identifier. Defaults to Apache-2.0 if omitted.
repositorystringURL to the source repository. Displayed on the package detail page and used by the CLI for installation.
agentsstring[]requiredList of compatible agents. Valid values: "goose", "claude-code", "codex", "cursor". Determines which agents can use this package.
dependenciesstring[]List of other bpm package names required for this package to work. Installed automatically.
conflictsstring[]List of package names that contradict this package's behavior. bpm warns if conflicting packages are both installed.
peersstring[]List of package names that enhance this package (optional, not required). Shown as recommendations on the package detail page.