@zagents/vertical-base
v0.1.1
Published
Shared contract for @zagents/vertical-* packs — VerticalPack interface, manifest schema, template-files protocol
Downloads
293
Readme
@zagents/vertical-base
Shared contract for @zagents/vertical-* packs — the type-only / runtime-helper module that every standalone vertical pack consumes so the generator can load them uniformly.
What it is
Per ADR-013, vertical packs (trading, legal, research, …) are published as standalone npm packages so each can be owned by a domain expert without touching create-agent-gemini. This module is the contract those packs implement.
@zagents/vertical-base <- shared contract (this package)
↑
├── @zagents/vertical-trading <- standalone pack, ships independently
├── @zagents/vertical-legal <- standalone pack
├── @zagents/vertical-research <- standalone pack
└── ... <- third-party packs implement the same interfaceWhat's exported
| Export | Purpose |
|---|---|
| VerticalPack (type) | Top-level interface each pack default-exports |
| VerticalManifest (type) | Single template's manifest shape (vars, files, agents, skills, commands, …) |
| TemplateVar / TemplateFileEntry | Building blocks for manifests |
| loadVerticalPack(modulePath) | Runtime loader the CLI uses to ingest external packs |
| validateManifest(m) | Pre-publish + load-time sanity check |
Authoring a new vertical pack
// my-pack/src/index.ts
import type { VerticalPack } from '@zagents/vertical-base';
const pack: VerticalPack = {
id: 'my-vertical',
displayName: 'My Custom Vertical',
templates: [
{
id: 'my-template',
vars: [{ name: 'name', prompt: 'Gemini name', default: 'my-bot' }],
files: [
{ src: 'templates/CLAUDE.md', dst: 'CLAUDE.md', render: true },
],
agents: [ /* ... */ ],
skills: [ /* ... */ ],
commands: [ /* ... */ ],
},
],
};
export default pack;Then publish as @your-scope/vertical-my-vertical and users can load it:
npx create-agent-gemini my-bot --vertical @your-scope/vertical-my-verticalWhy a separate package?
- Independent ownership — domain experts publish without PRing the generator
- Independent cadence — a vertical can bump without touching the kernel
- Cleaner attack surface — the generator never executes pack code at scaffold time; it only reads manifests
- Lock-step versioning — packs declare
peerDependencieson@zagents/vertical-baseso breaking-shape changes are visible at install time
See also
- ADR-013 — Vertical packs publishing
@zagents/vertical-trading— reference implementationcreate-agent-gemini— consumer
License
MIT
