mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-23 02:34:21 +01:00
docs: add custom tools section to plugins documentation
This commit is contained in:
@@ -103,3 +103,37 @@ export const EnvProtection = async ({ project, client, $, directory, worktree })
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Custom tools
|
||||
|
||||
Create custom tools that opencode can use:
|
||||
|
||||
```ts title=".opencode/plugin/custom-tools.ts"
|
||||
import type { Plugin, tool } from "@opencode-ai/plugin"
|
||||
|
||||
export const CustomToolsPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
tool: {
|
||||
mytool: tool((zod) => ({
|
||||
description: "This is a custom tool",
|
||||
args: {
|
||||
foo: zod.string(),
|
||||
},
|
||||
async execute(args, ctx) {
|
||||
return `Hello ${args.foo}!`
|
||||
},
|
||||
})),
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The `tool` helper creates a custom tool that opencode can call. It takes a Zod schema function and returns a tool definition with:
|
||||
|
||||
- `description`: What the tool does
|
||||
- `args`: Zod schema for the tool's arguments
|
||||
- `execute`: Function that runs when the tool is called
|
||||
|
||||
Your custom tools will be available to opencode alongside built-in tools.
|
||||
|
||||
Reference in New Issue
Block a user