一键导入
add-tool-module
Add a Bun-native TypeScript tool with schema, registry wiring, policy boundaries, and Bun tests.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Add a Bun-native TypeScript tool with schema, registry wiring, policy boundaries, and Bun tests.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Add a Bun-native YAML agent definition with inheritance, tool policy, and subagent references.
Add a Bun-native messaging channel adapter with lifecycle, webhook, and configuration coverage.
Add a Bun-native LLM provider entry with routing, pricing, headers, limits, and Bun tests.
Author a Bun-native Xerxes SKILL.md bundle with valid metadata, safe assets, and discovery tests.
Normalize Xerxes Apache-2.0 headers with the native Bun maintenance command and verify TypeScript sources.
Manage Apple Notes via the memo CLI on macOS (create, view, search, edit).
| name | add-tool-module |
| description | Add a Bun-native TypeScript tool with schema, registry wiring, policy boundaries, and Bun tests. |
| version | 2.0.0 |
| tags | ["tools","registry","schema","typescript","bun","xerxes"] |
| required_tools | ["ReadFile","WriteFile","FileEditTool","GlobTool"] |
Use this skill when adding an LLM-callable Xerxes tool or a native tool module.
A tool supplies a JSON-schema-compatible ToolDefinition and a typed handler
registered with ToolRegistry.
Do not use this skill for an agent YAML definition, a channel adapter, or a frontend command that has no tool-call contract.
Create a descriptive camel-case module under xerxes/src/tools/, such
as financeTools.ts. Read:
xerxes/src/executors/toolRegistry.tsxerxes/src/types/toolCalls.tsclarify.ts or mathTools.tsEvery tool definition uses the OpenAI-style native shape:
import { ToolRegistry } from '../executors/toolRegistry.js'
import type { JsonObject, ToolDefinition } from '../types/toolCalls.js'
export const MY_TOOL_DEFINITION: ToolDefinition = {
type: 'function',
function: {
name: 'my_tool',
description: 'Describe the observable operation.',
parameters: {
type: 'object',
additionalProperties: false,
properties: { input: { type: 'string' } },
required: ['input'],
},
},
}
export async function myTool(inputs: JsonObject): Promise<JsonObject> {
const input = inputs.input
if (typeof input !== 'string' || !input.trim()) {
throw new TypeError('input must be a non-empty string')
}
return { value: input.trim() }
}
export function registerMyTools(registry: ToolRegistry): void {
registry.register(MY_TOOL_DEFINITION, myTool)
}
Use JsonObject/JsonValue and validate all untrusted inputs at the boundary.
Use AbortSignal when the handler performs a cancellable asynchronous
operation. Do not swallow failures; let ToolRegistry surface a typed tool
execution error.
Export the module from xerxes/src/tools/index.ts. Add its registration
to registerCoreTools() only when it belongs to the baseline runtime surface.
Otherwise keep it opt-in behind an explicit option or host port.
Tools that access a browser, operating system, credential, remote service, or hardware must receive an explicit native port. Do not automatically discover a credential, start a child process, or report success when the port is absent.
additionalProperties: false unless arbitrary extension fields are part
of the documented protocol.WorkspacePathResolver or the equivalent
native path-safety boundary.Create or extend a focused file in xerxes/test/. Test schema
validation through ToolRegistry.execute(), the happy path, an invalid input,
and failure/cancellation behavior for external or asynchronous work.
bun test xerxes/test/<matching-tool>.test.ts
bun run --cwd xerxes check
Use injected ports, temporary directories, and deterministic fake fetchers; never call a live service from the normal test suite.
ToolRegistry picks an agent-specific registration before the default one;
add an agent ID only when that distinction is intentional.