@agentskit/templates
Kit de autoria para gerar extensões do AgentsKit: objetos ToolDefinition / SkillDefinition / AdapterFactory validados e scaffolds no disco (package.json, tsup, testes, README). Depende apenas de @agentskit/core.
Quando usar
- Você publica ferramentas, skills ou adaptadores personalizados como pacotes independentes.
- Você quer blueprints consistentes (tsup, vitest, TypeScript) entre plugins internos.
- Você precisa de validação em runtime antes de registrar um template num runtime ou marketplace.
Instalação
npm install @agentskit/templates @agentskit/core
API pública
| Exportação | Papel |
|---|---|
createToolTemplate(config) | Monta um ToolDefinition com padrões e validação |
createSkillTemplate(config) | Monta um SkillDefinition com padrões e validação |
createAdapterTemplate(config) | Monta um AdapterFactory + name de exibição |
scaffold(config) | Escreve um diretório de pacote completo (async) |
validateToolTemplate / validateSkillTemplate / validateAdapterTemplate | Garante definições bem formadas |
createToolTemplate
ToolTemplateConfig estende uma ferramenta parcial com name obrigatório e opcional description, schema, execute, tags, category, requiresConfirmation, init, dispose e merge base.
import { createToolTemplate } 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))
},
})
A validação lança se name, description, schema ou execute estiver faltando (LLMs precisam de schema + description para tool calling).
createSkillTemplate
Exige name, description e systemPrompt. Opcional: examples, tools, delegates, temperature, onActivate, base.
import { createSkillTemplate } from '@agentskit/templates'
export const researcher = createSkillTemplate({
name: 'researcher',
description: 'Gather facts before writing.',
systemPrompt: 'You are a careful researcher. Cite sources when possible.',
tools: ['web_search'],
})
createAdapterTemplate
Exige name e createSource compatível com AdapterFactory['createSource'].
import { createAdapterTemplate } from '@agentskit/templates'
export const myAdapter = createAdapterTemplate({
name: 'my-llm',
createSource: (request) => {
// return StreamSource compatible with @agentskit/core
throw new Error('Implement streaming to your backend')
},
})
scaffold
Cria um diretório join(dir, name) com:
package.json,tsconfig.json,tsup.config.tssrc/index.ts(stub)tests/index.test.tsREADME.md
import { scaffold } from '@agentskit/templates'
import { join } from 'node:path'
const files = await scaffold({
type: 'tool',
name: 'my-company-search',
dir: join(process.cwd(), 'packages'),
description: 'Internal web search tool',
})
console.log('Created:', files)
ScaffoldType é 'tool' | 'skill' | 'adapter'.
Registre pacotes gerados como qualquer outra ferramenta, skill ou adaptador via createRuntime ou useChat.
Solução de problemas
| Erro | Causa |
|---|---|
Tool requires a name | Passe name a createToolTemplate. |
requires a schema | JSON Schema é obrigatório para function calling. |
Skill ... requires a systemPrompt | Skills devem definir comportamento via systemPrompt. |
Adapter requires createSource | A fábrica deve expor createSource(request). |
Ver também
Comece aqui · Pacotes · TypeDoc (@agentskit/templates) · @agentskit/core · Ferramentas · Skills · Adaptadores