@agentskit/templates — for agents
Authoring toolkit — validated factories + secure on-disk scaffolds for custom tools, skills, adapters, memory, embedders, and flows.
#Purpose
Generate AgentsKit extensions as standalone packages with consistent blueprints
(tsup, vitest, TypeScript) and runtime validation. Depends only on
@agentskit/core. This is a programmatic authoring toolkit — it is not
what agentskit init uses under the hood (the CLI has separate app templates).
#Install
npm install @agentskit/templates @agentskit/core#Primary exports
createToolTemplate(config)— build a validatedToolDefinition.createSkillTemplate(config)— build a validatedSkillDefinition(optionalmetadatapassthrough).createAdapterTemplate(config)— build anAdapterFactorywith displaynameand optionalcapabilities.scaffold(config)— write a full package directory (async), atomic + collision-safe.validateScaffoldConfig(config)— runtime config validation (ConfigError/AK_CONFIG_INVALID).validateToolTemplate/validateSkillTemplate/validateAdapterTemplate— assert well-formed definitions.SCAFFOLD_TYPES— the eight allowed scaffold type strings.- Types:
ToolTemplateConfig,SkillTemplateConfig,AdapterTemplateConfig,ScaffoldType,ScaffoldConfig.
#Scaffold types
tool · skill · adapter · memory-vector · memory-chat · flow · embedder · browser-adapter
#Minimal example
import { createToolTemplate, scaffold } from '@agentskit/templates'
export const rollDice = createToolTemplate({
name: 'roll_dice',
description: 'Roll an N-sided die once.',
schema: {
type: 'object',
properties: { sides: { type: 'number', minimum: 2 } },
required: ['sides'],
},
async execute(args) {
const sides = Number(args.sides)
return String(1 + Math.floor(Math.random() * sides))
},
})
await scaffold({
type: 'tool',
name: 'roll-dice',
dir: './packages',
description: 'Dice tool package',
})Validation throws ConfigError (AK_CONFIG_INVALID) if required fields
fail: trim-non-empty name/description/systemPrompt, function
execute/createSource, JSON Schema object (not null/array; type optional),
finite temperature when set.
#Scaffold security
- Validate config before any write.
- Unscoped kebab-case names only (no
@scope/pkgyet — documented beta restriction). - Existing destination fails unless
overwrite: true. - Symlink destination roots rejected; staging sibling + atomic rename; cleanup on failure.
- Returned paths are final destinations, never staging paths.
- Generated deps:
@agentskit/core ^1.0.0; flow also@agentskit/runtime ^0.10.0. No wildcards.
#Common patterns
- Tool:
createToolTemplateenforces JSON Schema arguments and asyncexecute. - Skill: requires
name,description,systemPrompt; optionalmetadata,examples,tools,delegates,onActivate. - Adapter: requires
name+createSource; optionalcapabilities. - Scaffold: programmatic package generation — distinct from
agentskit init.
#Related
- @agentskit/core —
ToolDefinition,SkillDefinition,AdapterFactorycontracts. - @agentskit/tools — built-in tools you can pattern-match against.
- @agentskit/skills — built-in skills as reference.
- @agentskit/cli —
agentskit initfor full app bootstraps (separate from this package).
#Source
- npm: https://www.npmjs.com/package/@agentskit/templates
- repo: https://github.com/AgentsKit-io/agentskit/tree/main/packages/templates
Explore nearby
- PeerFor agents — overview
Dense, LLM-friendly reference for every AgentsKit package. Designed to paste into an agent's context window.
- Peer@agentskit/core — for agents
Zero-dependency foundation. Contracts, chat controller, primitives, and a dozen feature subpaths.
- Peer@agentskit/adapters — for agents
Provider adapters (OpenAI-compatible + native) + router + ensemble + fallback + generic factory.